我需要使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吗?我找不到相关文档。
答案 0 :(得分:3)
使用OpenSSL.NET将使填充无法使用。但是,我无法使其发挥作用(See this question if you want to help me make it work)
答案 1 :(得分:1)
在没有填充的情况下执行RSA几乎肯定会让您遇到破解(不安全)的密码系统。如果C#不允许你这样做,那么这就是C#的优势所在。将Java端修复。
答案 2 :(得分:0)
嗯,事实是如果你没有填充,你必须准确地满足块大小。当然,通常精确地达到块大小是很奇怪的,因此你可以填充。
您可以随时自行填充,然后使用一些字符将其删除。
究竟是什么原因需要这样做?