如何使RSACryptoServiceProvider无需填充(nopadding)?

时间:2009-09-08 02:19:51

标签: c# java encryption rsa

我需要使C#应用程序与Java应用程序兼容。

Java应用程序使用Cipher.getInstance("RSA/ECB/nopadding");初始化程序来生成密码ECB和无填充。

但是,在C#中,您有2个填充选项:OAEP填充或PKCS#1 v1.5填充。我需要一个无填充版本,否则我肯定会陷入我的项目中。

我认为没有办法让C#.NET RSACryptoServiceProvider使用无填充方案。但是,是否存在允许此精度的RSA自定义类或库?

P.S。:默认情况下是C#.NET的RSACryptoServiceProvider ECB吗?我找不到相关文档。

3 个答案:

答案 0 :(得分:3)

使用OpenSSL.NET将使填充无法使用。但是,我无法使其发挥作用(See this question if you want to help me make it work

答案 1 :(得分:1)

在没有填充的情况下执行RSA几乎肯定会让您遇到破解(不安全)的密码系统。如果C#不允许你这样做,那么这就是C#的优势所在。将Java端修复。

答案 2 :(得分:0)

嗯,事实是如果你没有填充,你必须准确地满足块大小。当然,通常精确地达到块大小是很奇怪的,因此你可以填充。

您可以随时自行填充,然后使用一些字符将其删除。

究竟是什么原因需要这样做?