3

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

return new SHA256Managed().ComputeHash(buffer);

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

我考虑了几个密码库,包括 QCA 和 Botan,在阅读了一些评论后,我决定尝试 Botan。但是,我没有在文档中找到执行与上面列出的代码等效的位置。

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

4

1 回答 1

9

我猜你只需要文档

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

#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(两者都在 Botan 中实现)。PBKDF2 也是.NET 标准库的一部分,因此没有任何借口可以使用通用哈希函数来代替安全密码哈希函数。

bcrypt所需要的只是:

generate_bcrypt(password, random_number_generator, work_factor)
于 2012-10-11T03:33:37.377 回答