Spec-Zone.ru › MySQL 8.4

8.6.3 Использование и примеры шифрования MySQL Enterprise

Для использования шифрования MySQL Enterprise в приложениях вызывайте функции, соответствующие операциям, которые вы хотите выполнить. Этот раздел демонстрирует, как выполнить некоторые представительные задачи.

Функции шифрования MySQL Enterprise предоставляются компонентом MySQL component_enterprise_encryption. Сведения о этих функциях см. в Разделе 8.6.4 «Справочник по функциям шифрования MySQL Enterprise».

При выборе длины ключей и алгоритмов шифрования следует учитывать следующие общие моменты:

  • Надежность шифрования для закрытых и открытых ключей увеличивается с размером ключа, но время генерации ключа также увеличивается.

  • Функции компонента поддерживают только ключи RSA.

  • Функции асимметричного шифрования потребляют больше ресурсов по сравнению с симметричными функциями. Они подходят для шифрования небольших объёмов данных и создания и проверки подписей. Для шифрования больших объёмов данных симметричные функции шифрования работают быстрее. MySQL Server предоставляет функции AES_ENCRYPT() и AES_DECRYPT() для симметричного шифрования.

Значения строк ключей можно создавать во время выполнения и сохранять в переменную или таблицу, используя SET, SELECT или INSERT, как показано здесь:

SET @priv1 = create_asymmetric_priv_key('RSA', 2048);
SELECT create_asymmetric_priv_key('RSA', 2048) INTO @priv2;
INSERT INTO t (key_col) VALUES(create_asymmetric_priv_key('RSA', 1024));

Значения строк ключей, хранящихся в файлах, можно читать с помощью функции LOAD_FILE() пользователями, обладающими правом FILE. Аналогично можно обрабатывать строки хешей и подписей.

  • Создать пару закрытого/открытого ключа

  • Использовать открытый ключ для шифрования данных и закрытый ключ для их расшифровки

  • Генерировать хеш-значение из строки

  • Использовать хеш-значение с парой ключей

Создать пару закрытого/открытого ключа

Этот пример работает как с функциями компонента, так и с устаревшими функциями:

-- Encryption algorithm
SET @algo = 'RSA';
-- Key length in bits; make larger for stronger keys
SET @key_len = 2048;

-- Create private key
SET @priv = create_asymmetric_priv_key(@algo, @key_len);
-- Derive corresponding public key from private key, using same algorithm
SET @pub = create_asymmetric_pub_key(@algo, @priv);

Вы можете использовать пару ключей для шифрования и расшифрования данных или для подписания и проверки данных.

Использовать открытый ключ для шифрования данных и закрытый ключ для их расшифровки

Этот пример работает как с функциями компонента, так и с устаревшими функциями. В обоих случаях члены пары ключей должны быть ключами RSA:

SET @ciphertext = asymmetric_encrypt(@algo, 'My secret text', @pub);
SET @plaintext = asymmetric_decrypt(@algo, @ciphertext, @priv);

Генерировать хеш-значение из строки

Этот пример работает как с функциями компонента, так и с устаревшими функциями:

-- Digest type
SET @dig_type = 'SHA512';

-- Generate digest string
SET @dig = create_digest(@dig_type, 'My text to digest');

Использовать хеш-значение с парой ключей

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

-- Encryption algorithm; keys must
-- have been created using same algorithm
SET @algo = 'RSA';
–- Digest algorithm to sign the data
SET @dig_type = 'SHA512';

-- Generate signature for digest and verify signature against digest
SET @sig = asymmetric_sign(@algo, @dig, @priv, @dig_type);
-- Verify signature against digest
SET @verf = asymmetric_verify(@algo, @dig, @sig, @pub, @dig_type);

Для устаревших функций подписи требуют хеша. Для функций компонента подписи не требуют хеша и могут использовать любую строку данных. Тип хеша в этих функциях относится к алгоритму, используемому для подписи данных, а не к алгоритму, который использовался для создания исходного ввода для подписи. Этот пример относится к функциям компонента:

-- Encryption algorithm; keys must
-- have been created using same algorithm
SET @algo = 'RSA';
–- Arbitrary text string for signature
SET @text = repeat('j', 256);
–- Digest algorithm to sign the data
SET @dig_type = 'SHA512';

-- Generate signature for digest and verify signature against digest
SET @sig = asymmetric_sign(@algo, @text, @priv, @dig_type);
-- Verify signature against digest
SET @verf = asymmetric_verify(@algo, @text, @sig, @pub, @dig_type);

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/enterprise-encryption-usage.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API