-
Notifications
You must be signed in to change notification settings - Fork 0
/
Crypto.html
129 lines (123 loc) · 4.03 KB
/
Crypto.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="description" content="RePag-Softwaredevelopment">
<meta name="author" content="René Pagel">
<meta name="keywords" content="RePag, Softwareentwicklung, Softwaredevelopment, RePag-Software, RePag-Bibliotheken, RePag-Libraries">
<title>RePag - Cryptography</title>
<link href="RePagStyle.css" rel="stylesheet">
</head>
<body>
<header>
<Logo>RePag</Logo>
<Banner>Cryptography</Banner>
<!--<dev id="Bau">now 64bit too</dev>-->
</header>
<nav>
<div>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="Core.html">Core</a></li>
<li><a href="GUI.html">GUI</a></li>
<li><a href="https://repag.net/Memory.html">Memory</a></li>
</ul>
</div>
</nav>
<section>
<Text_n>
Das <a href="https://github.com/RePag/AES-CBC-256bit">Cryptography-Project</a> ist ein Open-Source-Project.
Die Verschlüsselung erfolgt nach dem Advanced Encryption Standard (AES). Die Schlüssellänge beträgt
256bit. Es kommt zusätzlich die Betriebsart Cipher Block Chaining zur Anwendung.
</Text_n>
<p>
<Text_n>
Es werden immer 128bit-Blöcke verschlüsselt. Sollte der letzte Block weniger Nutzdaten enthalten, wird
auch ein voller 128bit-Block verschlüsselt. Zusätzlich wird die Original-Byteanzahl in einem Header hinterlegt.
Bei Encrypt wird die Originalanzahl am Parameter ulBytes übergeben und die erweiterte Byteanzahl zurück gegeben.
Bei Decrypt wird die erweiterte Anzahl am Parameter ulBytes übergeben und die Original-Byteanzahl zurück gegeben.
Bei der Verwendung der Funktionen ist zu beachten das die AES Key-Arrays an einer 16bit Speichergrenze
ausgerichtet werden müssen. Um Speicher auf dem Stack zu reservieren:
</Text_n>
<ul>
<li>
<Text_n>
alignas(16) unsigned char auc256DecryptKey[256]; alignas(16) unsigned char auc240EncryptKey[240];
</Text_n>
</li>
</ul>
<Text_n>
oder um Speicher auf dem Heap anzufordern
</Text_n>
<ul>
<li>
<Text_n>
VMBLOCK vb256DecryptKey = VMBlockA(256, 16); VMBLOCK vb240EncryptKey = VMBlockA(240, 16);
</Text_n>
</li>
</ul>
<Text_n>
Wer ganz sicher gehen will sollte am Ende seiner Funktion den Speicher mit Nullen überschreiben.<br>
Für den Stack mit
</Text_n>
<ul>
<li>
<Text_n>
ZeroMem(auc256DecryptKey, 256); ZeroMem(auc240EncryptKey, 240);
</Text_n>
</li>
</ul>
<Text_n>
oder für den Heap mit
</Text_n>
<ul>
<li>
<Text_n>
ZeroMem(vb256DecryptKey, 256); ZeroMem(vb240EncryptKey, 240);
</Text_n>
</li>
</ul>
</p>
<Text_n>
Der Vector muss nicht an einer Speichergrenze ausgerichtet werden.
</Text_n>
</section>
<footer>
<div id="Repo">
<ul>
<li>Repository</li>
<li><a href="https://github.com/RePag-net">GitHub</a></li>
</ul>
</div>
<div id="Feed">
<ul>
<li>Package</li>
<li><a href="https://www.nuget.org/packages?q=RePag.">NuGet</a></li>
</ul>
</div>
<div id="Install-32bit">
<ul>
<li>Install 32bit</li>
<li><a href="https://repag.net/Install/RePagCore32.msi">Core</a></li>
<li><a href="https://repag.net/Install/RePagDemo32.msi">Demo</a></li>
</ul>
</div>
<div id="Install-64bit">
<ul>
<li>Install 64bit</li>
<li><a href="https://repag.net/Install/RePagCore64.msi">Core</a></li>
<li><a href="https://repag.net/Install/RePagDemo64.msi">Demo</a></li>
</ul>
</div>
<div id="SMedia">
<ul>
<li>Sozial Media</li>
<li><a href="https://www.linkedin.com/in/ren%C3%A9-pagel-repag/">LinkedIn</a></li>
</ul>
</div>
<div id="Update_Kurz">
Last Update: 18. Januar 2023
</div>
</footer>
</body>
</html>