c#里面对于私钥加密公钥进行解密没问题,可是java里对私钥加密的字符串,在c#解密前面出现一段乱码
然后再是正确的解码,我在c#里面对字符串进行私钥加密,加密的字符串在java里用公钥解密报错 javax.crypto.BadPaddingException: Blocktype mismatch: 0,这个什么原因?对于公钥加密私钥解密c# java里面相互倒是没问题 c#里面对于私钥加密公钥进行解密没问题,可是java里对私钥加密的字符串,在c#解密前面出现一
c#里面对于私钥加密公钥进行解密没问题,可是java里对私钥加密的字符串,在c#解密前面出现一段乱码\0然后再是正确的解码,我在c#里面对字符串进行私钥加密,加密的字符串在java里用公钥解密报错 javax.crypto.BadPaddingException: Blocktype mismatch: 0,这个什么原因?对于公钥加密私钥解密c# java里面相互倒是没问题
使用BouncyCastle也是一样的
两边都是rsa
6 个解决方案
#1
两边使用的padding不一致。我之前建议BouncyCastle也是因为完整的框架对各种padding都有良好的支持,自己实现的话得自己弄padding的处理,虽然大部分处理起来并不复杂,不过还是浪费时间的。
#2
使用BouncyCastle也是一样的
#3
可以方便的调整padding啊,两边一致就好了
比如 var cipher = CipherUtilities.GetCipher("RSA/NONE/PKCS1PADDING");
比如 var cipher = CipherUtilities.GetCipher("RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING");
搞清楚java那边用的是什么padding,这边调整个字符串就ok了
比如 var cipher = CipherUtilities.GetCipher("RSA/NONE/PKCS1PADDING");
比如 var cipher = CipherUtilities.GetCipher("RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING");
搞清楚java那边用的是什么padding,这边调整个字符串就ok了
#4
两边都是rsa
#5
确实是填充模式问题,问题解决,谢谢!
#6
楼主怎么解决的啊 我也遇到了这个问题 能简单的说说嘛
然后再是正确的解码,我在c#里面对字符串进行私钥加密,加密的字符串在java里用公钥解密报错 javax.crypto.BadPaddingException: Blocktype mismatch: 0,这个什么原因?对于公钥加密私钥解密c# java里面相互倒是没问题 c#里面对于私钥加密公钥进行解密没问题,可是java里对私钥加密的字符串,在c#解密前面出现一