1
我的问题是,我编码字符串在PHP与AES-256-CBC的m_crypt模块使用Base64这样的:AES-256-CBC加密PHP和解密的Node.js
function encrypt($data) {
if(32 !== strlen($this->secret)) $this->secret = hash('SHA256', $this->secret, true);
$padding = 16 - (strlen($data) % 16);
$data .= str_repeat(chr($padding), $padding);
$encrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->secret, $data, MCRYPT_MODE_CBC, str_repeat("\0", 16));
return base64_encode($encrypt);
}
在哪里$ this-> secret是一个32位的aes键,$ data是我想要加密的字符串。
这工作得很好,文本被加密并发送至服务器没有任何问题(我检查了两次!),现在我想这件事与Node.js的这样的解码:
var decipher = Core.crypto.createDecipher('aes-256-cbc', rows[0]['sessionkey']);
decipher.update(body.user, 'base64', 'utf8');
var user = decipher.final('utf8');
Core.crypto是Node.JS中普通加密模块的require调用,rows [0] ['sessionkey']是用于通过mysql请求接收加密的密钥,body.user是通过post请求发送的PHP加密字符串。
正如我所说的,一切正常,除了这个小小的decypt事...我搜索谷歌和一切,并尝试过示例代码,但似乎与我的代码是不对的。