java RSA签名及验签

1.签名过程

        KeyFactory keyFactory = KeyFactory.getInstance(VIVO_SIGN_TYPE.RSA);
        byte[] encodedKey = Base64.getDecoder().decode(privateKey);
        PrivateKey priKey = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(encodedKey));
        
        Signature signature = Signature.getInstance(VIVO_SIGN_TYPE.SHA256WithRSA);
        signature.initSign(priKey);
        signature.update(content.getBytes(Encoding.UTF_8));
        byte[] signed = signature.sign();
        String sign = new String(Base64.getEncoder().encodeToString(signed));    

2.验签过程

        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            byte[] encodedKey = Base64.getDecoder().decode(publicKey);
            PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
            
            java.security.Signature signature = java.security.Signature
                    .getInstance("SHA256WithRSA");

            signature.initVerify(pubKey);
            signature.update(content.getBytes(charset));
                

            boolean result = signature.verify(Base64.getDecoder().decode(sign.getBytes()));

猜你喜欢

转载自www.cnblogs.com/wanx/p/11250735.html