【问题标题】:Botan tutorials or examples for creating the SHA-256 hash of a password用于创建密码的 SHA-256 哈希的 Botan 教程或示例
【发布时间】:2012-10-11 01:47:49
【问题描述】:

我正在将 .NET 应用程序的一部分移植到 Linux 上的 Qt。我正在尝试复制 .NET 函数的结果以创建密码 + 盐的 SHA-256 哈希。 .NET 代码是

return new SHA256Managed().ComputeHash(buffer);

其中 buffer 是连接到密码的盐。

我考虑了几个密码库,包括 QCA 和 Botan,在阅读了几个 cmets 之后,我决定尝试 Botan。但是,我没有在文档中找到合适的位置来执行上面列出的代码。

有人可以指出我在精美手册或教程中讨论使用 Botan 创建简单哈希的地方吗?我一直在谷歌搜索几个小时而没有找到解决方案。有很多管道和流的 SHA-256 哈希示例,但我还没有找到简单哈希计算的示例。

【问题讨论】:

标签: c++ qt cryptography qcar-sdk botan


【解决方案1】:

我猜你只需要the documentation

做你想做的事情的代码是这样的:

#include <vector>
#include <sha2_32.h>

using namespace Botan;

secure_vector<byte> somefunction(std::vector<byte> input) {
    SHA_256 sha;
    return sha.process(input);
}

正如我在评论中提到的,这是一种非常不安全的密码存储方式,因此我建议使用 bcrypt 或 PBKDF2(两者都是 implemented in Botan)。 PBKDF2 也是part of the .NET standard library,所以真的没有理由使用通用哈希函数而不是安全密码哈希函数。

bcrypt 你只需要:

generate_bcrypt(password, random_number_generator, work_factor)

【讨论】:

  • +1 表示警告。除非 OP 生活在一个“彩虹桌”严格限制于 CareBear 用餐习惯的世界,否则他真的需要为此使用 PBKDF2。手卷是个坏消息。
  • 感谢您的代码。我确实看过文档,但我是 C++ 的菜鸟,我被 Qt 库的大量示例代码宠坏了。准备好你的答案后,我现在可以理解文档了。也许我的请求应该是关于阅读 doxygen 文档的教程。我同意这是一种存储密码的糟糕方式。但是,这是我需要连接的 Web 服务 API 在不发送实际密码的情况下验证用户密码的方式。
  • 谢谢,也帮助了我! FWIW,对于那些不太了解 bot 的植物架构和加密的人来说,文档并不是那么好。
猜你喜欢
  • 2014-08-19
  • 2017-07-18
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2016-07-13
  • 2014-03-12
相关资源
最近更新 更多