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

Posted

技术标签:

【中文标题】如何在带有 sha512 的 freeBSD 上使用 crypt()?【英文标题】:How to use crypt() on freeBSD with sha512? 【发布时间】: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 哈希。

那么我做错了什么?

编辑

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

【问题讨论】:

【参考方案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)

以上是关于如何在带有 sha512 的 freeBSD 上使用 crypt()?的主要内容,如果未能解决你的问题,请参考以下文章

Sha512 不起作用...请帮助 CODEIGNITER

如何使用 OpenSSL 计算 SHA512/224 和 SHA512/256 哈希?

Python 请求 - HTTPDigest:在摘要授权中将哈希算法设置为 SHA-512

如何在 Java 中使用 SHA-512 对密码进行哈希处理?

如何使用 sha512 为 JWT 生成 RSA 密钥?

如何使用 SecureString 创建 SHA1 或 SHA512 哈希?