【问题标题】:How do I create bcrypt hash in C and storing them如何在 C 中创建 bcrypt 哈希并存储它们
【发布时间】:2019-03-23 20:23:24
【问题描述】:

因为一个类似的问题,被认为是题外话......我已经改变了我的问题(毫无疑问地符合网站规则),沿着 stackoverflow 本身的几个热门问题(在底部给出)。

操作系统:CentOS (GCC) 场景:在线密码管理 Pref: OpenBSD 实现

我正在尝试使用 bcrypt(使用 which is final)。但似乎找不到可靠和正确的方法,包括生成哈希、覆盖内存和存储它们。

我已经看到关于 stackoverflow(和 security.stackex)的热门问题已标记为 bcrypt,到目前为止,我还没有没有看到正确方法的组合示例。我收集到的:

  • 50(安全)和 72(扩展)字符密码是 bcrypt 的上限
  • Binary(60) 是存储它的常用数据类型
  • 当前最小回合数约为 8,默认为 10
  • gnu libgcrypt 有 bcrypt。 (我想看一个使用它的例子)
  • 另外,我正在通过“#define _POSIX_C_SOURCE 200809”在我的脚本中使用其他一些 POSIX 函数

老实说,将所有这些块放在一起会出现多种错误,而且我还看到人们明显渴望推荐加盐密码哈希,即使他们在其他问题中跑题了.

我不是在要求最好的方法(这可能会导致意见分歧),而是在代码方面最好的方法之一。

我有一个字符串“plainpassword”,正确地以 NULL 结尾并进行了清理(请不要进入该字符串),其中包含用户输入的密码。

接下来呢?现在如何生成 bcrypt 哈希?以及如何正确地将其与从 Mysql 查询的哈希进行比较?使用strncmp(甚至strcmp)或strcoll?

如何覆盖内存中的明文?我还需要什么吗?

我应该使用这个吗:https://man.openbsd.org/crypt_checkpass.3

我虚心寻求帮助。非常感谢。

Stackoverflow 上的类似问题:

How do I create a SHA1 hash in ruby?

Storing SHA1 hash values in MySQL

HMAC-SHA1: How to do it properly in Java?

hash function for string

A minimal hash function for C?

Password hashing, salt and storage of hashed values

【问题讨论】:

    标签: c security hash cryptography bcrypt


    【解决方案1】:

    此处记录了使用 bcrypt 的 BSD 库函数。

    https://man.openbsd.org/crypt_newhash.3

    使用 crypt_newhash() 生成哈希或使用 crypt_checkpass() 比较哈希和密码。

    它们是简单的函数。如果你不能让它们工作,你需要一个 C 教程,而不是这里的问题。

    同样,比较你想要的字符串 strncmp()。这些是标准且有据可查的函数。

    【讨论】:

    • 朋友,您似乎没有正确阅读我的问题。顺便说一句,我自己在你面前发布了链接。如果您再次正确地回答我的问题,将会很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多