Учебные пособия по ботану или примеры создания хэша пароля SHA-256

Я портирую часть приложения .NET на Qt в Linux. Я пытаюсь повторить результаты функции .NET, чтобы создать хэш SHA-256 пароля + соли. .NET-код

return new SHA256Managed().ComputeHash(buffer);

Где буфер — соль, соединенная с паролем.

Я рассмотрел несколько криптографических библиотек, включая QCA и Botan, и после прочтения нескольких комментариев я решил попробовать Botan. Тем не менее, я не нахожу нужного места в документации для выполнения эквивалента кода, указанного выше.

Может кто-нибудь указать мне место в прекрасном руководстве или учебнике, в котором обсуждается использование Botan для создания простого хеша? Я искал в Google пару часов, не найдя решения. Существует много примеров хэширования SHA-256 для каналов и потоков, но мне еще не удалось найти пример простого вычисления хеша.

3

Решение

Я думаю, тебе просто нужно документация.

Код для выполнения того, что вы хотите, выглядит примерно так:

#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 (оба из которых реализовано в ботане). PBKDF2 является часть стандартной библиотеки .NET тоже, так что на самом деле нет оправдания использованию хеш-функции общего назначения вместо хеш-функции безопасного пароля.

Все, что вам нужно для Bcrypt является:

generate_bcrypt(password, random_number_generator, work_factor)
6

Другие решения

Других решений пока нет …