【问题标题】:How to use openssl passwd command from the openssl library?如何使用 openssl 库中的 openssl passwd 命令?
【发布时间】:2020-06-02 06:55:18
【问题描述】:


我想知道 openssl 库是否包含openssl passwd 命令的函数?
例如,我想使用带有自定义盐的 sha512 创建一个散列密码,对应的命令是openssl passwd -6 -salt xxxx password。 我在文档中搜索但没有找到任何东西,总是在谈论命令而不是关于库。
提前致谢

【问题讨论】:

    标签: c++ openssl


    【解决方案1】:

    库中没有一个函数,如果你想知道command在做什么,它会在帮助中指出你:

    -5 -6

    使用 Ulrich Drepper 定义的基于 SHA256 / SHA512 的算法。 见https://www.akkadia.org/drepper/SHA-crypt.txt

    所以它使用 openssl 库来实现 Ulrich Drepper 的 SHA512 算法。

    您可以查看源代码here 以了解它是如何完成的。查找使用 openssl 库实现 Ulrich Drepper 算法的 shacrypt 函数。

    【讨论】:

    • 非常感谢,shacrypt 函数正是我想要的!所以我试图将它包含在我的代码中,但它使用 OPENSSL_zalloc 函数,如下所示:if ((p_bytes = OPENSSL_zalloc(passwd_len)) == NULL)line 665 但在documentation 中,该函数不返回任何内容,所以我有这个错误:assigning to 'char *' 来自不兼容的类型 'void *'。有什么想法吗?
    • 听起来您正在使用 C++ 编译器编译 c 代码...您不需要使用 OPENSSL_zalloc,只需将其更改为 new/delete。我认为这是一个如何用 openssl 实现的例子。您应该能够将代码简化为只想删除仅 openssl 的代码(例如 OPENSSL_zalloc)。
    • 是的,就是这样,试图为 c++ 而不是 c 编译。这是因为从 void*char* 的隐式转换在 c 中有效,但在 c++ 中无效(请参阅 this)。所以我添加了一个演员表,效果很好,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多