php - 如何将这个mcrypt php代码转换为nodejs中的相同代码?

标签 php node.js mcrypt

我需要转换这个 php 代码:

$cipher_alg = MCRYPT_TRIPLEDES;
$key = "thekey";
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg, MCRYPT_MODE_ECB), MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);

return base64_encode($encrypted_string);

到nodejs。

我使用https://github.com/tugrul/node-mcrypt进行了测试但对于相同的字符串,加密结果并不相同:

测试的nodejs代码:

let blowfishCfb = new MCrypt('tripledes', 'ecb');
let iv = blowfishCfb.generateIv();
blowfishCfb.validateKeySize(false);
blowfishCfb.validateIvSize(false);
blowfishCfb.open('thekey', iv);

let ciphertext = blowfishCfb.encrypt(text);

return Buffer.concat([iv, ciphertext]).toString('base64');

你能帮助理解这一点吗?

谢谢

最佳答案

不要将 IV 和密码连接在一起:

let blowfishCfb = new MCrypt('tripledes', 'ecb');
let iv = blowfishCfb.generateIv();
blowfishCfb.validateKeySize(false);
blowfishCfb.validateIvSize(false);
blowfishCfb.open('thekey', iv);

let ciphertext = blowfishCfb.encrypt(text);

return ciphertext.toString('base64');

关于php - 如何将这个mcrypt php代码转换为nodejs中的相同代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46806305/

相关文章:

javascript - 在 Angular 中从服务器下载文本/csv 内容作为文件在 Mozilla FireFox 中不起作用

mysql - sql查询不适用于node.js mysql,但适用于终端

php - mcrypt_decrypt() 错误更改 key 大小

java - 使用加密货币进行加密。加密失败,解密正常

php - 更新到 php 5.6.2 时的 mcrypt 警告;不支持大小为 x 的键

php - Linux:文件既存在又不存在

php - HTML、Javascript、PHP 和 Actionscript 全部集成在一个 Eclipse 安装中 (2010)

php - 没有 Doctrine 的 Symfony2

php - 无法使用wamp修改数据库中的数据

javascript - 我认为变量作用域有麻烦