javascript – 使用node.js解密mcrypt编码的文本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用node.js解密mcrypt编码的文本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1787字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 使用node.js解密mcrypt编码的文本](/upload/InfoBanner/zyjiaocheng/784/3ca4e39536e94da280caf351d2ce4dc6.jpg)
我使用PHP的mcrypt编写了使用Blowfish编码的文本:
$td = mcrypt_module_open ('blowfish', '', 'cfb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
mcrypt_generic_init ($td, "somekey", $iv);
$crypttext = mcrypt_generic ($td, "sometext");
mcrypt_generic_deinit ($td);
$res = base64_encode($iv.$crypttext);
当尝试使用Node的加密库解码数据时,我得到了垃圾输出.
var crypto = require("crypto"),
ivAndCiphertext = "base64-encoded-ciphertext",
iv, cipherText, ivSize = 8, res= "";
ivAndCiphertext = new Buffer(ivAndCiphertext, 'base64');
iv = new Buffer(ivSize);
cipherText = new Buffer(ivAndCiphertext.length - ivSize);
ivAndCiphertext.copy(iv, 0, 0, ivSize);
ivAndCiphertext.copy(cipherText, 0, ivSize);
c = crypto.createDecipheriv('bf-cfb', "somekey", iv.toString("binary"));
res = c.update(cipherText, "binary", 'utf8');
res += c.final('utf8');
知道我做错了什么吗?
编辑
使用openssl(加密库是包装器)会直接产生相同的乱码结果:
openssl enc -K the_key_in_hex bf-cfb -d -p -iv the_iv_in_hex -nosalt -nopad -a
所以它看起来不像Javascript代码的问题.
解决方法:
https://github.com/tugrul/node-mcrypt
加密:
var mcrypt = require('mcrypt');
var bfEcb = new mcrypt.MCrypt('blowfish', 'cfb');
var iv = bfEcb.generateIv();
bfEcb.open('somekey', iv);
var cipherText = bfEcb.encrypt('sometext');
console.log(Buffer.concat([iv, cipherText]).toString('base64'));
解密:
var mcrypt = require('mcrypt');
var bfEcb = new mcrypt.MCrypt('blowfish', 'cfb');
var ivAndCiphertext = new Buffer('AyvfjTyg24Y9fVCdjzRPEw==', 'base64');
var ivSize = bfEcb.getIvSize();
var iv = new Buffer(ivSize);
var cipherText = new Buffer(ivAndCiphertext.length - ivSize);
ivAndCiphertext.copy(iv, 0, 0, ivSize);
ivAndCiphertext.copy(cipherText, 0, ivSize);
bfEcb.open('somekey', iv);
console.log(bfEcb.decrypt(cipherText).toString());
内容总结
以上是互联网集市为您收集整理的javascript – 使用node.js解密mcrypt编码的文本全部内容,希望文章能够帮你解决javascript – 使用node.js解密mcrypt编码的文本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。