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

时间:2017-11-19 18:22:46

标签: go encryption rsa

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

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

  • 接收以base64编码的公钥
  • 将此公钥从base64解码为字节
  • 导入该公钥,以便Go的RSA实现可以使用它 (现阶段存在问题)
  • 使用以下方法加密AES密钥

    ciphertext, err := rsa.EncryptOAEP(sha256.New(), rand.Reader, publicKey, plaintextBytes, []byte(""))

提前谢谢!

必须使用 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
}

然后,您可以使用publicKey与RSA进行加密。

1 个答案:

答案 0 :(得分:0)

当您收到base64编码的密码时,您的解码就像:

base64.StdEncoding.DecodeString("FExEiYPgwrHHyO7DOwCXHNRvVF2S8xirXftuFWmJUzo=")

然后,您加密的字符串不得超过公共模数的长度减去哈希长度的两倍,减去2。有关示例和文档,请参阅docs