RSA 加密 C#

Posted

技术标签:

【中文标题】RSA 加密 C#【英文标题】:RSA Encryption C# 【发布时间】:2010-03-14 08:29:04 【问题描述】:

我有一个在 C# 中进行 RSA 加密的类,我使用了默认的 RSACryptoServiceProvider 类。但我对以下内容有疑虑;如果您有单词 hello 作为输入并且加密的字符串返回为 ABCDE,如果您对输入 hello 执行另一个加密操作,则对 RSA 使用相同的密钥(公钥和私钥)输出是否会再次为 ABCDE?

提前致谢

【问题讨论】:

瑞恩,我的回答有什么不足吗? 【参考方案1】:

确实,RSA是一种确定性加密算法,所以给定相同的密钥和明文,就会输出相同的密文。 RSA 通常与填充方案一起使用以保证语义安全。

这当然只是一般情况。我不能保证 C# 中的 RSACryptoServiceProvider

编辑:

当然,您选择的填充方案也必须是相当伪随机的。 OAEP 是一种常用的。

【讨论】:

值得注意的是,因此,如果攻击者有足够的数据并且没有填充数据,RSA 很容易受到统计分析的影响。出于这个原因,SSH 等协议使用 RSA 进行身份验证,并使用不同的算法进行数据加密。 但是填充方案也是确定性的吗? @Henk Holterman:这有点傻,不是吗? :P 我是这么认为的。但这对原始问题意味着什么?

以上是关于RSA 加密 C#的主要内容,如果未能解决你的问题,请参考以下文章

C#中RSA加密解密

C#中RSA加密解密和签名与验证的实现

C# BouncyCastle RSA 加密和解密

(转)C#实现RSA非对称加密解密

非对称加密RSA的C#实现

使用模数和公共指数的 C# RSA 加密