非凡动物 2023-03-21 22:55 采纳率: 0%
浏览 85
已结题

国密p7验签,sm3withsm2

我想咨询下java实现国密p7软验签,使用sm3withsm2,只需要验签,需要从签名值里解析出证书验签,可用的内容只有原文和签名值
原文:123456
签名值:MIIDJgYKKoEcz1UGAQQCAqCCAxYwggMSAgEBMQwwCgYIKoEcz1UBgxEwDAYKKoEcz1UGAQQCAaCCAkowggJGMIIB7KADAgECAgV6kZ2zajAKBggqgRzPVQGDdTAvMQswCQYDVQQGEwJjbjEMMAoGA1UECgwDYm9jMRIwEAYDVQQDDAlnbXN1YmNhMDEwHhcNMjIwMzMwMDMxNjIxWhcNMjQxMjI0MDMxNjIxWjB4MQswCQYDVQQGEwJDTjEWMBQGA1UECgwNQk9DIFNNMiBPQ0EzMTERMA8GA1UECwwIUEJQU1RFU1QxGTAXBgNVBAsMEE9yZ2FuaXphdGlvbmFsLTIxIzAhBgNVBAMMGjA0N0Bib2N0ZXN0c20yQFAyMDIyMDMyOUAxMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEaPWq1BLLJnsQbKfYVWIX3odW8QU8SlOdPIFgmj5eotqGuF39HLtKL2BnDte6zK0KStGHGDG+dysHCUEofkebd6OBqzCBqDAfBgNVHSMEGDAWgBTwazjBPiVRhWlDe9+pNmz3Fw5YfDAJBgNVHRMEAjAAMEsGA1UdHwREMEIwQKA+oDykOjA4MQ0wCwYDVQQDDARjcmwxMQwwCgYDVQQLDANjcmwxDDAKBgNVBAoMA2JvYzELMAkGA1UEBhMCY24wDgYDVR0PAQH/BAQDAgbAMB0GA1UdDgQWBBS7dSbEbSg7Q+Jrjuy0mhxyCSujMjAKBggqgRzPVQGDdQNIADBFAiEArbvuZl8jb84DIVFwo4QnE9V8LtSid1lzQ0uZUA13SO0CICHqOC/6lld6I6++uhfwHFXZCVsYhaoJSayfErDitg+ZMYGiMIGfAgEBMDgwLzELMAkGA1UEBhMCY24xDDAKBgNVBAoMA2JvYzESMBAGA1UEAwwJZ21zdWJjYTAxAgV6kZ2zajAKBggqgRzPVQGDETALBgkqgRzPVQGCLQEERzBFAiEAgWjzgPEcWhSoRtzXQjfDdMNgDcGhBR3695N+mzl5hfsCIG8UtHZpaI4o5TQVyEJxsPkwLcDPdC7oftupvZqX4/6v

  • 写回答

3条回答 默认 最新

  • pzzhao 2023-03-22 20:37
    关注

    我本地根据这个博客 https://blog.csdn.net/pridas/article/details/86118774 测试是ok的,但是你的这个代码应该是BASE64了,然后你的userId我也不知道是哪个。
    测试代码

    
    import org.bouncycastle.util.encoders.Hex;
    
    import java.security.KeyPair;
    import java.security.PublicKey;
    
    public class SM2P7Verify {
    
        public static void main(String[] args) throws Exception {
            String s = "123456";
            byte[] userId = "1234567812345678".getBytes();
            KeyPair keyPair = GmUtil.generateKeyPair();
            PublicKey aPublic = keyPair.getPublic();
            byte[] bytes = GmUtil.signSm3WithSm2(s.getBytes(), userId,  keyPair.getPrivate());
            System.out.println(Hex.toHexString(bytes));
            boolean b = GmUtil.verifySm3WithSm2( s.getBytes(), userId, bytes, aPublic);
            System.out.println(b);
        }
    
    }
    
    

    测试结果

    188dce4b8db74c8b2f940c759fc9ff747b11dc40d0d33be661e276b4567561d066fdf8697b4c4ee702ab44282751603779f370f0759ff388f6fb1003aafa6e2a
    true
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月23日
  • 修改了问题 3月23日
  • 赞助了问题酬金15元 3月22日
  • 修改了问题 3月22日
  • 展开全部

悬赏问题

  • ¥15 WPF动态创建页面内容
  • ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
  • ¥15 SQL数据库操作问题
  • ¥100 关于lm339比较电路出现的问题
  • ¥15 Matlab安装yalmip和cplex功能安装失败
  • ¥15 加装宝马安卓中控改变开机画面
  • ¥15 STK安装问题问问大家,这种情况应该怎么办
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线