У меня есть приложение, в котором я пытаюсь зашифровать строку с использованием PLSQL (dbms_crypto.encrypt), сохранить ее в файл cookie, затем прочитать файл cookie с помощью PHP (mcrypt_decrypt) и дешифровать строка. У меня есть чертовски время, чтобы расшифровать строку. Надеюсь, кто-то сделал это раньше и может мне помочь?Шифровать строку с PLSQL, а затем расшифровать с помощью PHP
Вот код PLSQL: (Запуск в Oracle 11)
set serveroutput on
set linesize 121
DECLARE
cookieInfo VARCHAR2(500) := '[email protected]@[email protected]';
cookieInfo_raw RAW(500) := utl_raw.cast_to_raw(cookieInfo);
l_key RAW(128) := utl_raw.cast_to_raw('abcdefgh');
l_encrypted_raw RAW(2048);
BEGIN
dbms_output.put_line('Original : ' || cookieInfo);
l_encrypted_raw := dbms_crypto.encrypt(cookieInfo_raw,
dbms_crypto.des_cbc_pkcs5, l_key);
dbms_output.put_line('Encrypted : ' ||
l_encrypted_raw);
END;
/
Если я правильно читать, данные шифруются с помощью DES с CBC и PKCS5. Вот вывод из кода:
Original : [email protected]@[email protected]
Encrypted : 3CB6F761112AE388DDA1AE973042D08472B06C2170587D5E
PHP явно использует MCRYPT_decode, но я не могу показаться, чтобы получить выходное право. Я собрал скрипт, который выполняет часть задания, но вывод всегда выглядит закодированным. Моя проблема в том, что я не в состоянии ускорить то, что все варианты действительно означают. CBC и PKCS5 для меня немного греческие. Также кажется, что частью проблемы может быть кодирование текста (HEX vs RAW/BIN). Кажется, я просто смущен.
Вот мой PHP код: (Запуск на PHP 5.3.10)
<?php
$input = "[email protected]@L00579796";
$key = "abcdefgh";
$data = "DC979D2F301CA90A548B2F749237B5AF783F13A8CBECE03C";
$iv = "";
$decrypt = mcrypt_decrypt(MCRYPT_DES, $key, $data, MCRYPT_MODE_CBC);
$decrypt = bin2hex($decrypt);
$block = mcrypt_get_block_size('des', 'cbc');
echo "BLOCK: ". $block ."<br>";
$pad = ord($decrypt[($len = strlen($decrypt)) - 1]);
echo "PAD: ". $pad ."<br>";
$output = substr($decrypt, 0, strlen($decrypt) - $pad);
echo "OUTPUT: ". $output;
?>
И выход:
OUTPUT: 793fe26d587e144f140d70e6013374acb082ff9e411
Любая помощь будет принята с благодарностью. Эта небольшая проблема связана с гораздо более масштабным проектом.
Заранее спасибо.
Красота! Благодаря! Это сделал трюк. – Fotan