如何使RSACryptoServiceProvider在没有填充的情况下工作(nopadding)?
我需要使C#应用程序与Java应用程序兼容。如何使RSACryptoServiceProvider在没有填充的情况下工作(nopadding)?
Java应用程序使用一个Cipher.getInstance("RSA/ECB/nopadding");
初始化程序来生成密码ECB和无填充。
但是,在C#中,您有2个用于填充的选项:OAEP填充或PKCS#1 v1.5填充。我需要一个没有填充的版本,否则我肯定会卡在我的项目中。
我不认为有任何方法可以使C#.NET RSACryptoServiceProvider使用无填充方案。但是,是否有RSA自定义类或库允许这种精度?
P.S .:默认情况下是C#.NET的RSACryptoServiceProvider ECB?我找不到这方面的文档。
那么,事实是,如果你没有填充,你必须准确地符合块大小。当然,通常情况下正好达到块大小是很奇怪的,因此你需要填充。
你可以随时自己垫一些字符,然后在另一边删除。
究竟是什么原因需要这样做?
在没有填充的情况下执行RSA几乎肯定会给你一个破损的(不安全的)密码系统。如果C#不会让你这样做的话,那么这对C#有利。解决Java方面的问题。
是的,我只能同意这一点。如果没有适当的填充,就不要使用RSA。当不正确使用RSA时,已知有太多已知的攻击。 – Accipitridae 2009-09-08 19:53:43
但是如果我需要计算哈希并通过一些自定义算法添加填充会怎么样?我是否需要使用BigInteger来执行自定义的RSA计算?如此处所述:http://core.telegram.org/mtproto/auth_key – 2013-12-27 11:37:12
这回答了这个问题。 – Steve 2012-01-24 19:56:30