Bouncycastle PBEWITHSHA256AND256BITAES-CBC-BC Javascript实现

时间:2011-09-19 13:22:57

标签: java javascript encryption aes bouncycastle

我已经尝试但未能在Javascript中编码字符串以在java服务器上解码。我们想用bouncycastle算法PBEWITHSHA256AND256BITAES-CBC-BC来解码服务器端。

我尝试使用crypto.js使用以下代码进行编码:

  var encrypted = Crypto.AES.encrypt("it was Professor Plum in the library with the candlestick", 
        key, 
        { mode: new Crypto.mode.CBC });

   var encryptedString = Crypto.util.bytesToHex(Crypto.charenc.Binary.stringToBytes(crypted));

然而,这不能在服务器上正确解码,我的猜测是它与SHA256有关但我无法弄清楚它会消化什么&找不到任何文件。有谁知道如何在JavaScript中执行加密?

1 个答案:

答案 0 :(得分:1)

你需要在两端做同样的事情。你需要相同的密钥。您需要相同的模式(CBC),您需要相同的填充(使用PKCS7),您需要相同的IV。

在通过SHA-256运行密码短语后,通过显示十六进制来检查您使用的实际密钥在两端是否相同。检查IV的十六进制。不要使用任何默认值,而是明确选择要使用的模式和填充。

如果您认为PBE / SHA-256出错了,那么您可能需要查看文本密码被转换为字节的方式。再次,在传递给SHA-256之前检查两侧的十六进制。将文本转换为字节是常见的错误来源。您需要非常确定stringToBytes()正在做什么,而且您在Java端使用的任何内容都是完全相同。