亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
景东| 方城县| 普定县| 四子王旗| 屏南县| 莫力| 彰化市| 余江县| 新余市| 色达县| 呈贡县| 呼和浩特市| 冷水江市| 封开县| 万载县| 盖州市| 外汇| 乐亭县| 天全县| 渑池县| 石泉县| 武安市| 健康| 荥经县| 长寿区| 淮南市| 保康县| 渝中区| 会同县| 随州市| 进贤县| 禄丰县| 玛多县| 东乡族自治县| 江山市| 兴业县| 和平县| 孟连| 韩城市| 长武县| 阳东县|