中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

golang中rsa加密怎么實現

小億
146
2024-01-09 17:40:58
欄目: 編程語言

在Golang中,可以使用crypto/rsa包來實現RSA加密。下面是一個簡單的示例代碼:

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
	}

	// 將私鑰保存為PEM格式
	privateKeyPem := &pem.Block{
		Type:  "RSA PRIVATE KEY",
		Bytes: x509.MarshalPKCS1PrivateKey(privateKey),
	}
	privateKeyPemBytes := pem.EncodeToMemory(privateKeyPem)
	fmt.Println("Private key (PEM format):")
	fmt.Println(string(privateKeyPemBytes))

	// 將公鑰保存為PEM格式
	publicKey := &privateKey.PublicKey
	publicKeyDer, err := x509.MarshalPKIXPublicKey(publicKey)
	if err != nil {
		fmt.Println("Failed to convert public key to DER format:", err)
		return
	}
	publicKeyPem := &pem.Block{
		Type:  "PUBLIC KEY",
		Bytes: publicKeyDer,
	}
	publicKeyPemBytes := pem.EncodeToMemory(publicKeyPem)
	fmt.Println("Public key (PEM format):")
	fmt.Println(string(publicKeyPemBytes))

	// 加密數據
	plainText := []byte("Hello, RSA encryption!")
	cipherText, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey, plainText)
	if err != nil {
		fmt.Println("Failed to encrypt data:", err)
		return
	}
	fmt.Println("Cipher text:")
	fmt.Println(cipherText)

	// 解密數據
	decryptedText, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, cipherText)
	if err != nil {
		fmt.Println("Failed to decrypt data:", err)
		return
	}
	fmt.Println("Decrypted text:")
	fmt.Println(string(decryptedText))
}

在上面的示例代碼中,首先生成了一個2048位的RSA密鑰對。然后,將私鑰保存為PEM格式,并打印出來。接著,將公鑰保存為PEM格式,并打印出來。

然后,使用公鑰對數據進行加密,輸出加密后的密文。最后,使用私鑰對密文進行解密,輸出解密后的明文。

注意:在實際應用中,需要妥善保管私鑰,避免私鑰泄露。

0
安平县| 班戈县| 思茅市| 阜平县| 高碑店市| 中卫市| 库车县| 汨罗市| 恩施市| 天祝| 宝坻区| 敦煌市| 建阳市| 望谟县| 涞源县| 龙门县| 搜索| 日照市| 环江| 通榆县| 岚皋县| 东乌珠穆沁旗| 新兴县| 汉川市| 南丹县| 香格里拉县| 博野县| 松桃| 高台县| 黔西县| 聂拉木县| 射洪县| 郸城县| 瑞安市| 西城区| 聂荣县| 安徽省| 崇礼县| 湄潭县| 通榆县| 绥阳县|