Goland最新版激活成功,可以写代码了

好的,这是一个关于Go语言中RSA加密的示例代码:

```go

package main

import (

"crypto/rand"

"crypto/rsa"

"crypto/sha256"

"crypto/x509"

"encoding/pem"

"fmt"

)

func main() {

// 生成RSA密钥对

privateKey, err := rsa.GenerateKey(rand.Reader, 2048)

if err != nil {

panic(err)

}

// 将私钥序列化为PEM格式

privateKeyBytes := x509.MarshalPKCS1PrivateKey(privateKey)

privateKeyPEM := pem.EncodeToMemory(&pem.Block{

Type: "RSA PRIVATE KEY",

Bytes: privateKeyBytes,

})

// 打印私钥

fmt.Println(string(privateKeyPEM))

// 将公钥序列化为PEM格式

publicKeyBytes, err := x509.MarshalPKIXPublicKey(&privateKey.PublicKey)

if err != nil {

panic(err)

}

publicKeyPEM := pem.EncodeToMemory(&pem.Block{

Type: "RSA PUBLIC KEY",

Bytes: publicKeyBytes,

})

// 打印公钥

fmt.Println(string(publicKeyPEM))

// 要加密的明文

plaintext := []byte("Hello, world!")

// 使用公钥加密明文

ciphertext, err := rsa.EncryptOAEP(sha256.New(), rand.Reader, &privateKey.PublicKey, plaintext, nil)

if err != nil {

panic(err)

}

// 打印密文

fmt.Printf("加密后的密文:%x

", ciphertext)

// 使用私钥解密密文

decrypted, err := privateKey.Decrypt(nil, ciphertext, &rsa.OAEPOptions{Hash: sha256.New()})

if err != nil {

panic(err)

}

// 打印解密后的明文

fmt.Printf("解密后的明文:%s

", decrypted)

}

```

这段代码首先生成一个2048位的RSA密钥对,然后将私钥和公钥序列化为PEM格式并打印出来。接着,使用公钥加密一个明文,并打印出密文。最后使用私钥解密密文,并打印出明文。