1
我有希望從PHP製作,看起來像這樣的字符串接收應用程序:匹配PHP的mcrypt_encrypt()與node.js的crypto.createCipher()
<?php
$shared_secret = 'secret';
$data = 'whatever';
# Newline added for viewing convenience only
echo bin2hex(mcrypt_encrypt(MCRYPT_BLOWFISH, $shared_secret, $data,
MCRYPT_MODE_ECB)) . "\n";
# -> 05c3febb9970204a
?>
接收器是昂貴的改變。
我使用Node.js的建設另一位製片人,我不能讓我的JavaScript代碼來產生相同的輸出:
var data, encrypt, sharedSecret;
sharedSecret = 'secret';
data = 'whatever';
encrypt = function(d) {
var cipher, crypto;
crypto = require('crypto');
cipher = crypto.createCipher('bf-ecb', sharedSecret, '\0\0\0\0\0\0\0\0');
cipher.update(d);
return cipher.final('hex');
};
console.log(encrypt(data));
// -> 35c9801f2afca332
我選擇了'bf-ecb'
密碼,因爲我認爲這是ECB模式的河豚。我公司提供的8個空字節作爲IV,因爲mcrypt_encrypt PHP文檔說,如果你省略IV,它採用全空字節,並mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB)
回答8.我選擇'hex'
,因爲我認爲它提供了相同的表示爲PHP'2 bin2hex()
。
我應該怎樣做我的JavaScript代碼來匹配PHP代碼的輸出?