DBMS_CRYPTO.ENCRYPT_AES128

ScS
аватар: ScS
Звание: Наблюдатель
Сообщений: 4

Добрый день.

Выполняю код:

DECLARE
  ENC_VAL   RAW (2000);
  L_KEY     RAW (2000);
  L_KEY_LEN NUMBER := 128;
  L_MOD     NUMBER := DBMS_CRYPTO.ENCRYPT_AES128 + 
                      DBMS_CRYPTO.CHAIN_CBC      +
                      DBMS_CRYPTO.PAD_PKCS5;
BEGIN
  L_KEY   := DBMS_CRYPTO.RANDOMBYTES (L_KEY_LEN);
  ENC_VAL := DBMS_CRYPTO.ENCRYPT
                                (
                                 UTL_I18N.STRING_TO_RAW ('SECRET', 'AL32UTF8'),
                                 L_MOD,
                                 L_KEY
                                );
END;

Выдает ошибку ORA-28234 (длина ключа недостаточна)

Увеличение ключа ни к чему не приводит.

Как заставить данный код работать?

аватар: Evgenij
Звание: Энтузиаст
Сообщений: 271

С Ораклом я слабо знаком, однако по коду понятно, что ты используешь режим CBC а это предполагает кроме ключа наличие еще и вектора инициализации. Для AES-128 он равен 128 бит. Тут ты его нигде не задаешь. Ошибка наверняка именно в этом.

__________________

]]>http://plaintext.su]]> - блог о криптографии, связи и информатике
]]>http://metallprofi.su]]> - лучшие изделия из металла в Москве и Московской области