我是Windows手机开发的新手。如何在WP7中使用AES / ECB / PKCS7Padding算法?
谷歌搜索时,我看到很多关于Bouncy Castle的建议。但我并没有清楚地了解这个充气城堡。这是算法吗?
我需要加密/解密密码才能发送到服务器。在所有其他手机(Android,iPhone,Blackberry)中,我们使用AES / ECB / PKCS7Padding算法。它们都为我们的输入提供相同的ecrypted / decrypt结果。但在Windows Phone中我使用AesManaged Class进行加密。但它给出了不同的加密结果。在关于AESManaged类的msdn文档(MSDN documentation)中,他们说“密码模式总是CBC,填充模式总是PKCS7”。我想也许这就是为什么我在这里获得与其他手机相比不同的加密结果。
这是问题吗?如果是,那么如何在WP7中使用AES / ECB / PKCS7Padding算法?
我没有看到在AesManaged类中设置密码模式的任何属性。
感谢。
答案 0 :(得分:3)
如果要在Windows Phone中使用AES / ECB / PKCS7Padding,则应使用Bouncy Castle库。
此库并非完全适用于Windows Phone,您无法使用Bouncy Castle网站的dll。相反,您应该从here下载WP7移植的库。 (文章底部的两个链接)
现在,您可以使用Org.BouncyCastle.Crypto.IBufferedCipher类型。
cipher = CipherUtilities.GetCipher("AES/ECB/PKCS7"); // or PKCS7PADDING, no matter
cipher.Init(false, new KeyParameter(key)); // or something else
然后你应该使用这个变量。
是的,
“密码模式始终为CBC,填充模式始终为PKCS7”
这就是你得错结果的原因。