CRYPT_HASH
Версии сервера
| 2.5 | 3.0 | 4.0 | 5.0 | 6.0 |
|---|---|---|---|---|
| − | − | Да | Да | Да |
Доступно в
Формат
CRYPT_HASH(value USING <algorithm>)
<algorithm> ::= { MD5 | SHA1 | SHA256 | SHA512
| SHA3_224 | SHA3_256 | SHA3_384 | SHA3_512 }
Описание
Функция CRYPT_HASH вычисляет криптографический хеш от входного значения и возвращает результат типа VARBINARY. Алгоритм задаётся предложением USING: MD5, SHA1, SHA256, SHA512, SHA3_224, SHA3_256, SHA3_384, SHA3_512.
Параметр value — выражение любого типа: не строковые и не бинарные типы перед хешированием автоматически приводятся к строке. Текстовые BLOB поддерживаются полностью — любой длины и набора символов, так что функцию можно применять к документам и другим крупным текстовым значениям без ограничений.
Учтите: алгоритмы MD5 и SHA1 не рекомендуются — для них известны серьёзные проблемы стойкости. Они сохранены в функции только ради обратной совместимости со старым кодом. Для новых разработок выбирайте SHA256, SHA512 или семейство SHA3.
Типичные применения: контроль целостности данных, сравнение содержимого полей без передачи самого содержимого, детерминированные ключи дедупликации.
Пример
-- Хеш значения поля по SHA256, результат типа VARBINARY
SELECT CRYPT_HASH(x USING SHA256)
FROM MyTable;
-- Проверка целостности документа: текущий хеш BLOB против сохранённого
SELECT id
FROM documents
WHERE CRYPT_HASH(body USING SHA512) <> saved_hash;
См. также
BASE64_ENCODE, ENCRYPT, Встроенные функции по группам
Источник
Руководство по языку SQL СУБД Firebird 5.0 (sim1984 / ibase.ru, Public Documentation License)
Обсуждение