gpt4 book ai didi

c - 是否有标准方法为 crypt 系统调用生成盐?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:30 25 4
gpt4 key购买 nike

我需要为我的应用程序实现帐户管理,我宁愿不使用 chpasswd 子进程,否则让明文密码超出我的应用程序的内存空间。

我想将 putspent 与我用 crypt 生成的密码散列一起使用,但我找不到任何标准函数来随机化 crypt< 的盐。在线搜索只发现奇怪的散列函数实现,我不想将其复制到我的代码中。是否有一个标准函数可以为我生成盐?

否则,重新使用存储在我的影子文件中的当前 salt 是否明智?我想不出为什么它会是一个安全隐患(它不会削弱我的影子文件以抵抗彩虹表攻击),它只是感觉不对,因为在系统安全中,经验法则总是随机化一切......(用户添加了系统实用程序)

最佳答案

这取决于你的 libc 版本。在较新的版本中有 crypt_gensalt这应该是你需要的。使用 *_rn 版本是线程安全的。

Example :

#include <crypt.h>
#include <stddef.h>
#include <stdio.h>

int main() {
char result[CRYPT_GENSALT_OUTPUT_SIZE];
const char* salt = crypt_gensalt_rn("$6$", 0, NULL, 0, result, sizeof(result));

if(salt == NULL)
return -1;

printf("salt: %s\n", salt);

struct crypt_data state_data = {0};
const char* hash = crypt_rn("password", salt, &state_data, sizeof(state_data));

printf("hash: %s\n", hash);
}

关于c - 是否有标准方法为 crypt 系统调用生成盐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45478853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com