C nyelv: e pár soros kód működőképessé tétele?
Nagyon szeretném, ha e pár soros kód működne.
Egy, bármilyen megadott string sha512 kimenetét szeretném megkapni, de nem hexadecimálisan, hanem decimálisan, egy tömbben. Az alábbi kód ezt valósítaná meg, csak sajnos bizonyos hibák miatt nem működik.
A fejlécben jó helyen van a "sha.h"? Alapból nekem nem találta és forráskód-telepítéssel kellett megoldani, esetleg más, beépített hash lib-et kellene használni?
Nagyon szépen köszönöm ha valaki tud segíteni.
Nem néztem meg a beépített sha függvény működését, de ide gyanakszom:
unsigned char hash - ez szerintem sztringként adja vissza a hasht, hexa formában, mert az a nemzetközi szokás.
Ebből egyszerűen tudnál egyetlen decimálist csinálni: fscanf-fel beolvasod egy 64 bites (long long int) típusba.
Ezt meg már ki tudod íratni akár egyben, akár számjegyenként.
Egyben könnyű, akkor %d, számjegyenként meg: osztod 10 hatvánnyal, és veszed a 10-zel történő maradékát, az egy számjegy.
Nagyon köszönöm a válaszodat.
Elég kezdő vagyok, tudsz ebben segíteni, miképpen nézne ki az általad említett módosítás programkódban?
Teljesen jól működik a kódod, mi a gond vele? Nem tudod lefordítani?
Milyen rendszeresen fordítasz és mivel?
Én OpenSuse alatt feltelepítettem a libopenssl-devel csomagot, és így fordítottam:
gcc test.c -lssl -lcrypto -o test
Utána futtattam, és visszaadta a "pelda" hash-ét integerenként.
"Teljesen jól működik a kódod, mi a gond vele? Nem tudod lefordítani?"
Sajnos nem, hibaüzenetet ír ki.
Raspberry Pi-re portolt legújabb Debian rendszer, GCC amivel szeretném lefordítani.
Én nem találok libopenssl-devel csomagot, kézzel töltöttem le az openssl forráskódját és így próbálom.
"-I" kapcsolóval adtam meg neki a sha.h include fájlt is, biztos ez a baj.
A hibajelzésben a sorszámok azért térhetnek el a feltöltött kódtól, mert a feltöltött változatban a kommentek és üres sorok nincsenek benne. // a sor elején, szöveges kommenteket nem tartalmazza, egyébként nincs eltérés.
hashexample.c: In function 'get_sha512_as_integers':
hashexample.c:6:22: error: 'SHA512_DIGEST_LENGTH' undeclared (first use in this function)
6 | unsigned char hash[SHA512_DIGEST_LENGTH];
| ^~~~~~~~~~~~~~~~~~~~
hashexample.c:6:22: note: each undeclared identifier is reported only once for each function it appears in
hashexample.c:9:3: warning: implicit declaration of function 'SHA512' [-Wimplicit-function-declaration]
9 | SHA512((unsigned char *)string, strlen(string), hash);
| ^~~~~~
hashexample.c: In function 'main':
hashexample.c:25:16: error: 'SHA512_DIGEST_LENGTH' undeclared (first use in this function)
25 | int integers[SHA512_DIGEST_LENGTH];
| ^~~~~~~~~~~~~~~~~~~~
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!