Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于国密算法SM2加密问题,使用老版本的bcprov包改造加密实现,渠道接入无法解密,求解答 #74

Closed
yanlun0323 opened this issue Sep 22, 2022 · 2 comments

Comments

@yanlun0323
Copy link

国密改造提供了SDK包,但是与我目前底层的不一致,该底层涉及到多个项目,如果涉及到底层改动,比较麻烦。刚开始想着选择利用maven-shade重新打包,让两个版本并存,不曾想jdk对这一类型provider做了签名校验,任务失败。。。
然后想着改造上游提供的sdk(有源码),改成老版本的类实现,虽然能加密,签名能够,但是经过测试,是SM2加密的问题,长度什么的好像也没问题,不知道大佬有没有遇到过这个问题。
现在两种方案都行不通,那么就只能改造底层类,copy了大佬的实现,升级到1.67(原版本是jdk16-1.46版本,相当古老了),这次改造很顺利,一个下午解决了所遇到的问题,但是不太明白,究竟为何,希望大佬解答。

@ZZMarquis
Copy link
Owner

ZZMarquis commented Sep 23, 2022

看看是不是密文顺序的问题,确认应该是C1C3C2还是C1C2C3

@yanlun0323
Copy link
Author

yanlun0323 commented Oct 16, 2022

同样的实现,其他上游验签能通过,是不是有padding之类的区别(或者签名原串处理方式不一样、userId不一样、公钥处理方式不一样),这个就不太清楚了,密文顺序我调整过,没有奏效,谢谢大佬!
我分析最大的可能是公钥证书格式问题导致的,如下是我处理后的国密证书,其他几个渠道的不是这样处理的,但是签名和验签算法一致。
image

最后,还是很感谢楼主的开源项目为我们广大码农提供的帮助,谢谢!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants