gpt4 book ai didi

c# - 我应该如何/应该使用 RSA (RSACryptoServiceProvider) 加密可变大小的数据

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:39 24 4
gpt4 key购买 nike

在我的研究中,我发现了关于这个主题的混合信息,因此我正在寻找专业知识来解释加密可变数据量的最佳方法。

要求:

[编辑:添加附加要求 #3 以响应评论]

  1. 我想使用 RSA 作为公钥/私钥加密方案这样我就可以将公钥分发给应该加密数据但不知道如何解密

  2. 我需要支持 16 个字符的数据长度(信用卡数字)到千字节(序列化对象)甚至更多。大部分的 我加密的数据会很小(信用卡、地址等)。

  3. 这是为了加密静态数据。

我知道的选项:

  1. RSA-ONLY:使用 RSACryptoServiceProvider 使用公钥加密所有数据。遍历小于键大小的 block 中的数据负填充。

  2. HYBRID:使用AesCryptoServiceProvider加密数据,调用.GenerateKey().GenerateIV() 生成随 secret 钥和 IV。然后使用RSACryptoServiceProvider加密上面的key和IV并将其添加到数据中。

在我看来,混合方法让我两全其美。强分组密码 (AES) 和分布式公钥 (RSA)。

这些方法的优缺点是什么?标准是什么?令人惊讶的是,我没有找到关于这个主题的太多意见或信息,如果你有任何引用,我将不胜感激。

奖励:由于各种原因,包括公司许可限制,我自己推出了自己的产品,但我很好奇是否有适用于 C# 的良好标准开源方法。

最佳答案

在大多数情况下,RSA 用于加密对称 key (您实际上并不需要加密 IV,但是嘿...)

如果您使用 RSA 加密数据(而不是 key ),您可能会遇到在对称 block 密码上下文中已知的 ECB(电子密码本模式)问题:对于给定的 key ,明文总是映射到相同的密文……仅凭这一点并不能帮助破解加密,但它可能会泄露信息,因为攻击者可以识别哪些数据包包含相同的明文

我会选择混合方法,因为它适用于任意大小的数据,并且不会容易出现这种信息泄漏,除非您选择 ECB 作为操作模式(CBC - Cypher Block Chaining 模式 - 应该这样做)

关于c# - 我应该如何/应该使用 RSA (RSACryptoServiceProvider) 加密可变大小的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272063/

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