Guten morgen,
kennt jemand das Projekt bearssl https://bearssl.org/?
ich habe da eine frage zum code in der datei test_crypto.c genaugenommen
zur funktion hextobin
1 | /*
|
2 | * Decode an hexadecimal string. Returned value is the number of decoded
|
3 | * bytes.
|
4 | */
|
5 | static size_t hextobin(unsigned char *dst, const char *src)
|
6 | {
|
7 | size_t num;
|
8 | unsigned acc;
|
9 | int z;
|
10 |
|
11 | num = 0;
|
12 | z = 0;
|
13 | acc = 0;
|
14 | while (*src != 0) {
|
15 | int c = *src ++;
|
16 | if (c >= '0' && c <= '9') {
|
17 | c -= '0';
|
18 | } else if (c >= 'A' && c <= 'F') {
|
19 | c -= ('A' - 10);
|
20 | } else if (c >= 'a' && c <= 'f') {
|
21 | c -= ('a' - 10);
|
22 | } else {
|
23 | continue;
|
24 | }
|
25 | if (z) {
|
26 | *dst ++ = (acc << 4) + c;
|
27 | num ++;
|
28 | } else {
|
29 | acc = c;
|
30 | }
|
31 | z = !z;
|
32 | }
|
33 | return num;
|
34 | }
|
Was genau macht/bewirkt diese Funktion? Es steht zwar drann 'decode an
hexadecimal string', aber wie?
Im beispiel wird diese Funktion z.B. wie folgt aufgerufen
[c]
len = hextobin(t1,
"45A3DC6A106BCD3BD0E48FB579643AA3FF801E5903E80AA9B43A695A8E7F454E93FA208
B69995FF7A6D5617C2FEB8E546375A664977A48931842AAE796B5A0D64393DCA35F3490F
C157F5BD83B9D58C2F7926E6AE648A2BD96CAB8FCCD3D35BB11424AD47D973FF6D69CA77
4841AEC45DFAE99CCF79893E7047FDE6CB00AA76D");
t1 ist ein char-array mit einer länge von 512.
das ergebnis von der Funktion ist:
len = 128
und t1 =
45A3DC6A106BCD3BD0E48FB579643AA3FF801E593E8AA9B43A695A8E7F454E93FA208B69
995FF7A6D5617C2FEB8E546375A664977A48931842AAE796B5A0D64393DCA35F3490FC15
7F5BD83B9D58C2F7926E6AE648A2BD96CAB8FCCD3D35BB11424AD47D973FF6D69CA77484
1AEC45DFAE99CCF79893E747FDE6CB0AA76D
Es wurden nullen entfernt. Aber nicht alle und warum? Was bewirkt diese
Funktion?
45A3DC6A106BCD3BD0E48FB579643AA3FF801E59"0"03E8"0"AA9B43A695A8E7F454E93F
A208B69995FF7A6D5617C2FEB8E546375A664977A48931842AAE796B5A0D64393DCA35F3
490FC157F5BD83B9D58C2F7926E6AE648A2BD96CAB8FCCD3D35BB11424AD47D973FF6D69
CA774841AEC45DFAE99CCF79893E7"0"47FDE6CB0"0"AA76D
Oben in Gänsefüsschen, welche Nullen entfernt wurden