目前我的代码如下:
if (iInit == 1)
{
if (crypt_set_format("sha512") == 0)
return -1;
iInit = !iInit;
}
res = crypt(szPWhash, "ABCDEFGH");
生成的哈希为€ v
我已经尝试了
res = crypt(szPWhash, "$6$QX$");
甚至是这种表示法:
res = crypt(szPWhash, "$6$QX");
但无论我选择哪种盐都无所谓 或者输入的密码是什么。
结果哈希每次都不变€ v
。
什么甚至看起来都不像sha512哈希。
那么我做错了什么?
修改
我想通了,如果我改变了加密方法,那么哈希就会改变,但它保持相似并不重要我选择什么作为密钥和/或盐。
答案 0 :(得分:0)
我不知道crypt,但使用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);