如何解密消息(使用php)通过rails加密(aes-gem)


How to decrypt a message(using php) encrypt by rails(aes gem)?

我使用AES加密某些消息(http://rubygems.org/gems/aes),

@key="f6c57ea9f82731d3e125b4d2618423c0" #(it is 32 long, but i wonder how many bit it is in php?)
@message="123;456"
@str=AES.encrypt(@message,@key)
  #=>"sGvYXk3LhU30xge4rKcYYA==$yypKQjUvUF95YoiVfdbyPA==" ##init_vector and cipher_text are joined with "$"

我将@str传递给一个php文件,但它就是无法解密,在php中一切都一团糟。为什么@str使用相同的消息和密钥进行每次加密时会有所不同?

php

$str="yypKQjUvUF95YoiVfdbyPA==";
$iv_dec="sGvYXk3LhU30xge4rKcYYA==";
$key="f6c57ea9f82731d3e125b4d2618423c0";
$message=mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key,
                                $str, MCRYPT_MODE_CBC, $iv_dec);
##Puts out:  PHP Warning:  mcrypt_decrypt(): The IV parameter must be as long as the blocksize                   

有人能帮忙吗?

谢谢。

PHP代码(至少)有三个错误:

  1. 您使用的MCRYPT_RIJNDAEL_256不是AES,MCRYPT_RIJNDAEL_128是AES
  2. 您需要从十六进制值中解码密钥(因此它实际上有16个字节长,因此正在使用AES-128)
  3. 你需要以64为基数来解码IV和密文