Go语言实现RSA公钥加密和私钥解密
在后端使用Go语言实现相同的公钥加密和私钥解密,你可以使用Go语言的Crypto包来实现加密和解密操作。以下是一个简单的示例代码:
package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"fmt"
)
func main() {
// 生成RSA密钥对
privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil {
fmt.Println("Failed to generate RSA key pair:", err)
return
}
publicKey := &privateKey.PublicKey
// 将公钥导出为PEM格式
publicKeyPEM := pem.EncodeToMemory(&pem.Block{
Type: "RSA PUBLIC KEY",
Bytes: x509.MarshalPKCS1PublicKey(publicKey),
})
// 前端传递的加密数据
encryptedData := []byte("...")
// 使用私钥解密
decryptedData, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, encryptedData)
if err != nil {
fmt.Println("Failed to decrypt data:", err)
return
}
fmt.Println("Decrypted data:", string(decryptedData))
}
在上述示例中,我们首先生成一个RSA密钥对,然后使用私钥解密前端传递的加密数据。要注意的是,前端加密的数据应该是使用公钥加密的,因此在前端使用JSEncrypt加密时,需要将公钥传递给前端。
你可以使用publicKeyPEM变量将公钥以PEM格式传递给前端。在前端加密数据时,使用该公钥进行加密。然后,通过后端使用私钥解密加密的数据。
请注意,此示例仅用于演示目的。在实际应用中,你可能需要将公钥和私钥存储在安全的地方,并使用更复杂的加密方案来保护数据的安全性。
原文地址: https://www.cveoy.top/t/topic/pkqq 著作权归作者所有。请勿转载和采集!