700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java rsa2加密算法_java RSA加密解密

java rsa2加密算法_java RSA加密解密

时间:2018-11-24 13:01:36

相关推荐

java rsa2加密算法_java RSA加密解密

public classRSAEncrypt {private static Map keyMap = new HashMap(); //用于封装随机产生的公钥与私钥

public static void main(String[] args) throwsException {//生成公钥和私钥

genKeyPair();//加密字符串

String message = "Pass1234";

System.out.println("随机生成的公钥为:" + keyMap.get(0));

System.out.println("随机生成的私钥为:" + keyMap.get(1));

String messageEn= encrypt(message, keyMap.get(0));

System.out.println(message+ "\t加密后的字符串为:" +messageEn);

String messageDe= decrypt(messageEn, keyMap.get(1));

System.out.println("还原后的字符串为:" +messageDe);

}/*** 随机生成密钥对

*

*@throwsNoSuchAlgorithmException*/

public static void genKeyPair() throwsNoSuchAlgorithmException {//KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象

KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");//初始化密钥对生成器,密钥大小为96-1024位

keyPairGen.initialize(512, newSecureRandom());//生成一个密钥对,保存在keyPair中

KeyPair keyPair =keyPairGen.generateKeyPair();

RSAPrivateKey privateKey= (RSAPrivateKey) keyPair.getPrivate(); //得到私钥

RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); //得到公钥

String publicKeyString = newString(Base64.encodeBase64(publicKey.getEncoded()));//得到私钥字符串

String privateKeyString = newString(Base64.encodeBase64((privateKey.getEncoded())));//将公钥和私钥保存到Map

keyMap.put(0, publicKeyString); //0表示公钥

keyMap.put(1, privateKeyString); //1表示私钥

}/*** RSA公钥加密

*

*@paramstr 加密字符串

*@parampublicKey 公钥

*@return密文

*@throwsException 加密过程中的异常信息*/

public static String encrypt(String str, String publicKey) throwsException {//base64编码的公钥

byte[] decoded =Base64.decodeBase64(publicKey);

RSAPublicKey pubKey= (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(newX509EncodedKeySpec(decoded));//RSA加密

Cipher cipher = Cipher.getInstance("RSA");

cipher.init(Cipher.ENCRYPT_MODE, pubKey);

String outStr= Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));returnoutStr;

}/*** RSA私钥解密

*

*@paramstr 加密字符串

*@paramprivateKey 私钥

*@return铭文

*@throwsException 解密过程中的异常信息*/

public static String decrypt(String str, String privateKey) throwsException {//64位解码加密后的字符串

byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));//base64编码的私钥

byte[] decoded =Base64.decodeBase64(privateKey);

RSAPrivateKey priKey= (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(newPKCS8EncodedKeySpec(decoded));//RSA解密

Cipher cipher = Cipher.getInstance("RSA");

cipher.init(Cipher.DECRYPT_MODE, priKey);

String outStr= newString(cipher.doFinal(inputByte));returnoutStr;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。