【问题标题】:How to use crypt() on freeBSD with sha512?如何在带有 sha512 的 freeBSD 上使用 crypt()?
【发布时间】:2013-12-31 12:14:22
【问题描述】:

目前我的代码如下所示:

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

那么我做错了什么?

编辑

我发现,如果我更改加密方法,哈希值会发生变化,但是,无论我选择什么作为密钥和/或盐,它都会保持相似。

【问题讨论】:

    标签: c freebsd crypt sha512


    【解决方案1】:

    我不知道 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);
    

    【讨论】:

    • 我不喜欢 OpenSSL 许可证。所以我更喜欢freeBSD的系统函数crypt(3)
    猜你喜欢
    • 2019-05-08
    • 2016-02-21
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多