1 stable release
Uses new Rust 2024
| new 1.0.0 | Apr 13, 2026 |
|---|
#1800 in Cryptography
14KB
176 lines
CRY_SHA256
Библиотека на Rust для хэширования данных по алгоритму SHA-256. Ориентирована на работу с небольшими объемами данных (например, JSON-тела REST-запросов) для проверки их целостности.
Особенности
- 🛡️ Безопасность: Использование
zeroizeдля автоматической очистки памяти от промежуточных вычислений. - 🔌 Гибкость: Поддержка режима
#. - 🚀 Простота: Минимум зависимостей и понятный API.
Установка
Добавьте в ваш Cargo.toml:
[dependencies]
cry_sha256 = "1.0.0"
Инструкция
Библиотека содержит 2 функции, каждая из которых выполняет свою конкретную задачу:
- Хэширует данные;
- Переводит массив байтов в HEX формат.
Рассмотрим каждую подробнее.
Создание хэша
Эта функция предназначена для хэширования входящего набора байтов. Получает на вход ссылку на массив байтов, чтобы не забирать владение. Важно знать, что "под капотом" создается вектор, поэтому не рекомендуется передавать на вход данные, размер которых исчисляется гигабайтами, дабы не переполнить кучу.
Напомню, что цель функции хэшировать не огромные файлы, а данные, которые получают, например, из REST запросов (JSON). Хэширование блоками планируется в следующих версиях.
Пример
let input_data = b"Hello, world!";
let digest = cry_sha256::create(input_data).unwrap();
Данный код возьмет строку (байты) "Hello, world!" и создаст ее хэш по алгоритму SHA-256.
Память
Данная функция аллоцирует память в куче пропорционально размеру входных данных.
Ошибки
Функция возвращает Result. Ошибка InvalidLength зарезервирована для случаев нарушения целостности блоков при внутренней обработке
Конвертация в HEX
Данная функция преобразует массив байтов в HEX строку.
Преобразование происходит путем дробления байта на тетрады, полученные побитовым сдвигом вправо и конъюнкцией с маской максимального значения тетрады (0x0F) с дальнейшим сопоставлением с HEX числами.
Пример
let input_data = b"Hello, world!";
let result = cry_sha256::convert_to_hex(input_data);
Dependencies
~31KB