NodeJS加密,前端JavaScript解密

3

我需要进行AES256 CBC解密的客户端操作,

在NodeJS中,我使用以下函数来加密:

exports.encrypt = function(txt, cryptkey){
  var cipher = crypto.createCipher('aes-256-cbc',cryptkey);
  var crypted = cipher.update(txt,'utf8','hex');
  crypted += cipher.final('hex');

  console.log(crypted);
  return crypted;

};

但是我似乎无法在任何客户端库(JSAES.js、SJCL.js、pidcrypt)中使用它。

我的猜测是它与base64/hex编码解码有关,有什么指针吗?

1个回答

8
请查看CryptoJS项目:https://code.google.com/p/crypto-js 这是AES256 CBC加密/解密的示例: 包含:
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/mode-cfb-min.js"></script>

JS:

var passPhrase = "Secret Phassphrase";

var encrypted = CryptoJS.AES.encrypt("Message", passPhrase, { mode: CryptoJS.mode.CFB });
var decrypted = CryptoJS.AES.decrypt(encrypted, passPhrase, { mode: CryptoJS.mode.CFB });

console.log('encrypted', encrypted);
console.log('decrypted', decrypted.toString(CryptoJS.enc.Utf8));

请在jsFiddle上查看演示


我在服务器端的nodeJS中包含了“mode-cfb-min.js”,并且能够使用cryptoJS在服务器端和客户端进行加密,谢谢! :) - RecycleRobot
在客户端存储passPhrase安全吗?此外,我们在encrypt函数的参数cryptkey中使用的是相同的pass phrase吗? - TechTurtle
1.) 不,将其存储在客户端不安全。上述代码仅用于演示目的。2.) 请查看文档 https://github.com/brix/crypto-js :) - nekman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接