节点。java中的js加密(jasypt)和nodejs中的解密
我正在尝试解密编码的字符串(它实际上是使用bouncyCastle提供程序在java中编码的)。因为我在nodejs中没有看到“pbewithsha256和256biates-CBC-BC”的等效算法。你能告诉我如何在nodejs中解密encryptedValue(用java加密)吗
我尝试了几种方法,但没有找到解决办法
来自Java: 以下是方法
- bouncyCastle提供商
- Algo#PBEWITHSA256和256BITAES-CBC-BC
- 将DOUTPUTTYPE编码为“十六进制”
我们得到的结果是字符串,它是十六进制字符串
来自Nodejs: 我试图用nodejs加密包解密
- 从十六进制字符串转换回数组值
- 使用pbkdf2sync使用sha256创建密钥
- 试图用密码解密数据。createDecipherIv 但不知何故,我无法在nodejs中解密李>
谁能给我建议一下方法吗
# 1 楼答案
PBE方案不是PBKDF2(PKCS8)的一个实例;这是PKCS12 PBE方案的一个例子,该方案在概念上相似,但在细节上非常不同,这在加密中至关重要。你可以通过查找OID:https://www.bouncycastle.org/oids.html:-)来“轻松地”判断这一点
我没有看到任何迹象表明nodejs crypto公开了这个方案,即PKCS12,尽管它在内部使用了OpenSSL,后者确实实现了这两个方案
您可以按照RFC 7292 Appendix B and C中的规范自己编写代码(事实上,尽管文档称它已被弃用,但它仍然被广泛使用)
或者https://github.com/digitalbazaar/forge(纯js)确实支持PKCS12使用未提及的(内部)模块
forge.pbe.generatePkcs12Key
(实际上是key和IV),这在快速扫描(但未测试)中对我来说是正确的