testVerifySign-ukey验签

2023-10-30 09:41:15 阅读:3 编辑
   @GetMapping(value = "testVerifySign")
    public JSONObject testVerifySign() {
        JSONObject result = new JSONObject();
        String public_key = "MIIERjCCA+mgAwIBAgIQeM8fcm+cS7mZ8PGxIG1R+jAMBggqgRzPVQGDdQUAMDQxCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDESMBAGA1UEAwwJU0hFQ0EgU00yMB4XDTIzMDkyODA1MzcyMloXDTI0MDkyODE1NTk1OVowezELMAkGA1UEBhMCQ04xEjAQBgNVBAgMCeS4iua1t+W4gjEhMB8GA1UECgwY5LiK5rW35biC5aSn5pWw5o2u5Lit5b+DMSQwIgYDVQQLDBvluILlpKfmlbDmja7kuK3lv4PkuozkuK3lv4MxDzANBgNVBAMMBumCteiKszBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABCQQNyI7DE4nBSnt4/LDSpMs3gC4leDtO9d96DSv0C0eSYvBhnpRj34ETCKS9SVigAC76PJ/4C2mFSZ0t9/ULHyjggKSMIICjjATBgNVHSUEDDAKBggrBgEFBQcDAjCBjQYIKwYBBQUHAQEEgYAwfjA9BggrBgEFBQcwAYYxaHR0cDovL29jc3Auc2hjYS5zaC5jZWduLmNuL29jc3Avc2hlY2Evc2hlY2Eub2NzcDA9BggrBgEFBQcwAoYxaHR0cDovL2xkYXAyLnNoY2Euc2guY2Vnbi5jbi9yb290L3NoZWNhc20yc3ViLmRlcjAfBgNVHSMEGDAWgBSJMQSRe0Oqqpq/hB2bhu7wuHCZoDAdBgNVHQ4EFgQUoTnUdu06aQhizkrtr+A4wKNGIsIwCwYDVR0PBAQDAgbAMCAGCCqBHIbvOgxoBBQTEjM0MCoqKioqKioqKioqMjQyMDAJBgNVHRMEAjAAMEIGA1UdIAQ7MDkwNwYJKoEcAYbvOoEVMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly93d3cuc2hlY2EuY29tL3BvbGljeS8wOgYIKoEchu86DGkELhMsQWVNdGJSQ2lyTGZ1ZFo3U1cyOHd4L29oNWJWSEdLSXpsSmx2eTEySkhoND0wgewGA1UdHwSB5DCB4TCBn6CBnKCBmYaBlmxkYXA6Ly9sZGFwMi5zaGNhLnNoLmNlZ24uY246Mzg5L2NuPUNSTDExMS5jcmwsb3U9UkEyMDE1MDUxOSxvdT1DQTkxLG91PWNybCxvPVVuaVRydXN0P2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludDA9oDugOYY3aHR0cDovL2xkYXAyLnNoY2Euc2guY2Vnbi5jbi9DQTkxL1JBMjAxNTA1MTkvQ1JMMTExLmNybDAMBggqgRzPVQGDdQUAA0kAMEYCIQC0sJ7JgrVFz72+f9az3/uaA+WfwHQYRXfWKkBRWgBfHAIhAJ0qOtZSy25obkCTKLFGF218wrjTuUJoRikg42s/8FRY";
        String sign = "MEUCIQCpJ4s7hqeVMeI66zBStqZCJZ+HrMBd0CmCuNa2FSh/EwIgEeTY8V/pO5E3NtIXBceNi/aZ6CUn5NHlk1WqR26nPLM=";
        //String data = "hello";
        String a = get("a", "SM3WithSM2");
        String data = get("data", "hello");
        String res = "fail";
        FileInputStream fin = null;
        try {
            fin = new FileInputStream("/opt/java/sign.cer");
            //fin = new FileInputStream("c:/sign.cer");
            CertificateFactory f = null;
            try {
                try {
                    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
                    f = CertificateFactory.getInstance("X.509", "BC");
                    X509Certificate certificate = (X509Certificate) f.generateCertificate(fin);
                    PublicKey pk = certificate.getPublicKey();
                    //res = pk.getAlgorithm();
                    try {
                        if(EncryptService.verifyUkey(pk,a,data.getBytes(),sign.getBytes())){
                            res = "ok";
                        }
                    } catch (NoSuchAlgorithmException e) {
                        throw new RuntimeException(e);
                    } catch (NoSuchProviderException e) {
                        throw new RuntimeException(e);
                    } catch (InvalidKeyException e) {
                        throw new RuntimeException(e);
                    } catch (SignatureException e) {
                        throw new RuntimeException(e);
                    }
                } catch (NoSuchProviderException e) {
                    throw new RuntimeException(e);
                }

                //

            } catch (CertificateException e) {
                throw new RuntimeException(e);
            }

        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }

        result.put("code", 0);
        result.put("res", res);
        return result;
    }