2017-04-18 174 views
-2

我想生成rsa密钥对(公共和私有),然后将它们用于AES加密和解密。用于加密和私钥Decryption.I公钥写了这个简单的代码,但问题是,当我运行这段代码我得到这个错误:如何在golang中使用rsa密钥对进行AES加密和解密

crypto/aes: invalid key size 1639 

我怎么能resove这个问题?我的加密代码如下:

//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 
} 
+0

哪一行产生该错误? – Flimzy

+2

'encrypt()'函数的定义是什么?向我们展示[最小,完整和可验证示例](https://stackoverflow.com/help/mcve) – ymonad

+0

您希望aes密码可以与rsa密钥一起使用吗? – DarkSquirrel42

回答

0

正如评论中所建议的,我搜索了“混合密码术”。而这example已经解决了我的问题。

相关问题