Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption 在Go中使用RSA进行密钥交换的AES加密通信_Encryption_Go_Aes_Rsa - Fatal编程技术网

Encryption 在Go中使用RSA进行密钥交换的AES加密通信

Encryption 在Go中使用RSA进行密钥交换的AES加密通信,encryption,go,aes,rsa,Encryption,Go,Aes,Rsa,我正在尝试在基于Ruby Sinatra的web后端和Google Go应用程序之间建立安全通信。 Go应用程序包含公钥,并最初打开连接。然后,它用公钥加密随机生成的AES,并将其发送到web后端。所有即将到来的(大尺寸)数据都将使用AES密钥加密。 一般来说,这是一种可用的方法吗 Go代码如下所示 aesRand := make([]byte, 32) rand.Read(aesRand) AESBlock, _ = aes.NewCipher(aesRand) // Encrypt AES

我正在尝试在基于Ruby Sinatra的web后端和Google Go应用程序之间建立安全通信。 Go应用程序包含公钥,并最初打开连接。然后,它用公钥加密随机生成的AES,并将其发送到web后端。所有即将到来的(大尺寸)数据都将使用AES密钥加密。 一般来说,这是一种可用的方法吗

Go代码如下所示

aesRand := make([]byte, 32)
rand.Read(aesRand)
AESBlock, _ = aes.NewCipher(aesRand)

// Encrypt AES key with RSA
data, err := rsa.EncryptPKCS1v15(rand.Reader, PubKey, aesRand)
现在的问题是,加密并通过线路发送随机字节是正确的,还是我应该加密并发送AES块


提前谢谢

您应该使用RSA加密并发送
aesRand
密钥

你还需要通过静脉注射,这取决于你使用的是哪种药物

len(KEY)+len(IV)必须小于len(PubKey),前提是您要在初始RSA事务中将它们一起加密

仔细阅读本手册,注意每种模式的缺点。您应该使用来解密上述内容。请注意有关在新协议中使用RSA-OAEP的注释


如果您将此作为一种学习体验,那么很好,但如果这是一种保护信息的代码,如果泄露会花费大量金钱,那么我将使用它在经过良好测试的框架中完成上述所有工作和更多工作。

好的,看起来添加应用程序层安全性确实不是一个好主意。我只使用HTTPS。