Ben bir bit veri çözer Ruby aşağıdaki işlevi vardır:
def decrypt(key, iv, cipher_hex)
cipher = OpenSSL::Cipher::Cipher.new('aes-256-cbc')
cipher.decrypt
cipher.key = key.gsub(/(..)/){|h| h.hex.chr}
cipher.iv = iv.gsub(/(..)/){|h| h.hex.chr}
decrypted_data = cipher.update(cipher_hex.gsub(/(..)/){|h| h.hex.chr})
decrypted_data << cipher.final
return decrypted_data
end
PHP aynı şeyi yapmaya çalışıyorum, ama ben yanlış yapıyorum emin değilim. İşte bende ne:
function decrypt_data($key, $iv, $cipher_hex) {
return mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
hex_to_str($key),
hex_to_str($cipher_hex),
MCRYPT_MODE_CBC,
hex_to_str($iv)
);
}
function hex_to_str($hex_str) {
preg_match_all('/(..)/', $hex_str, $matches);
$to_return = '';
foreach ($matches[1] as $val)
$to_return .= chr(hexdec($val));
return $to_return;
}
Çıkışı sadece olmaktan çöp değil, ben arıyorum dize biter. Fikirler?
Ve biz bile bunu geçiş, başlamadan önce MCRYPT_RIJNDAEL_256
yardım görünüyor ve sadece iv sürece blok boyutu olarak değil varlık hakkında şikayet için neden değildir. I this site 128/256 blok boyutunun bir göstergesi değil, anahtar boyutu olduğunu söylüyor beri 128 bu durumda doğru olduğuna inanıyorum.