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

导入字符串RSA公钥以在Go中使用RSA加密

廖华翰
2023-03-14

如何从Go中的字符串导入RSA公钥,以便用于加密数据?

我的程序应该执行以下操作:

>

  • 接收一个用Base64编码的公钥
  • 将此公钥从Base64解码为字节
  • 导入公钥,以便Go的RSA实现可以使用(问题在这个阶段)
  • 加密AES密钥:

    密文,错误:=rsa。EncryptOAEP(sha256.New(),兰德。读卡器,公钥,明文字节,[]字节(“”)

    提前谢谢!

    解决方案:

    公钥必须使用crypto/x509包进行解码。

    例如:

    publicKeyInterface, err := x509.ParsePKIXPublicKey(publicKeyDER)
    if err != nil {
        log.Println("Could not parse DER encoded public key (encryption key)")
        return []byte(""), err
    }
    publicKey, isRSAPublicKey := publicKeyInterface.(*rsa.PublicKey)
    if !isRSAPublicKey {
        log.Println("Public key parsed is not an RSA public key")
        return []byte(""), err
    }
    

    然后可以使用带有RSA的public Key进行加密。

  • 共有1个答案

    都飞跃
    2023-03-14

    当您收到base64编码密码时,您的解码方式如下:

    base64.StdEncoding.DecodeString("FExEiYPgwrHHyO7DOwCXHNRvVF2S8xirXftuFWmJUzo=")
    

    然后加密的字符串必须不超过公共模数的长度减去散列长度的两倍,减去2。有关示例和留档,请参阅文档。

     类似资料:
    • 我有一个RSA公钥证书。我可以使用具有。PEM扩展名或仅将其用作具有以下格式的字符串: 启动RSA公共密钥 {KEY} -----结束RSA公钥----- 我试图使用此密钥向服务器发送加密的JSON。我尝试了许多其他相关堆栈溢出问题的解决方案,但没有一个答案不适合我。这个答案似乎有道理https://stackoverflow.com/a/43534042,但有些东西不能正常工作,可能是因为X50

    • 我想得到一个文件内容的公钥,这是一个文件内容看起来像什么的例子(用生成): 如果我是对的,这不是公钥,但是可以从这个字符串中获取公钥。 这个答案回答了我的问题https://stackoverflow.com/a/19387517/2735398 但答案似乎不起作用。我有个例外: 当看到答案的评论时,我不是唯一有问题的人... 如何修复异常?或者有没有其他方法可以从字符串中获取公钥?

    • 问题内容: 因此,我正在使用Spongy Castle(Android)为RSA公钥生成PEM编码的字符串,并将其上传到服务器。这是我目前正在做的: 现在,您可能已经知道,我不确定如何构造或是否有更简单的方法来执行此操作。 当使用Bouncy Case时,我曾经这样做过 但是由于某种原因,海绵城堡中不存在PEMWriter类 问题答案: 好的,这可能不是最聪明的方法(或者也许是?),但是在检查了此

    • 在那里~我是新来的flutter开发,我试图使用Node.js服务器发送一个公钥到flutter加密密码但是,它就是不工作,我试图通过JSON格式或通过PEM文件的flutter和使用[Flutter]-加密和[Flutter]-simple_rsa库做加密,但它仍然不能工作。我怎么能这么做?请帮忙,多谢。 [Node.js]-使用[Node rsa]创建密钥[Flatter]-使用[encryp

    • 问题内容: 我正在编写一个用于传输文件的小型应用程序,或多或少地将其作为一种学习更多编程加密基础的方法。这个想法是生成一个RSA密钥对,交换公共密钥,并发送AES iv和密钥以进一步解密。我想用接收者的RSA公钥加密AES密钥,如下所示: 然后,我将密钥值写给接收器,并按如下方式解密: 在控制台的另一端,我将其作为输出: 此外,如果我创建一个大小为16的字节数组,并将cipher.doFinal(