AES Шифрование AES в Oracle и MySQL дают разные результаты

Мне нужно сравнить данные между базой данных Oracle и базой данных MySQL.

В Oracle данные сначала зашифрованы алгоритмом AES-128 алгоритмом, а затем хешированы. Это означает, что невозможно восстановить данные и расшифровать его.

Те же данные доступны в MySQL, а в простом тексте. Итак, чтобы сравнить данные, я попытался зашифровать и затем перемешивать данные MySQL, следуя одинаковым этапам, выполненным в Oracle.

После многих попыток я наконец узнал, что aes_encrypt в MySQL возвращает разные результаты, чем в Oracle.

-- ORACLE:
-- First the key is hashed with md5 to make it a 128bit key:
raw_key := DBMS_CRYPTO.Hash (UTL_I18N.STRING_TO_RAW ('test_key', 'AL32UTF8'), DBMS_CRYPTO.HASH_MD5);

-- Initialize the encrypted result
encryption_type:= DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5;

-- Then the data is being encrypted with AES:
encrypted_result := DBMS_CRYPTO.ENCRYPT(UTL_I18N.STRING_TO_RAW('test-data', 'AL32UTF8'), encryption_type, raw_key);

Результат для кода Oracle будет: 8FCA326C25C890846C25C8908446D28884394F2E222

-- MySQL
-- While doing the same with MySQL, I have tried the following:
SELECT hex(aes_encrypt('test-data', MD5('test_key'));

Результат для кода MySQL будет: dc7acac07f04bbe0ecec6b6934cf79fe

Я что-то упускаю? Или методы шифрования между различными языками не одинаковы?

Обновление: Согласно комментариям ниже, я считаю, что я должен упомянуть тот факт, что результат dbms_crypto.hash в Oracle - это то же самое, что результат, возвращаемый функцией MD5 в MySQL.

также с использованием CBC или CBE в Oracle дает тот же результат, поскольку IV не передается функции, при этом используется значение IV по умолчанию IV, которое NULL

Bounty: Если кто-то может проверить мой последний комментарий, и тот факт, что если использование той же прокладки с обеих сторон, даст те же результаты, получает Bounty:

@Rossum Padding по умолчанию в MySQL является PKCS7, ммм ... о. В Oracle Он использует PKCS5, не могу поверить, что я этого не заметил. Спасибо. (Кстати У Oracle не имеет опции PAD_PKCS7, не в 11G по крайней мере)

7
задан Dan 5 September 2011 в 07:49
поделиться