当前位置: 首页 > 知识库问答 >
问题:

从Java到NodeJS的RSA公钥

刘选
2023-03-14

我在NodeJS中使用Java的公钥加密时遇到了一些麻烦。

我在keytool中创建了一个RSA密钥,并将公钥作为base64编码字符串输出。

Base64.Encoder encoder = Base64.getEncoder();
byte[] pubKeyBytes = publicKey.getEncoded();
String pubKeyBase64 = encoder.encodeToString(pubKeyBytes);

然后取base64编码的公钥,用-----begin public key---------end public key-----封装,并用它加密,然后base64编码节点内的字符串。

const encryptedBuffer = crypto.publicEncrypt(encodedPublicKey, buffer);
const encryptedEncodedText = encryptedBuffer.toString("base64");

任何帮助都将不胜感激!

共有1个答案

邹博裕
2023-03-14

经过大量的搜索和测试,结果是一个填充问题。

提供给节点did的公钥未被传递密码短语,因此根据文档,它默认为rsa_pkcs1_oaep_padding:

加密

在Java端进行解密时,需要如下方式通知Java那个填充:

Cipher cipher = Cipher.getInstance("RSA/NONE/OAEPPadding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
 类似资料:
  • 问题内容: 我用以下方法生成了一个私钥: 在此之后,我生成了一个公共密钥: 我想使用私钥对某些消息进行签名,并使用诸如此类的代码对其他私钥进行验证: 我找到了一种将私钥转换为PKCS8格式并加载它的解决方案。它可以与以下代码一起工作: 最后,我的问题是:如何从文件加载RSA公钥? 我认为也许我需要将我的公共密钥文件转换为x509格式,然后使用。但是我该怎么办呢? 问题答案: 下面是从相关信息的链接

  • 我正在使用密钥对模块 它可以正常工作创建公钥和私钥 我的公钥: 我正在使用Jsencrypt 使用那个公钥不起作用..数据未加密 但是jsencrypt生成公钥工作正常。你可以帮我吗? 如何使用我的生成密钥对RSA公钥在js加密?

  • 我有以下公钥(作为示例): 我需要能够将其转换为可以插入ssh known_hosts文件的格式。例如: 谢了!

  • 作为标题,如何在Java中从SSH RSA公钥计算指纹?我从sample.pub获得了一个rsaPublicKey对象,并使用库Apache Commons Codec但当使用ssh-keygen命令sample.pub时,我得到了不同的指纹,如下所示

  • 我已生成一个私钥,其中包含: 在此之后,我生成了一个公钥: 我想使用我的私钥对一些消息进行签名,并使用我的公钥验证一些其他消息,代码如下: 我找到了一个将私钥转换为PKCS8格式并加载的解决方案。它适用于以下代码: 最后我的问题是:如何从文件中加载RSA公钥? 我想可能需要将公钥文件转换为x509格式,并使用。但是我该怎么做呢?

  • 我们如何加载他们的公钥?