如何从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进行加密。
答案 0 :(得分:0)
当您收到base64编码的密码时,您的解码就像:
base64.StdEncoding.DecodeString("FExEiYPgwrHHyO7DOwCXHNRvVF2S8xirXftuFWmJUzo=")
然后,您加密的字符串不得超过公共模数的长度减去哈希长度的两倍,减去2。有关示例和文档,请参阅docs。