有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

节点。java中的js加密(jasypt)和nodejs中的解密

我正在尝试解密编码的字符串(它实际上是使用bouncyCastle提供程序在java中编码的)。因为我在nodejs中没有看到“pbewithsha256和256biates-CBC-BC”的等效算法。你能告诉我如何在nodejs中解密encryptedValue(用java加密)吗

我尝试了几种方法,但没有找到解决办法

来自Java: 以下是方法

  1. bouncyCastle提供商
  2. Algo#PBEWITHSA256和256BITAES-CBC-BC
  3. 将DOUTPUTTYPE编码为“十六进制”

我们得到的结果是字符串,它是十六进制字符串

来自Nodejs: 我试图用nodejs加密包解密

  1. 从十六进制字符串转换回数组值
  2. 使用pbkdf2sync使用sha256创建密钥
  3. 试图用密码解密数据。createDecipherIv 但不知何故,我无法在nodejs中解密

谁能给我建议一下方法吗


共 (1) 个答案

  1. # 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(实际上是keyIV),这在快速扫描(但未测试)中对我来说是正确的