3

我加密一条消息,然后解密它。这是要点:https ://gist.github.com/2489899 。我必须将此密钥存储在 xml 方案中,因为消息也应该能够在 c# 中解密。(这只是我的程序与数据库等的“摘要”)。但我总是得到例外:

javax.crypto.BadPaddingException: Data must start with zero
at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:308)
at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:255)
at com.sun.crypto.provider.RSACipher.a(DashoA13*..)
at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at Main.decrypt(Main.java:50)
at Main.main(Main.java:24)
4

2 回答 2

2

阅读sun.security.rsa.RSAPaddingjavax.crypto.BadPaddingException的异常和 JavaDoc ,看起来您的 Java 代码需要 PKCS#1 v1.5 填充,但您的 C 代码没有使用相同的填充。您需要确保两边使用的填充算法相同。

于 2012-04-25T14:22:18.107 回答
1

很简单,您的 RSAPrivateCrtKeySpec 构造函数调用使用了错误的参数顺序。

于 2012-04-27T23:04:57.983 回答