FirebirdSQL logo

Криптографические функции

В Firebird 4.0 поддерживается только подмножество симметричных алгоритмов шифрования (как блочных так и потоковых), так и RSA.

CRYPT_HASH()

Доступно в

DSQL, PSQL

Синтаксис
CRYPT_HASH (value USING <algorithm>)

<algorithm> ::= { MD5 | SHA1 | SHA256 | SHA512 | SHA3_224 | SHA3_256 | SHA3_384 | SHA3_512 }
Table 1. Параметры функции CRYPT_HASH
Параметр Описание

value

Выражение любого типа. Не строковые и не бинарные типы приводятся к строке.

algorithm

Алгоритм хеширования.

Тип возвращаемого результата

VARBINARY

Функция CRYPT_HASH возвращает криптографический хэш входной строки, используя указанный алгоритм.Эта функция полностью поддерживает текстовые BLOB любой длины и с любым набором символов.Предложение USING позволяет указать алгоритм по которому вычисляет хэш.

Note

Алгоритмы MD5 и SHA1 не рекомендуются для использования из-за известных серьезных проблем, которые предоставляются только для обратной совместимости.

Примеры CRYPT_HASH

Example 1. Использование функции CRYPT_HASH
SELECT CRYPT_HASH(x USING SHA256) FROM MyTable;
-- результат типа VARBINARY

DECRYPT()

Доступно в

DSQL, PSQL

Синтаксис
DECRYPT (encrypted_input
  [USING <algorithm>] [MODE <mode>]
  KEY key
  [IV iv] [<ctr_type>] [CTR_LENGTH ctr_length]
  [COUNTER initial_counter] )

<algorithm> ::= <block_cipher> | <stream_cipher>

<block_cipher> ::=
    AES | ANUBIS | BLOWFISH | KHAZAD | RC5
  | RC6 | SAFER+ | TWOFISH | XTEA

<stream_cipher> ::= CHACHA20 | RC4 | SOBER128

<mode> ::= CBC | CFB | CTR | ECB | OFB

<ctr_type> ::= CTR_BIG_ENDIAN | CTR_LITTLE_ENDIAN
Table 1. Параметры функции DECRYPT
Параметр Описание

encrypted_input

Зашифрованный BLOB или (двоичная) строка

algorithm

Алгоритм шифрования.Поддерживаются как блочные, так и потоковые алгоритмы.

mode

Режим шифрования.Обязателен для блочных алгоритмов шифрования.

key

Ключ шифрования.

iv

Вектор инициализации (IV). Должен быть указан для всех блочных алгоритмов шифрования за исключением ECB и всех потоковых алгоритмов шифрования за исключением RC4.

ctr_type

Порядок байтов счётчика.Может быть указан только в режиме CTR.По умолчанию используется CTR_LITTLE_ENDIAN.

ctr_length

Длина счётчика в байтах.Может быть указана только в режиме CTR.По умолчанию равна длине вектора инициализации IV.

initial_counter

Начальное значение счётчика.Может быть указана только для алгоритма CHACHA20.По умолчанию равно 0.

Тип возвращаемого результата

BLOB или VARBINARY.

Функция DECRYPT дешифрует данные с использованием симметричного шифра.Размеры строк передаваемых в эту функцию должны соответствовать требованиям выбранного алгоритма и режима.

Example 1. Использование функции DECRYPT
select decrypt(x'0154090759DF' using sober128 key 'AbcdAbcdAbcdAbcd'
               iv '01234567')
from rdb$database;

select decrypt(secret_field using aes mode ofb key '0123456701234567'
               iv init_vector)
from secure_table;
См. также:

[fblangref-scalarfuncs-encrypt].