gpt4 book ai didi

encryption - 在 Go 中使用 RSA 进行 key 交换的 AES 加密通信

转载 作者:数据小太阳 更新时间:2023-10-29 03:07:25 25 4
gpt4 key购买 nike

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

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)

现在的问题是,通过线路加密并发送随机字节是否正确,还是我应该加密并发送 AESBlock?

提前致谢!

最佳答案

您应该使用 RSA 加密并发送 aesRand,也称为 key 。

您还需要根据哪个 crypto mode 传递 IV你正在使用。

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

阅读docs for the rsa module仔细注意每种模式的弱点。你应该使用 DecryptPKCS1v15SessionKey解密以上内容。请注意有关在新协议(protocol)中使用 RSA-OAEP 的评论。

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

关于encryption - 在 Go 中使用 RSA 进行 key 交换的 AES 加密通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25460231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com