在C#.NET中解密来自BlackBerry的PKCS#1 v2.1密码

时间:2012-03-08 16:58:42

标签: c# .net cryptography rsa blackberry-jde

我编写了一个BlackBerry应用程序,RSA使用PKCS1FormatterEngine加密消息。这将输出以PKCS#1 v2.1

格式化的加密消息

以下是该消息的片段:

ç½.¦B¯€ü6Áùε"aYÅÂ7;«&â/Ѥ²•¨S.°.b7<iÔ½Œ.:.Ý&D‹±ì‰8.V•.Ä$‡ZAÜ.p.Ø}åÜ.uK.Æøæ

我已经在.NET中拥有RSA私钥,但我似乎找不到解密它的方法。

我将非常感谢任何关于我应该使用的课程的想法。

4 个答案:

答案 0 :(得分:1)

标准RSAOAEPKeyExchangeDeformatter课程有什么问题吗?如果是,那么你应该告诉我们你的代码。

它永远存在于.NET框架中,但在Windows XP(例如Windows 2000)IIRC之前不可用 - 但今天这不应该是一个大问题。

答案 1 :(得分:1)

PKCS#1 v2.1有两种加密模式:RSAES-OAEP和RSAES-PKCS1-V1_5。

RSAES-PKCS1-V1_5也包含在该标准的早期版本中,因此它通常也称为PKCS#1 v.1.5。因此,将RSAES-OAEP称为PKCS#1 v.2.1并不罕见,但它是错误的和错误的。

PKCS1FormatterEngine的文档中,RIM记录了它根据PKCS#1 v.2.1实施了PKCS#1,但没有解释它们是指RSAES-OAEP还是RSAES-PKCS1-V1_5。

但是,由于您报告RSACryptoServiceProvider.Decrypt(array, false);有效,我会得出结论,他们已经实施了RSAES-PKCS1-V1_5。只需使用它:这是解密RSAES-PKCS1-V1_5的最简单方法。或者,您可以使用RSAPKCS1KeyExchangeDeformatter

答案 2 :(得分:0)

Bouncy Castle似乎能够使用OAA模式的RSA加密/解密。从来没有尝试过,我只使用了Bouncy的Java库。

啊,找到一个例子,看看页面底部的示例代码:

http://www.go4expert.com/forums/showthread.php?t=24827

答案 3 :(得分:0)

我使用RSACryptoServiceProvider .NET类和Decrypt函数。

第一个参数是加密数据,第二个是布尔值,指定要使用的填充类型。

True = OAEP填充(PKCS#1 v2.1) False = PKCS#1 v1.5

这很奇怪,因为我的代码在将参数设置为false时起作用。我非常确定密码在PKCS#1 v2.1中,因为我使用的是BlackBerry SDK中的this类。

来自API文档的引用:

  

我们根据PKCS#1版本2.1文档实现了PKCS1格式化程序引擎。

无论如何,它现在对我有用。希望这有助于其他人。 :)