首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java的RSA/ECB/OAEPWithSHA-256AndMGF1在Node.js中的等效填充

Java的RSA/ECB/OAEPWithSHA-256AndMGF1在Node.js中的等效填充
EN

Stack Overflow用户
提问于 2018-12-18 14:10:41
回答 2查看 5.6K关注 0票数 5

数据解密将使用RSA/ECB/OAEPWithSHA-256AndMGF1Padding算法在JAVA中运行。因此,我必须使用与RSA/ECB/OAEPWithSHA-256AndMGF1Padding等价的算法在node.js中使用公钥加密数据。

我尝试使用crypto.publicEncrypt(key, buffer),它使用了与上述算法不同的crypto.constants.RSA_PKCS1_OAEP_PADDING。因此,我需要相当于“RSA/ECB/OAEPWithSHA-256 AndMGF1填充”的算法,或者如何在node.js中实现相同的算法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-03 14:21:56

我终于找到了答案。相当于“RSA/ECB/OAEPWithSHA-256 AndMGF1填充”可以通过节点伪造npm模块实现。https://www.npmjs.com/package/node-forge#rsa

代码语言:javascript
复制
    // encrypt data with a public key using RSAES-OAEP/SHA-256/MGF1-SHA-1
// compatible with Java's RSA/ECB/OAEPWithSHA-256AndMGF1Padding
var encrypted = publicKey.encrypt(bytes, 'RSA-OAEP', {
  md: forge.md.sha256.create(),
  mgf1: {
    md: forge.md.sha256.create()
  }
});

谢谢

票数 7
EN

Stack Overflow用户

发布于 2018-12-18 16:39:12

首先,您不应该使用"ECB“模式密码,因为:

  1. 欧洲央行是一种分组密码模式,RSA不是一种基于这种操作模式的算法。
  2. 如果您使用基于该操作模式的算法(例如AES),则不应该使用ECB,因为它没有IV (初始化向量),因此它是不安全的,密码分析器可能会破坏密码。如果您想要共享外部系统的敏感信息并防止Oracle填充,可以使用CBC,它有IV或GCM。我建议您访问以下链接:

MSC61-J.不要使用不安全或弱密码算法。

因此,在本例中,您只需要使用OAEP进行RSA加密,因为这是一种填充方案,它有助于防止Oracle用于异步算法,然后将代码更改为:RSA/None/OAEPWithSHA-256AndMGF1Padding。也许,您可以获得与Node.js的兼容性。此外,我建议您访问官方网站:

JCA参考指南

我希望这些信息对你有帮助。

祝好运。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53834903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档