2009-09-08 170 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

相關問題