RSA签名算法
私钥签名
公钥验证签名
package com.zml.rsa; import org.apache.commons.codec.binary.Hex; import java.security.InvalidKeyException; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; /** * Created with IntelliJ IDEA. * Description: * User: zhaomingli * Date: 2017-06-16 * Time: 9:08 */ public class RsaTest { private static final String src ="sfsf"; public static void main(String[] args) { jdkRSA(); } public static void jdkRSA() { try { //初始化秘钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();//验证 RSAPrivateKey rsaPrivateKey=(RSAPrivateKey)keyPair.getPrivate();//签名 System.out.println("rsaPrivateKey***"+rsaPrivateKey); System.out.println("rsaPublicKey***"+rsaPublicKey); //执行签名 PKCS8EncodedKeySpec pkcs8EncodedKeySpec=new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); KeyFactory keyFactory=KeyFactory.getInstance("RSA"); PrivateKey privateKey=keyFactory.generatePrivate(pkcs8EncodedKeySpec); Signature signature =Signature.getInstance("MD5withRSA"); signature.initSign(privateKey); signature.update(src.getBytes()); byte[] result=signature.sign(); System.out.println(Hex.encodeHexString(result)); //签名验证 X509EncodedKeySpec x509EncodedKeySpec=new X509EncodedKeySpec(rsaPublicKey.getEncoded()); keyFactory=KeyFactory.getInstance("RSA"); PublicKey publicKey=keyFactory.generatePublic(x509EncodedKeySpec); signature=Signature.getInstance("MD5withRSA"); signature.initVerify(publicKey); signature.update(src.getBytes()); boolean verify = signature.verify(result); System.out.println("JDK"+verify); } catch (Exception e) { }} }