如何在带有 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()?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 OpenSSL 计算 SHA512/224 和 SHA512/256 哈希?
Python 请求 - HTTPDigest:在摘要授权中将哈希算法设置为 SHA-512