我正试图在基于Ruby的web后端和Google应用程序之间建立一个安全的通信。Go应用程序包含公钥,并最初打开连接。然后用它的公钥对随机生成的AES进行加密,并将其发送到web后端。所有即将出现的(大型)数据都将使用AES密钥进行加密。一般来说,这是一种有用的方法吗?
围棋代码如下所示
aesRand := make([]byte, 32)
rand.Read(aesRand)
AESBlock, _ = aes.NewCipher(aesRand)
// Encrypt AES key with RSA
data, err := rsa.EncryptPKCS1v15(rand.Reader, PubKey, aesRand)现在的问题是,通过行加密和发送随机字节是正确的,还是我应该加密并发送AESBlock?
提前感谢!
发布于 2014-08-23 09:19:39
您应该使用RSA加密和发送aesRand (也称为密钥)。
您还需要传递一个IV,这取决于您所使用的密码模式。
len(KEY) + len(IV)必须小于len(PubKey),前提是您要在初始的RSA事务中对它们进行加密。
仔细阅读rsa模块的docs,注意每种模式的缺点。您应该使用DecryptPKCS1v15SessionKey来解密上面的内容。请注意在新协议中使用RSA-OAEP的注释。
如果您将此作为一种学习体验,那么很好,但如果代码是为了保护信息,如果受到损害,那么我将使用TLS,它将在经过良好测试的框架中完成上述所有操作,并进行更多的操作。
https://stackoverflow.com/questions/25460231
复制相似问题