【发布时间】:2020-06-02 06:55:18
【问题描述】:
我想知道 openssl 库是否包含openssl passwd 命令的函数?
例如,我想使用带有自定义盐的 sha512 创建一个散列密码,对应的命令是openssl passwd -6 -salt xxxx password。
我在文档中搜索但没有找到任何东西,总是在谈论命令而不是关于库。
提前致谢
【问题讨论】:
我想知道 openssl 库是否包含openssl passwd 命令的函数?
例如,我想使用带有自定义盐的 sha512 创建一个散列密码,对应的命令是openssl passwd -6 -salt xxxx password。
我在文档中搜索但没有找到任何东西,总是在谈论命令而不是关于库。
提前致谢
【问题讨论】:
库中没有一个函数,如果你想知道command在做什么,它会在帮助中指出你:
-5 -6
使用 Ulrich Drepper 定义的基于 SHA256 / SHA512 的算法。 见https://www.akkadia.org/drepper/SHA-crypt.txt。
所以它使用 openssl 库来实现 Ulrich Drepper 的 SHA512 算法。
您可以查看源代码here 以了解它是如何完成的。查找使用 openssl 库实现 Ulrich Drepper 算法的 shacrypt 函数。
【讨论】:
if ((p_bytes = OPENSSL_zalloc(passwd_len)) == NULL)line 665 但在documentation 中,该函数不返回任何内容,所以我有这个错误:assigning to 'char *' 来自不兼容的类型 'void *'。有什么想法吗?
void* 到 char* 的隐式转换在 c 中有效,但在 c++ 中无效(请参阅 this)。所以我添加了一个演员表,效果很好,谢谢!