Я портирую часть приложения .NET на Qt в Linux. Я пытаюсь повторить результаты функции .NET, чтобы создать хэш SHA-256 пароля + соли. .NET-код
return new SHA256Managed().ComputeHash(buffer);
Где буфер — соль, соединенная с паролем.
Я рассмотрел несколько криптографических библиотек, включая QCA и Botan, и после прочтения нескольких комментариев я решил попробовать Botan. Тем не менее, я не нахожу нужного места в документации для выполнения эквивалента кода, указанного выше.
Может кто-нибудь указать мне место в прекрасном руководстве или учебнике, в котором обсуждается использование Botan для создания простого хеша? Я искал в Google пару часов, не найдя решения. Существует много примеров хэширования SHA-256 для каналов и потоков, но мне еще не удалось найти пример простого вычисления хеша.
Я думаю, тебе просто нужно документация.
Код для выполнения того, что вы хотите, выглядит примерно так:
#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)
Других решений пока нет …