Как преобразовать шифрование AES 128 CBC из Oracle в php с помощью openssl? - PullRequest
1 голос
/ 12 марта 2019

У меня есть следующий код Oracle и соответствующий PHP, но оба возвращают разные результаты. Код Oracle:

DECLARE

   raw_key          RAW(200);
   encryption_type  NUMBER;
   encrypted_result VARCHAR2(4000);
   decrypted_result VARCHAR2(4000);
   v_key            VARCHAR2(4000) := 'This!@#@#SSkkLeoKeyWAA';

BEGIN

   raw_key := utl_i18n.string_to_raw(v_key, 'UTF8'); 
   encryption_type  := dbms_crypto.encrypt_aes128 + dbms_crypto.chain_cbc + dbms_crypto.pad_pkcs5;
   encrypted_result := dbms_crypto.encrypt(utl_i18n.string_to_raw('200601RR00001', 'UTF8'), encryption_type, raw_key);
   decrypted_result := dbms_crypto.decrypt(encrypted_result, encryption_type, raw_key);
   dbms_output.put_line(encrypted_result);

Перевод PHP На основе PHP-документа http://php.net/manual/en/function.openssl-encrypt.php Я придумал этот

$string = strtoupper(implode(unpack("H*", "200601RR00001")));
$key = strtoupper(implode(unpack("H*", "This!@#@#SSkkLeoKeyWAA")));
$cipher="AES-128-CBC";

$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$cipherATS = openssl_encrypt($string , $cipher, $key, 0 , $iv);

echo $cipherATS."\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...