用于创建密码的SHA-256哈希的Botan教程或示例

Dar*_*fer 3 c++ qt cryptography botan qcar-sdk

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

return new SHA256Managed().ComputeHash(buffer);
Run Code Online (Sandbox Code Playgroud)

缓冲区是连接到密码的salt.

我考虑了几个crytopgraphic库,包括QCA和Botan,在阅读了几条评论后,我决定尝试Botan.但是,我没有在文档中找到正确的位置来执行上面列出的代码.

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

Rei*_*ica 6

我猜你只需要文档.

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

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

using namespace Botan;

secure_vector<byte> somefunction(std::vector<byte> input) {
    SHA_256 sha;
    return sha.process(input);
}
Run Code Online (Sandbox Code Playgroud)

正如我在评论中提到的,这是一种非常不安全的密码存储方式,因此我建议使用bcrypt或PBKDF2(两者都在Botan实现).PBKDF2也是.NET标准库的一部分,因此没有理由使用通用散列函数而不是安全密码散列函数.

bcrypt所需要的只是:

generate_bcrypt(password, random_number_generator, work_factor)
Run Code Online (Sandbox Code Playgroud)