当前位置: 首页 > 面试题库 >

如何使用Go编程语言使用从PEM文件读取的RSA私钥进行加密?

湛文乐
2023-03-14
问题内容

我该如何等效于以下c ++代码?

RSA *key = PEM_read_RSAPrivateKey(f, NULL, NULL, NULL);
std::vector<CK_BYTE> out(128);
RSA_private_encrypt(in.size(), &in[0], &out[0], key, RSA_PKCS1_PADDING)

我看过Go
rsa软件包
。看起来EncryptPKCS1v15()可能等同于RSA_private_encrypt()。但是除了GenerateKey()之外,我看不到如何创建一个PrivateKey对象,该对象(可以通过查看源代码来确认)使用随机质数生成一个。

我是否需要弄清楚如何解码PEM文件,以便提取出PrivateKey字段的值?

更新: 与上述Python中的C ++代码等效:

from M2Crypto import RSA
rsa_private_key = RSA.load_key('privkey.pem')
encrypted = rsa_private_key.private_encrypt(digest, RSA.pkcs1_padding)

Go中是否存在现有的等效项?


问题答案:

等效功能似乎是SignPKCS1v15。该功能ParsePKCS1PrivateKey在加密/
X509
包似乎是最接近你需要在现有的私有密钥读什么,但我不知道该PEM格式是完全兼容的,它必须是此工作。



 类似资料:
  • 我有一个私钥文件(PEM BASE64编码)。我想用它来解密一些其他数据。使用Java我试着读取文件并解码其中的BASE64编码数据。这是我尝试的代码片段.... 我得到以下错误 类似的问题已经贴在这里,但那些对我没有用。几乎所有的人都建议使用Bouncycastle provider,而Bouncycastle provider并不愿意使用FIPS兼容的provider,并且不确定BC prov

  • 我使用RSA_public_encrypt函数发送加密数据到套接字。我正在读取公钥。使用"pkey=PEM_read_PUBKEY(f, NULL, NULL, NULL);"函数的PEM文件。从上面的函数中检索的pkey是类型EVP_PKEY*,我不能在函数RSA_public_encrypt中使用。(RSA_public_encrypt使用RSA*类型密钥) 如何将EVP_PKEY*PKEY转

  • 问题内容: 我有一个私钥文件(PEM BASE64编码)。我想在其他地方使用它解密其他数据。使用Java,我尝试读取文件并解码其中的BASE64编码数据。这是我尝试的代码段。 import java.io.; import java.nio.ByteBuffer; import java.security. ; import java.security.spec.PKCS8EncodedKeySp

  • 问题内容: 给定此文件(使用openssl生成并使用密码加密): 如何使用Java 获取对象?我编写了以下代码,但是找不到正确的方法来获取: 我想我应该构建一个,但我不知道如何。我尝试了这个答案和另一个答案中的方法,但是它们在解析字节数组时都导致错误。 问题答案: 我正在使用 BouncyCastle 1.57 (bcprov-jdk15on,bcmail-jdk15on和bcpkix-jdk15

  • 我在尝试初始化RSA密码时遇到Scala错误: 我正在尝试读取包含公钥和私钥的PEM文件。在Bouncy城堡中读取pem文件时,我在初始化中传递与key相同的信息时出错。 我的PEM文件: 错误需要哪些更改 我的代码: 错误: 重载方法值初始化(x1美元:Int,x2美元:java.security.cert.证书)单位(x1美元:Int,x2美元:java.security.密钥)单位不能应用于

  • 给定这个文件(使用openssl生成并使用密码加密): 如何在Java中获得一个< code>PrivateKey对象?我编写了以下代码,但是我找不到获取< code>KeySpec的正确方法: 我想我应该构建一个<code>RSAPrivateKeySpec</code>,但我不知道怎么做。我尝试了这个答案和另一个答案中的方法,但在解析字节数组时,它们都会导致错误。