在 Golang 中如何实现 RSA 算法的加解密操作?
在 Golang 中,可以使用标准库 crypto
来实现 RSA 加解密。以下是一个简单的例子:
首先,你需要生成 RSA 密钥对,或者获取现有的公钥和私钥。
// 生成 RSA 密钥对
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
log.Fatal(err)
}
publicKey := &privateKey.PublicKey
接下来,使用公钥加密和私钥解密:
// 使用公钥加密
cipherText, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey, []byte("Your Message"))
if err != nil {
log.Fatal(err)
}
// 使用私钥解密
plainText, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, cipherText)
if err != nil {
log.Fatal(err)
}
请注意,上述代码示例使用了 PKCS#1 v1.5 签名模式,它适用于较小的消息。对于较大的消息,你应该使用 OAEP 模式。
// 使用公钥加密(OAEP)
cipherText, err := rsa.EncryptOAEP(sha256.New(), rand.Reader, publicKey, []byte("Your Message"), nil)
if err != nil {
log.Fatal(err)
}
// 使用私钥解密(OAEP)
plainText, err := rsa.DecryptOAEP(sha256.New(), rand.Reader, privateKey, cipherText, nil)
if err != nil {
log.Fatal(err)
}
以上代码展示了如何在 Golang 中生成 RSA 密钥对,使用公钥加密数据,以及使用私钥解密数据。在实际应用中,密钥对的管理和安全传输更为重要。
评论已关闭