Java(jasypt)中的加密和Node.js中的解密

时间:2019-01-22 19:23:42

标签: java node.js encryption jasypt

正在尝试解密编码的字符串(实际上是使用bouncyCastle提供程序在Java中编码的)。因为我没有在nodejs中看到“ PBEWITHSHA256AND256BITAES-CBC-BC”的等效算法。您能否建议我如何在Node.js中解密cryptocurrencyValue(已在Java中加密)。

我尝试了几种方法,但是找不到解决方法。

从Java: 下面是方法

  1. 充气城堡提供者
  2. 算法#PBEWITHSHA256AND256BITAES-CBC-BC
  3. encodedOutputType为“十六进制”

我们以十六进制字符串形式返回结果。

从Nodejs: 我试图使用nodejs-crypto软件包进行解密。

  1. 从十六进制字符串转换回数组值
  2. 使用pbkdf2sync使用sha256创建密钥
  3. 试图使用crypto.createDecipherIv解密数据 但是以某种方式无法在nodejs中解密。

有人可以建议我采用这种方法吗?

1 个答案:

答案 0 :(得分:0)

该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)确实使用未提及的(内部)模块forge.pbe.generatePkcs12Key(实际上是键 IV)支持PKCS12,该模块很快对我来说是正确的扫描(但未经测试)。