java 加密 RSA(一)

来源:互联网 发布:mac版pscc下载 编辑:程序博客网 时间:2024/06/08 01:22
KeyPairGenerator kpg= KeyPairGenerator.getInstance("RSA");kpg.initialize(1024);KeyPair kp = kpg.generateKeyPair();PublicKey puk=kp.getPublic();PrivateKey prk = kp.getPrivate();//先给密钥对byte[] bpuc=puk.getEncoded();//公钥byte[] bpri=prk.getEncoded();//私钥KeyFactory kf = KeyFactory.getInstance("RSA");String str="一段需要加密的文字:锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦。";//公钥加密X509EncodedKeySpec xek = new X509EncodedKeySpec(bpuc);Key key = kf.generatePublic(xek);Cipher cipher=Cipher.getInstance(kf.getAlgorithm());cipher.init(Cipher.ENCRYPT_MODE,key);byte[] a=cipher.doFinal(str.getBytes());String astr=new String(a);System.out.println("公钥加密:"+astr);//私钥解密PKCS8EncodedKeySpec pkcs = new PKCS8EncodedKeySpec(bpri);key = kf.generatePrivate(pkcs);cipher=Cipher.getInstance(kf.getAlgorithm());cipher.init(Cipher.DECRYPT_MODE, key);byte[] b=cipher.doFinal(a);String bstr=new String(b);System.out.println("私钥解密;"+bstr);//私钥加密pkcs = new PKCS8EncodedKeySpec(bpri);key = kf.generatePrivate(pkcs);cipher=Cipher.getInstance(kf.getAlgorithm());cipher.init(Cipher.ENCRYPT_MODE,key);byte[] c=cipher.doFinal(str.getBytes());String cstr=new String(c);System.out.println("私钥加密:"+cstr);//公钥解密xek = new X509EncodedKeySpec(bpuc);key = kf.generatePublic(xek);cipher=Cipher.getInstance(kf.getAlgorithm());cipher.init(Cipher.DECRYPT_MODE,key);byte[] d=cipher.doFinal(c);String dstr=new String(d);System.out.println("公钥解密:"+dstr);//签名Signature sign = Signature.getInstance("MD5withRSA");//私钥加密生成数字签名??pkcs = new PKCS8EncodedKeySpec(bpri);PrivateKey priK = kf.generatePrivate(pkcs);sign.initSign(priK);sign.update(cstr.getBytes());String estr=new String(Base64.encode(sign.sign()));System.out.println("私钥签名:"+estr);//公钥校验xek = new X509EncodedKeySpec(bpuc);PublicKey pubK = kf.generatePublic(xek);sign.initVerify(pubK);sign.update(cstr.getBytes());System.out.println("公钥校验:"+sign.verify(Base64.decode(estr.getBytes())));

0 0
原创粉丝点击