Rijndael 256 на PHP трудности с шифрованием - PullRequest
1 голос
/ 12 января 2012

Я должен передать значение и зашифровать его для следующей спецификации:

"256-битная длина ключа, 256-битная длина блока, 32-байтовые блоки, режим ECB, с кодировкой ASCII (зашифрованнаяожидается, что данные будут представлены в виде строки, в которой каждый символ будет преобразован в 2-байтовое шестнадцатеричное значение) "

Однако я должен что-то упустить.Это для целей проверки с веб-сервисом, но я продолжаю получать отказ из-за ошибки расшифровки.

Вот что у меня есть:

$key = '1324mykey';
$string = 'Ron Swanson';

// 1. Encrypt the string with the key using Rijndael 256 in ECB mode
$td = mcrypt_module_open('rijndael-256', '','ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$encrypted_string = mcrypt_generic($td, $string);

// 2. Base64 encode my string
$encrypted_string = base64_encode($encrypted_string);

// 3. Convert each character of encrypted_string to it's 2-byte HEX value 
$hex='';
for ($i=0; $i < strlen($encrypted_string); $i++)
{
    $hex .= dechex(ord($encrypted_string[$i]));
}

// Now $encrypted_string should match up with the recipe, but it isn't. 
$encrypted_string = $hex;

Я надеюсь, что в требованиях к шифрованию есть что-то базовоечто мне не хватает в моем шаге 1 моего процесса.

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Если ваше требование - 256-битный ключ, не должна ли ваша переменная $key быть 32 байта?(другими словами, длина 32 символа)?

1 голос
/ 12 января 2012

Это было решено ... (un?) К счастью, мне просто дали неверный параметр.

...