2013-12-12 4 views
2

В настоящее время мой код выглядит следующим образом:Как использовать crypt() на freeBSD с помощью sha512?

if (iInit == 1) 
{ 
    if (crypt_set_format("sha512") == 0) 
     return -1; 

    iInit = !iInit; 
} 

res = crypt(szPWhash, "ABCDEFGH"); 

Полученный хэш € v

I судимое уже

res = crypt(szPWhash, "$6$QX$"); 

или даже это обозначение:

res = crypt(szPWhash, "$6$QX"); 

Но Безразлично» я думаю, какую соль я выбираю Или введите введенный пароль.

Получаемый хеш каждый раз не изменяется € v.

Что не похоже на хэш sha512.

Так что я делаю неправильно?

EDIT

Я понял, что если я изменю encrypton mehtod, хэш изменения, но он держит похож не имеет значения, что я выбрать в качестве ключа и/или соли.

ответ

0

Я не знаю, о склепе, но с OpenSSL это будет выглядеть так:

SHA512_CTX * ctx = calloc(sizeof ctx,1); // or stack allocate/not as a pointer 
SHA512_Init(ctx); 
char * str = "blahblah"; 
SHA512_Update(context, str, strlen(str)); 
unsigned char hash[SHA512_DIGEST_LENGTH]; 
SHA512_Final(hash, context); 
+0

Я не люблю лицензию OpenSSL. поэтому я бы предпочел системную функцию crypt (3) freeBSD – dhein