栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA RSA非对称加密工具类,java基础案例教程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA RSA非对称加密工具类,java基础案例教程

//加密字符串

String content = “JCccc-+你/好,我是需要被内*容。”;

System.out.println(“加密前内容:”+content);

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

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

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

System.out.println(“加密后的内容为:” + messageEn);

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

System.out.println(“还原后的内容为:” + messageDe);

}

//随机生成密钥对

public static Map genKeyPair() {

// KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象

KeyPairGenerator keyPairGen = null;

try {

keyPairGen = KeyPairGenerator.getInstance(“RSA”);

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

// 初始化密钥对生成器,密钥大小为96-1024位

assert keyPairGen != null;

keyPairGen.initialize(102

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

4, new SecureRandom());

// 生成一个密钥对,保存在keyPair中

KeyPair keyPair = keyPairGen.generateKeyPair();

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

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

String publicKeyString = new String(base64.encodebase64(publicKey.getEncoded()));

// 得到私钥字符串

String privateKeyString = new String(base64.encodebase64((privateKey.getEncoded())));

// 将公钥和私钥保存到Map

Map keyMap = new HashMap<>();

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

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

return keyMap;

}

public static String encrypt(String str, String publicKey) {

//base64编码的公钥

byte[] decoded = base64.decodebase64(publicKey);

RSAPublicKey pubKey = null;

String outStr = null;

try {

pubKey = (RSAPublicKey) KeyFactory.getInstance(“RSA”).generatePublic(new X509EncodedKeySpec(decoded));

Cipher cipher = Cipher.getInstance(“RSA”);

cipher.init(Cipher.ENCRYPT_MODE, pubKey);

outStr = base64.encodebase64String(cipher.doFinal(str.getBytes(StandardCharsets.UTF_8)));

} catch (InvalidKeySpecException | BadPaddingException | IllegalBlockSizeException | InvalidKeyException | NoSuchPaddingException | NoSuchAlgorithmException e) {

e.printStackTrace();

}

//RSA加密

return outStr;

}

public static String decrypt(String str, String privateKey) {

//64位解码加密后的字符串

byte[] inputByte = base64.decodebase64(str.getBytes(StandardCharsets.UTF_8));

//base64编码的私钥

byte[] decoded = base64.decodebase64(privateKey);

RSAPrivateKey priKey = null;

//RSA解密

Cipher cipher = null;

String outStr = null;

try {

priKey = (RSAPrivateKey) KeyFactory.getInstance(“RSA”).generatePrivate(new PKCS8EncodedKeySpec(decoded));

cipher = Cipher.getInstance(“RSA”);

cipher.init(Cipher.DECRYPT_MODE, priKey);

outStr = new String(cipher.doFinal(inputByte));

} catch (InvalidKeySpecException | NoSuchAlgorithmException | NoSuchPaddingException | BadPaddingException | IllegalBlockSizeException | InvalidKeyException e) {

e.printStackTrace();

}

return outStr;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号