作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试过在 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中执行加密?
最佳答案
你需要在两端做同样的事情。您需要相同的 key 。您需要相同的模式 (CBC)、相同的填充(使用 PKCS7)以及相同的 IV。
在通过 SHA-256 运行密码后,通过显示十六进制来检查您使用的实际 key 在两端是否相同。还要检查 IV 的十六进制。不要使用任何默认值,但明确选择要使用的模式和填充。
如果您认为 PBE/SHA-256 出了问题,那么您可能需要查看文本密码是如何转换为字节的。在传递给 SHA-256 之前再次检查两侧的十六进制。将文本转换为字节是常见的错误来源。您需要非常确定 stringToBytes()
正在做什么,并且您在 Java 端使用的任何内容都完全相同执行相同的操作。
关于java - BouncycaSTLe PBEWITHSHA256AND256BITAES-CBC-BC Javascript 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471635/
我是一名优秀的程序员,十分优秀!