8.6.5 Описание функций компонента шифрования MySQL Enterprise
Функции MySQL Enterprise Encryption обладают следующими общими характеристиками:
При использовании аргументов неправильного типа или неверного количества аргументов каждая функция возвращает ошибку.
Если аргументы не позволяют выполнить запрошенную операцию, функция возвращает
NULLили 0, в зависимости от ситуации. Это происходит, например, если функция не поддерживает указанный алгоритм, длина ключа слишком короткая или длинная, или строка, ожидаемая как строка ключа в формате PEM, не является допустимым ключом.Базовая библиотека SSL позаботится об инициализации случайных чисел.
Функции компонента поддерживают только алгоритм шифрования RSA.
Дополнительные примеры и обсуждение см. в разделе 8.6.3, «Использование и примеры шифрования MySQL Enterprise».
-
asymmetric_decrypt(algorithm,data_str,priv_key_str)Расшифровывает зашифрованную строку с использованием заданного алгоритма и ключа, возвращая результирующий открытый текст в виде двоичной строки. Если расшифровка не удалась, результатом является
NULL.Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .
По умолчанию, функция
component_enterprise_encryptionпредполагает, что зашифрованный текст использует схему заполнения RSAES-OAEP. Функция поддерживает расшифровку содержимого, зашифрованного с помощью старых функций библиотекиopenssl_udf, если системная переменнаяenterprise_encryption.rsa_support_legacy_paddingустановлена вON(по умолчаниюOFF). Когда этоON, функция также поддерживает схему заполнения RSAES-PKCS1-v1_5, используемую старыми функциями библиотекиopenssl_udf. Если переменная установлена вOFF, содержимое, зашифрованное с помощью устаревших функций, не может быть расшифровано, и функция возвращает нулевое значение для такого содержимого.algorithm— алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма —'RSA'.data_str— зашифрованная строка для расшифровки, которая была зашифрована с помощьюasymmetric_encrypt().priv_key_str— действительный PEM-закодированный закрытый ключ RSA. Для успешной расшифровки строка ключа должна соответствовать строке открытого ключа, используемой сasymmetric_encrypt()для создания зашифрованной строки. Компонентная функцияasymmetric_encrypt()поддерживает только шифрование с использованием открытого ключа, поэтому расшифровка выполняется с соответствующим закрытым ключом.Пример использования см. в описании
asymmetric_encrypt(). -
asymmetric_encrypt(algorithm,data_str,pub_key_str)Шифрует строку с использованием заданного алгоритма и строки ключа и возвращает результирующий шифр в виде двоичной строки. Если шифрование не удалось, результатом является
NULL.Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .
algorithm— алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма —'RSA'.data_str— строка для шифрования. Длина этой строки не может быть больше длины строки ключа в байтах минус 42 (для учета заполнения).pub_key_str— действительный PEM-закодированный открытый ключ RSA. Компонентная функцияasymmetric_encrypt()поддерживает только шифрование с использованием открытого ключа.Для восстановления исходной незашифрованной строки передайте зашифрованную строку в
asymmetric_decrypt()вместе с другой частью пары ключей, используемой для шифрования, как в следующем примере:-- Generate private/public key pair SET @priv = create_asymmetric_priv_key('RSA', 2048); SET @pub = create_asymmetric_pub_key('RSA', @priv); -- Encrypt using public key, decrypt using private key SET @ciphertext = asymmetric_encrypt('RSA', 'The quick brown fox', @pub); SET @plaintext = asymmetric_decrypt('RSA', @ciphertext, @priv);Предположим, что:
SET @s = a string to be encrypted SET @priv = a valid private RSA key string in PEM format SET @pub = the corresponding public RSA key string in PEM format
Тогда эти отношения тождества выполняются:
asymmetric_decrypt('RSA', asymmetric_encrypt('RSA', @s, @pub), @priv) = @s -
asymmetric_sign(algorithm,text,priv_key_str,digest_type)Подписывает строку дайджеста или строку данных с использованием закрытого ключа и возвращает подпись в виде двоичной строки. Если подписание не удалось, результатом является
NULL.Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .
algorithm— алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма —'RSA'.text— строка данных или дайджеста. Функция принимает дайджесты, но не требует их, так как она также способна обрабатывать строки данных произвольной длины. Строку дайджеста можно сгенерировать, вызвавcreate_digest().priv_key_str— строка закрытого ключа для использования при подписи строки дайджеста. Она должна быть действительным PEM-закодированным закрытым ключом RSA.digest_type— алгоритм, который будет использоваться для подписи данных. Поддерживаемые значенияdigest_type—'SHA224','SHA256','SHA384'и'SHA512'при использовании OpenSSL 1.0.1. Если используется OpenSSL 1.1.1, доступны дополнительные значенияdigest_type—'SHA3-224','SHA3-256','SHA3-384'и'SHA3-512'.Пример использования см. в описании
asymmetric_verify(). -
asymmetric_verify(algorithm,text,sig_str,pub_key_str,digest_type)Проверяет, соответствует ли строка подписи строке дайджеста, и возвращает 1 или 0, чтобы указать, прошла ли проверка или нет. Если проверка не удалась, результатом является
NULL.По умолчанию, функция
component_enterprise_encryptionпредполагает, что подписи используют схему подписи RSASSA-PSS. Функция поддерживает проверку подписей, созданных старыми функциями библиотекиopenssl_udf, если системная переменнаяenterprise_encryption.rsa_support_legacy_paddingустановлена вON(по умолчаниюOFF). При этом значении функция также поддерживает схему подписи RSASSA-PKCS1-v1_5, используемую старыми функциями библиотекиopenssl_udf; если она установлена вOFF, подписи, созданные устаревшими функциями, не могут быть проверены, и функция возвращает нулевой вывод для такого содержимого.algorithm— алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма —'RSA'.text— строка данных или дайджеста. Компонентная функция принимает дайджесты, но не требует их, так как она также способна обрабатывать строки данных произвольной длины. Строку дайджеста можно сгенерировать, вызвавcreate_digest().sig_str— строка подписи, подлежащая проверке. Строку подписи можно сгенерировать, вызвавasymmetric_sign().pub_key_str— строка открытого ключа подписывающего лица. Она соответствует закрытому ключу, переданному вasymmetric_sign()для генерации строки подписи. Он должен быть действительным PEM-закодированным открытым ключом RSA.digest_type— алгоритм, который использовался для подписи данных. Поддерживаемые значенияdigest_type—'SHA224','SHA256','SHA384'и'SHA512'при использовании OpenSSL 1.0.1. Если используется OpenSSL 1.1.1, доступны дополнительные значенияdigest_type—'SHA3-224','SHA3-256','SHA3-384'и'SHA3-512'.-- Set the encryption algorithm and digest type SET @algo = 'RSA'; SET @dig_type = 'SHA512'; -- Create private/public key pair SET @priv = create_asymmetric_priv_key(@algo, 2048); SET @pub = create_asymmetric_pub_key(@algo, @priv); -- Generate digest from string SET @dig = create_digest(@dig_type, 'The quick brown fox'); -- Generate signature for digest and verify signature against digest SET @sig = asymmetric_sign(@algo, @dig, @priv, @dig_type); SET @verf = asymmetric_verify(@algo, @dig, @sig, @pub, @dig_type);
-
create_asymmetric_priv_key(algorithm,key_length)Создает закрытый ключ с использованием заданного алгоритма и длины ключа и возвращает ключ в виде двоичной строки в формате PEM. Ключ в формате PKCS #8. Если генерация ключа не удалась, результатом является
NULL.Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .
algorithm— алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма —'RSA'.key_length— длина ключа в битах. Если вы превысите максимальную разрешенную длину ключа или укажете значение меньше минимального, генерация ключа завершится неудачно, и результатом будет пустое значение. Минимальная разрешенная длина ключа в битах — 2048. Максимальная разрешенная длина ключа — значение системной переменнойenterprise_encryption.maximum_rsa_key_size, которая по умолчанию равна 4096. Ее максимальное значение — 16384, что является максимальной длиной ключа, разрешенной для алгоритма RSA. См. Раздел 8.6.2, “Настройка MySQL Enterprise Encryption”.ПримечаниеГенерация более длинных ключей может потребовать значительных ресурсов ЦП. Ограничение длины ключа с помощью системной переменной
enterprise_encryption.maximum_rsa_key_sizeпозволяет обеспечить необходимую безопасность, балансируя ее с использованием ресурсов.Этот пример создает закрытый ключ RSA длиной 2048 бит, а затем выводит открытый ключ из закрытого ключа:
SET @priv = create_asymmetric_priv_key('RSA', 2048); SET @pub = create_asymmetric_pub_key('RSA', @priv); -
create_asymmetric_pub_key(algorithm,priv_key_str)Выводит открытый ключ из заданного закрытого ключа с использованием заданного алгоритма и возвращает ключ в виде двоичной строки в формате PEM. Ключ в формате PKCS #8. Если вывод ключа не удался, результатом является
NULL.Для устаревшей версии этой функции, используемой до MySQL 8.0.29, см. .
algorithm— алгоритм шифрования, используемый для создания ключа. Поддерживаемое значение алгоритма —'RSA'.priv_key_str— действительный PEM-закодированный закрытый ключ RSA.Пример использования см. в описании
create_asymmetric_priv_key().
-
create_digest(digest_type,str)Создаёт дайджест из заданной строки с использованием указанного типа дайджеста и возвращает дайджест в виде бинарной строки. Если генерация дайджеста завершается ошибкой, результат —
NULL.Для использования в более ранних версиях MySQL, до 8.0.29, см. .
Полученная строка дайджеста подходит для использования с
asymmetric_sign()иasymmetric_verify(). Компонентные версии этих функций принимают дайджесты, но не требуют их, так как они способны обрабатывать данные произвольной длины.digest_type— алгоритм дайджеста, который будет использован для генерации строки дайджеста. Поддерживаемые значенияdigest_type—'SHA224','SHA256','SHA384'и'SHA512'при использовании OpenSSL 1.0.1. При использовании OpenSSL 1.1.1 доступны дополнительные значенияdigest_type—'SHA3-224','SHA3-256','SHA3-384'и'SHA3-512'.str— непустая строка данных, для которой необходимо сгенерировать дайджест.SET @dig = create_digest('SHA512', 'The quick brown fox');
© 2025 Oracle
Licensed under the GPLv2 License.