91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
登封市| 铅山县| 内丘县| 富民县| 安化县| 阿拉善盟| 镇远县| 拉萨市| 双桥区| 南陵县| 三穗县| 邳州市| 玉溪市| 巴楚县| 东丰县| 万源市| 固原市| 土默特左旗| 梧州市| 洛南县| 西青区| 奇台县| 大足县| 梁河县| 凭祥市| 澄江县| 平塘县| 万载县| 哈尔滨市| 桦南县| 台南市| 永胜县| 萍乡市| 正镶白旗| 麟游县| 获嘉县| 新营市| 宜春市| 英吉沙县| 台江县| 合作市|