FirebirdSQL logo

Примеры 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].

ENCRYPT()

Доступно в

DSQL, PSQL

Синтаксис
ENCRYPT (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. Параметры функции ENCRYPT
Параметр Описание

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

Функция ENCRYPT шифрует данные с использованием симметричного шифра.

Note
  • Эта функция возвращает BLOB SUB_TYPE BINARY, если первым аргументом является BLOB, и VARBINARY для всех других текстовых и двоичных типов.

  • Размеры строк (например, key и iv) передаваемых в эту функцию должны соответствовать требованиям выбранного алгоритма и режима.Подробнее см. таблицу [fblangref-scalarfuncs-tbl-encrypt-req].

    • Как правило, размер iv должен соответствовать размеру блока алгоритма.

    • Для режимов ECB и CBC input должен быть кратным размеру блока, вам нужно будет вручную заполнить нулями или пробелами, если это необходимо.

Особенности различных алгоритмов и режимов выходят за рамки данного справочника по языку.

Table 2. Требования алгоритмов шифрования
Алгоритм Размер ключа (байт) Размер блока (байт) Примечание

Блочное шифрование

AES

16, 24, 32

16

 

ANUBIS

16 - 40, с шагом 4

16

 

BLOWFISH

8 - 56

8

 

KHAZAD

16

8

 

RC5

8 - 128

8

 

RC6

8 - 128

16

 

SAFER+

16, 24, 32

16

 

TWOFISH

16, 24, 32

16

 

XTEA

16

8

 

Поточное шифрование

CHACHA20

16, 32

1

Размер (IV) составляет 8 или 12 байт.Для размера 8 initial_counter - это 64-битное целое число, для размера 12 - 32-битное.

RC4

5 - 256

1

 

SOBER128

4x

1

Размер (IV) составляет 4y байт, длина не зависит от размера ключа.

Example 1. Использование функции ENCRYPT
select encrypt('897897' using sober128 key 'AbcdAbcdAbcdAbcd' iv '01234567')
from rdb$database;
См. также:

[fblangref-scalarfuncs-decrypt].

RSA_PRIVATE()

Доступно в

DSQL, PSQL

Синтаксис
RSA_PRIVATE (size)
Table 1. Параметры функции RSA_PRIVATE
Параметр Описание

size

Размер ключа в байтах.

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

VARBINARY

Функция RSA_PRIVATE возвращает RSA закрытый ключ заданной длины (в байтах) в PKCS#1 формате как строку VARBINARY.

Example 1. Использование функции RSA_PRIVATE
select rdb$set_context('USER_SESSION', 'private_key', rsa_private(256))
from rdb$database;