Я хочу использовать rijndael aes128 для шифрования в рубине. У меня есть этот код:Rijndael Расшифровка шифрования AES-128 в Ruby
cipher = OpenSSL::Cipher::Cipher.new("aes-128-cbc")
cipher.encrypt
cipher.key = 'abcdefabcdef'
cipher.iv = '0000000000000000'
encrypted = cipher.update('2~1~000024~0910~20130723092446~T~00002000~USD~F~375019001012120~0~0~00000000000~')
encrypted << cipher.final
который не работает. Но использование этой PHP функции:
<?php
function hex2bin($hex_string)
{
return pack('H*', $hex_string);
}
$data_to_encrypt = '2~1~000024~0910~20130723092446~T~00002000~USD~F~375019001012120~0~0~00000000000~';
$key = 'abcdefabcdef';
$iv = '0000000000000000';
$key = hex2bin($key);
$iv = hex2bin($iv);
$data_encrypted = bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data_to_encrypt, MCRYPT_MODE_CBC, $iv));
echo "Data encrypted: ".strtoupper($data_encrypted)."<br/>"; echo "Length: ".strlen($data_encrypted)."<br/>";
?>
я получил желаемый результат:
0D5835AFEBEE04C6DC2421538DB7C38A1283970EB31F21A47D2E3CC623D29EF0461279C7ACF93B031BE2B69CE45C9339554957F29EF609F019EEC975983A03B537622D7E0F196BE148F1C7CBB88E602A
Как я могу получить мой рубин код, чтобы произвести тот же результат?
Есть так много вещей, которые могут пойти не так, и поскольку PHP и Ruby являются врагами, как вы ожидаете, что люди проведут проверку вашей проблемы? Попробуйте просмотреть оба руководства или проверить некоторые вопросы на SO (на правой панели), возможно [это] (http://stackoverflow.com/questions/1862710/how-to-make-ruby-aes-256-cbc-and -php-mcrypt-rijndael-128-play-well-together), вы дадите вам некоторое представление о том, что может быть неправильным ... – HamZa