如何在Golang中使用RSA密钥对进行AES加密和解密

我想生成rsa密钥对(公共和私有),然后将它们用于AES加密和解密。例如,用于加密的公共密钥和用于解密的私有密钥。我为此编写了一个简单的代码,但是问题是当我运行时这段代码我得到这个错误:

crypto/aes: invalid key size 1639

我该如何解决这个问题?我的加密代码如下:

//genrarting private key

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

if err != nil {

return

}

privateKeyDer := x509.MarshalPKCS1PrivateKey(privateKey)

privateKeyBlock := pem.Block{

Type: "RSA PRIVATE KEY",

Headers: nil,

Bytes: privateKeyDer,

}

privateKeyPem := string(pem.EncodeToMemory(&privateKeyBlock))

//using privateKeyPem for encryption

text := []byte("My name is Astaxie")

ciphertext, err := encrypt(text, []byte(privateKeyPem))

if err != nil {

// TODO: Properly handle error

log.Fatal(err)

}

fmt.Printf("%s => %x\n", text, ciphertext)

//Definition of encrypt()

func encrypt(plaintext []byte, key []byte) ([]byte, error) {

c, err := aes.NewCipher(key)

if err != nil {

return nil, err

}

gcm, err := cipher.NewGCM(c)

if err != nil {

return nil, err

}

nonce := make([]byte, gcm.NonceSize())

if _, err = io.ReadFull(rand.Reader, nonce); err != nil {

return nil, err

}

return gcm.Seal(nonce, nonce, plaintext, nil), nil

}

回答:

如评论中所建议,我搜索了“混合密码术”。这个例子解决了我的问题。

以上是 如何在Golang中使用RSA密钥对进行AES加密和解密 的全部内容, 来源链接: utcz.com/qa/420476.html

回到顶部