我加密邮件然后解密它。这是要点: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)
答案 0 :(得分:2)
读取sun.security.rsa.RSAPadding和javax.crypto.BadPaddingException的异常和JavaDoc,看起来您的Java代码需要PKCS#1 v1.5填充,但您的C代码不使用相同的填充。您需要确保双方使用的填充算法相同。
答案 1 :(得分:1)
很简单,您的RSAPrivateCrtKeySpec构造函数调用使用了不正确的参数顺序。