2009-09-08 89 views
2

我需要使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?我找不到这方面的文档。

回答

0

那么,事实是,如果你没有填充,你必须准确地符合块大小。当然,通常情况下正好达到块大小是很奇怪的,因此你需要填充。

你可以随时自己垫一些字符,然后在另一边删除。

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

+0

我不担心块大小。我使用它一次,我确切知道块的大小。它是一个128字节的字节数组。 – Lazlo 2009-09-08 02:23:10

+0

啊,我跟着你。我无法帮助,道歉。我猜如果填充不是必需的,它不会完成?这是一个猜测,但我假设,因为你问,这不是,所以,对不起:) – 2009-09-08 02:29:51

+1

我可能已经找到了答案!使用OpenSlsl.Net可能会为我解决。我明天会测试。 :) – Lazlo 2009-09-08 02:31:02

1

在没有填充的情况下执行RSA几乎肯定会给你一个破损的(不安全的)密码系统。如果C#不会让你这样做的话,那么这对C#有利。解决Java方面的问题。

+0

是的,我只能同意这一点。如果没有适当的填充,就不要使用RSA。当不正确使用RSA时,已知有太多已知的攻击。 – Accipitridae 2009-09-08 19:53:43

+0

但是如果我需要计算哈希并通过一些自定义算法添加填充会怎么样?我是否需要使用BigInteger来执行自定义的RSA计算?如此处所述:http://core.telegram.org/mtproto/auth_key – 2013-12-27 11:37:12

相关问题