阅读背景:

c# rsa对于pem格式 私钥加密公钥解密问题

来源:互联网 
c#里面对于私钥加密公钥进行解密没问题,可是java里对私钥加密的字符串,在c#解密前面出现一段乱码
c#里面对于私钥加密公钥进行解密没问题,可是java里对私钥加密的字符串,在c#解密前面出现一段乱码\0然后再是正确的解码,我在c#里面对字符串进行私钥加密,加密的字符串在java里用公钥解密报错 javax.crypto.BadPaddingException: Blocktype mismatch: 0,这个什么原因?对于公钥加密私钥解密c# java里面相互倒是没问题

6 个解决方案

#1


两边使用的padding不一致。我之前建议BouncyCastle也是因为完整的框架对各种padding都有良好的支持,自己实现的话得自己弄padding的处理,虽然大部分处理起来并不复杂,不过还是浪费时间的。

#2





引用 1 楼 github_22161131 的回复:
两边使用的padding不一致。我之前建议BouncyCastle也是因为完整的框架对各种padding都有良好的支持,自己实现的话得自己弄padding的处理,虽然大部分处理起来并不复杂,不过还是浪费时间的。

使用BouncyCastle也是一样的

#3


可以方便的调整padding啊,两边一致就好了
比如 var cipher = CipherUtilities.GetCipher("RSA/NONE/PKCS1PADDING"); 
比如 var cipher = CipherUtilities.GetCipher("RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING");
搞清楚java那边用的是什么padding,这边调整个字符串就ok了

#4


引用 3 楼 github_22161131 的回复:
可以方便的调整padding啊,两边一致就好了
比如 var cipher = CipherUtilities.GetCipher("RSA/NONE/PKCS1PADDING"); 
比如 var cipher = CipherUtilities.GetCipher("RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING");
搞清楚java那边用的是什么padding,这边调整个字符串就ok了


两边都是rsa

#5


确实是填充模式问题,问题解决,谢谢!

引用 3 楼 github_22161131 的回复:
可以方便的调整padding啊,两边一致就好了
比如 var cipher = CipherUtilities.GetCipher("RSA/NONE/PKCS1PADDING"); 
比如 var cipher = CipherUtilities.GetCipher("RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING");
搞清楚java那边用的是什么padding,这边调整个字符串就ok了

#6


楼主怎么解决的啊  我也遇到了这个问题  能简单的说说嘛

然后再是正确的解码,我在c#里面对字符串进行私钥加密,加密的字符串在java里用公钥解密报错 javax.crypto.BadPaddingException: Blocktype mismatch: 0,这个什么原因?对于公钥加密私钥解密c# java里面相互倒是没问题 c#里面对于私钥加密公钥进行解密没问题,可是java里对私钥加密的字符串,在c#解密前面出现一



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: