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事...我搜索谷歌和一切,並嘗試過示例代碼,但似乎與我的代碼是不對的。