Java - 使用Cipher类实现加密(RSA)
/*** RSA加密*/
public class RsaUtils {private static Map<Integer, String> keyMap = new HashMap<Integer, String>(); //用于封装随机产生的公钥与私钥public static void main(String[] args) throws Exception {//生成公钥和私钥genKeyPair();//加密字符串String message = "df723820";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);}/*** 随机生成密钥对* @throws NoSuchAlgorithmException*/public static void genKeyPair() throws NoSuchAlgorithmException {// KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");// 初始化密钥对生成器,密钥大小为96-1024位keyPairGen.initialize(1024,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())));// 将公钥和私钥保存到MapkeyMap.put(0,publicKeyString); //0表示公钥keyMap.put(1,privateKeyString); //1表示私钥}/*** RSA公钥加密** @param str* 加密字符串* @param publicKey* 公钥* @return 密文* @throws Exception* 加密过程中的异常信息*/public static String encrypt( String str, String publicKey ) throws Exception{//base64编码的公钥byte[] decoded = Base64.decodeBase64(publicKey);RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));//RSA加密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, pubKey);String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));return outStr;}/*** RSA私钥解密** @param str* 加密字符串* @param privateKey* 私钥* @return 铭文* @throws Exception* 解密过程中的异常信息*/public static String decrypt(String str, String privateKey) throws Exception{//64位解码加密后的字符串byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));//base64编码的私钥byte[] decoded = Base64.decodeBase64(privateKey);RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));//RSA解密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.DECRYPT_MODE, priKey);String outStr = new String(cipher.doFinal(inputByte));return outStr;}}
Java - 使用Cipher类实现加密(RSA)相关推荐
- java中的Cipher类 (加密和解密)
该类位于javax.crypto包下,声明为 public class Cipher extends Object 此类为加密和解密提供密码功能.它构成了 Java Cryptographic ...
- Java Cipher类解密|笔记
Cipher类为加密和解密提供密码功能 Cipher类可以构建多种加密算法,如DES.AES.Blowfish对称加密算法,以及RSA.DSA.DH等多种非对称加密算法 Cipher类是一个引擎类,它 ...
- javax.crypto.Cipher类--加密和解密
javax.crypto.Cipher类提供加密和解密功能. 一.获得Cipher对象 通过调用Cipher类中的getInstance静态工厂方法得到Cipher对象. public static ...
- JCA - 核心类和接口 - Cipher类
JCA - Cipher类 Cipher类 对称加密 VS. 非对称加密 块加密 VS. 流加密 操作模式 使用GCM模式的AES加密 创建Cipher 对象 初始化Cipher对象 数据加密和解密 ...
- 使用OpenSSL加密,使用Java解密,使用OpenSSL RSA公钥
抽象 在2017年,我撰写了一个由三部分组成的系列文章,内容涉及选择最佳的哈希和加密算法. 在对该系列进行研究时,我学到了很多有关哈希和加密的知识. 我学到的最重要的事情是,尽管我必须对如何使用最安全 ...
- delphi7aes加密解密与java互转_跨语言(java vs python vs nodejs)的RSA加解密问题探讨
多次被问到这样的问题: java服务端的rsa加密操作已经完成,返回一个16进制的字符串给python平台,但是在python进行私钥解密的时候发现行不通.... 前端python加密,后端用java ...
- node 加密解密模块_跨语言(java vs python vs nodejs)的RSA加解密问题探讨
多次被问到这样的问题: java服务端的rsa加密操作已经完成,返回一个16进制的字符串给python平台,但是在python进行私钥解密的时候发现行不通.... 前端python加密,后端用java ...
- java js 非对称加密算法_Java加密技术(四)——非对称加密算法RSA
Java非对称加密算法rsa 接下来我们介绍典型的非对称加密算法--RSA RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作,也很流行.算法的名字 ...
- 1、【java数据安全】数据安全之加密解密(base64、MD、SHA、DES、AES、IDEA、PBE、DH、RSA、EIGamal)、数字签名(DSA、ECDSA)和数字证书介绍、应用示例详细介绍
java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...
- Java笔记-非对称加密RSA的使用
使用OpenSSL生成对应RSA私钥和RSA公钥: #rsa私钥: genrsa -out rsa_private_key.pem 1024 pkcs8 -topk8 -inform PEM -in ...
最新文章
- python有什么作用-大数据学习之python语言有什么作用?
- BZOJ.3277.串(广义后缀自动机)
- Wireshark EndPoints窗口
- java spring框架 注解_spring框架之注解的使用
- .NET Core 微信小程序退款——(统一退款)
- 201621123058 《java课程设计》第九周学习总结
- 多浏览器判断,切换及使用
- 8255A置位复位控制字
- Michael Feathers希望消除错误能驱动设计
- Java中InputStream 、 InputStreamReader 、 BufferedReader的区别
- 计算机组成原理(唐朔飞)--第一篇 概论
- RocketDock 安装
- 大数据的十大应用领域
- c++随笔-删除文件
- easypoi一对多导入_easypoi导入Excel最佳实践
- SCDM 实例教程:基本几何建模
- 普通家用电风扇电机绕组
- Cisco Packet Tracer Student抓取协议包简介
- 几款实用的内网穿透工具,推荐!
- 如何实现双向绑定?底层原理是什么?
热门文章
- MPB:南土所褚海燕组-土壤宏转录组学样本前处理与数据分析
- minecraft图标文件_如何在任何操作系统上查找Minecraft保存的游戏文件夹
- css-绘制平行四边形
- Python语言程序设计(嵩天老师)-期末考核2.1-快乐数字
- 章文嵩博士和他背后的负载均衡(LOAD BANLANCER)帝国
- BZOJ 2827 千山鸟飞绝 Treap
- 多个文本对比相似度分析
- 可以将每日计划以及日程提醒事项记录下来的待办清单便签有哪些
- word打开文档很久很慢_打开Office文档很慢的解决办法
- [PhotoShop]用ps制作遮罩图层