RSA加密 C#

3
我有一个使用默认RSACryptoServiceProvider类进行RSA加密的C#类。但是我有一个疑虑:如果您输入的是单词"hello",并且加密后的字符串返回为"ABCDE",如果您再次使用相同的RSA密钥(公钥和私钥)对输入的"hello"进行加密,输出是否仍然是"ABCDE"?
提前感谢。

Ryan,我的回答有什么不足之处吗? - mikek
1个回答

5

事实上,RSA是一种确定性加密算法,因此在给定相同的密钥和明文的情况下,输出的加密文本将是相同的。通常使用填充方案使RSA具有语义安全性。

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

编辑:

当然,您选择的填充方案也需要非常伪随机。OAEP是其中一个常用的方案。


值得注意的是,由于这个原因,如果攻击者拥有足够的数据且数据未经填充,RSA就容易受到统计分析的攻击。因此,像SSH这样的协议使用RSA进行身份验证,而使用不同的算法进行数据加密。 - Simon Lindgren
但是填充方案也是确定性的吗? - H H
@Henk Holterman:那样做有点儿傻,不是吗? :P - mikek
我也这么认为。但是对于原始问题来说,这意味着什么? - H H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接