由于有一个类似的问题,被认为是题外话...我已按照关于stackoverflow本身的几个最重要的问题(底部给出)更改了我的问题(毫无疑问地适合了现场规则)。
OS:CentOS(GCC) 方案:在线密码管理 下一篇:OpenBSD的实现
我正在尝试使用bcrypt(最终使用)。但是似乎找不到可靠且正确的方法,包括生成散列,覆盖内存并存储它们。
我已经看到了标记为bcrypt的关于stackoverflow(和security.stackex)的主要问题,到目前为止,我还没有没有看到正确的组合方法。我收集到的东西:
老实说,将所有这些块放在一起有多种出错方式,而且我还看到人们即使在其他问题上都偏离主题时,也强烈希望推荐加盐的密码散列。
我并不是在寻求最好的方法(这可能会导致意见分歧),而是在代码上实现它的最好方法之一。
我有一个字符串'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?
答案 0 :(得分:0)
此处介绍了与bcrypt配合使用的BSD库功能。
https://man.openbsd.org/crypt_newhash.3
使用crypt_newhash()生成哈希或使用crypt_checkpass()比较哈希和密码。
它们是简单的功能。如果您无法使他们正常工作,则需要C教程,而不是此处的问题。
类似地,比较所需的字符串strncmp()。这些是标准的且有据可查的功能。