如何在sha512上使用freeBSD上的crypt()?

时间:2013-12-12 21:18:03

标签: c freebsd crypt sha512

目前我的代码如下:

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哈希。

那么我做错了什么?

修改

我想通了,如果我改变了加密方法,那么哈希就会改变,但它保持相似并不重要我选择什么作为密钥和/或盐。

1 个答案:

答案 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);