2016-04-03 8 views
1

yılında SHA512 karma yazdırmak için ben sha512 karma hesaplamak için aşağıdaki kodu vardır:nasıl C

#include <stdio.h> 
#include <string.h> 
#include <openssl/sha.h> 

int main() { 
    char *password = "test"; 
    char hash[SHA512_DIGEST_LENGTH]; 

    SHA512(password, strlen(password), hash); 

    return 0; 
} 

Nasıl hex hesaplanan karma yazdırmak için?

Teşekkür

+0

. Bunu yapmak için * birden fazla yolu vardır. – WhozCraig

cevap

2

Değişim hashunsigned char hash[SHA512_DIGEST_LENGTH] olmak. Ardından: karma bayt numaralandırma ve konsola heks karakter (0..9, a..f) olarak temsil damping ile

for(int i = 0; i < SHA512_DIGEST_LENGTH; ++i) { 
    printf("%02x", hash[i]); 
} 
+0

O çevrimiçi sha512 karma hesap makineleri birini kullanılan ve "test" için hex sha512 karma Sana yayınlanmıştır kodunu kullanarak çıktısını zaman göremiyorum budur ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff olduğunu. Lütfen bana neden olduğunu söyler misin? – user3266083

+0

Kötümü bekle, öyle. Her 4 bayta ffffff ekledi. Neden? – user3266083

+1

“int” olarak tanıtılacağından ve negatif değerler için işaret uzantısı aldığınızdan beri char'ları imzaladıysanız, "ffffff" değerini görebilirsiniz. Bunu düzeltmek için, önce (imzasız char) karma [i] 'gibi döküm yapın. – FatalError