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()));