电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java實現RSA加密工具類

瀏覽:62日期:2022-08-25 11:16:06

公鑰加密算法,也就是 非對稱加密算法,這種算法加密和解密的密碼不一樣,一個是公鑰,另一個是私鑰:

公鑰和私鑰成對出現 公開的密鑰叫公鑰,只有自己知道的叫私鑰 用公鑰加密的數據只有對應的私鑰可以解密 用私鑰加密的數據只有對應的公鑰可以解密 如果可以用公鑰解密,則必然是對應的私鑰加的密 如果可以用私鑰解密,則必然是對應的公鑰加的密

公鑰和私鑰是相對的,兩者本身并沒有規定哪一個必須是公鑰或私鑰。

代碼如下

package com.cxy.template.controller.keyTools;import java.util.Base64;import javax.crypto.Cipher;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import java.util.HashMap;import java.util.Map;/** * Java RSA 加密工具類 * */public class RSAUtils { /** * 密鑰長度 于原文長度對應 以及越長速度越慢 */ private final static int KEY_SIZE = 1024; /** * 用于封裝隨機產生的公鑰與私鑰 */ private static Map<Integer, String> keyMap = new HashMap<Integer, String>(); /** * 隨機生成密鑰對 */ public static void genKeyPair() throws NoSuchAlgorithmException { // KeyPairGenerator類用于生成公鑰和私鑰對,基于RSA算法生成對象 KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance('RSA'); // 初始化密鑰對生成器 keyPairGen.initialize(KEY_SIZE, new SecureRandom()); // 生成一個密鑰對,保存在keyPair中 KeyPair keyPair = keyPairGen.generateKeyPair(); // 得到私鑰 RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); // 得到公鑰 RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); String publicKeyString = Base64.getEncoder().encodeToString(publicKey.getEncoded()); // 得到私鑰字符串 String privateKeyString = Base64.getEncoder().encodeToString(privateKey.getEncoded()); // 將公鑰和私鑰保存到Map //0表示公鑰 keyMap.put(0, publicKeyString); //1表示私鑰 keyMap.put(1, privateKeyString); } /** * RSA公鑰加密 * * @param str 加密字符串 * @param publicKey 公鑰 * @return 密文 * @throws Exception 加密過程中的異常信息 */ public static String encrypt(String str, String publicKey) throws Exception { //base64編碼的公鑰 byte[] decoded = Base64.getDecoder().decode(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.getEncoder().encodeToString(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.getDecoder().decode(str); //base64編碼的私鑰 byte[] decoded = Base64.getDecoder().decode(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; } public static void main(String[] args) throws Exception { long temp = System.currentTimeMillis(); //生成公鑰和私鑰 genKeyPair(); //加密字符串 System.out.println('公鑰:' + keyMap.get(0)); System.out.println('私鑰:' + keyMap.get(1)); System.out.println('生成密鑰消耗時間:' + (System.currentTimeMillis() - temp) / 1000.0 + '秒'); //客戶id + 授權時間 + 所用模塊 String message = '4028138151b3cf300151b419df090007' + '2015-12-17 11:30:22' + 'A01,A02'; System.out.println('原文:' + message); temp = System.currentTimeMillis(); //通過原文,和公鑰加密。 String messageEn = encrypt(message, keyMap.get(0)); System.out.println('密文:' + messageEn); System.out.println('加密消耗時間:' + (System.currentTimeMillis() - temp) / 1000.0 + '秒'); temp = System.currentTimeMillis(); //通過密文,和私鑰解密。 String messageDe = decrypt(messageEn, keyMap.get(1)); System.out.println('解密:' + messageDe); System.out.println('解密消耗時間:' + (System.currentTimeMillis() - temp) / 1000.0 + '秒'); }}

測試如下

公鑰:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtI8/X2ayQNXsz6/HTJew8z86+aevsJJLNS5dT74/zUwfaOpouInMQLwhqLFvMoCIzw2CLdG7/hwx3HGlKTHDpaTCqnKu17NVOriI8o7lAgI6pK/L2M8kpkbAG88XBmH6aNbi94TS1/ljsS9jMNoEQvfLC2A/KUw9sopRg73gAawIDAQAB私鑰:MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAK0jz9fZrJA1ezPr8dMl7DzPzr5p6+wkks1Ll1Pvj/NTB9o6mi4icxAvCGosW8ygIjPDYIt0bv+HDHccaUpMcOlpMKqcq7Xs1U6uIjyjuUCAjqkr8vYzySmRsAbzxcGYfpo1uL3hNLX+WOxL2Mw2gRC98sLYD8pTD2yilGDveABrAgMBAAECgYAvHh7S5AcFG7jSkXQ2/QwEJJ1jzlmI4w8cVWTyT7CCDGeHqQkKYw+jKNmGY1n8HtwP8CyW5vHKEkt/Irk4ogLb39DHPNbBVrhCn6HbPR/1RdcU3kOWsFnZ8tjx5lxJhP3bSA0J1V2tk/QlZ74RoKMDK59zp2dyjqoqaVIlj7dbaQJBANLPDOGrtIs6n6FcxmGggg5Hy+ajYIxJVcv2yoUfg59Rg3Q/X4QbrxU0NQ4+q/dSZfFSCDJ9lpvJWuO4hZI1MG8CQQDSQYjdlBOePY0pgDE+0jfPh0J5c6Ctyvq7nrps7JsrJpF/FUurUZFCBq63UMIlxFKZuGisngthUBKkkanuiXXFAkEAlBMfxzxm2w1Yp22VY2ntML65uM21uZShkV1Or+eM+tG09mi1XQRdHRXI1rKq9FSKitHGNEEHE3KCR0aLfEGkPQJAK+xq5jc3/ffH1KKmJwSNijoshejE6WmdBbL8KSMoq1QMUyskuq54lP2GZF9nn7Iqu1hN7bm6kOLEckLH6EApLQJBAJkuPP4kB1moPecwPjoW62oNWvdTK59tGHdvVDclnnpbWNurSp63zNGyowmzZn4MaEUduliU9ZuA+g3BuRXnTQo=生成密鑰消耗時間:0.129秒原文:4028138151b3cf300151b419df0900072015-12-17 11:30:22A01,A02密文:DnNGSArBjHQ46uyP9aBBs/f+zGwbpM2suh39Imdqu1ebUyCdB6b1AYB8Y7snklttm++EQjrKO8B+06er0+bOJb8lXbHQrvDkFCbcp31TiCBeITZT8bWpHQfwVmutVYKCYGwuk2E5VXQfSySuh6ZsUX/M/3UfS9MvKbQB3d1dyJ8=加密消耗時間:0.217秒解密:4028138151b3cf300151b419df0900072015-12-17 11:30:22A01,A02解密消耗時間:0.003秒Process finished with exit code 0

以上就是Java實現RSA加密工具類的詳細內容,更多關于Java RSA加密工具類的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 常州减速机_减速机厂家_常州市减速机厂有限公司 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | 重庆波纹管|重庆钢带管|重庆塑钢管|重庆联进管道有限公司 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | QQ房产导航-免费收录优秀房地产网站_房地产信息网 | 路斯特伺服驱动器维修,伦茨伺服驱动器维修|万骏自动化百科 | 华东师范大学在职研究生招生网_在职研究生招生联展网 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 在线PH计-氧化锆分析仪-在线浊度仪-在线溶氧仪- 无锡朝达 | 电子海图系统-电梯检验系统-智慧供热系统开发-商品房预售资金监管系统 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 儿童语言障碍训练-武汉优佳加感统文化发展有限公司 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 炒货机-炒菜机-炒酱机-炒米机@霍氏机械 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 深圳市八百通智能技术有限公司官方网站| 亮点云建站-网站建设制作平台 | 全自动包衣机-无菌分装隔离器-浙江迦南科技股份有限公司 | 模具钢_高速钢_不锈钢-万利钢金属材料 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 耐热钢-耐磨钢-山东聚金合金钢铸造有限公司 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | SF6环境监测系统-接地环流在线监测装置-瑟恩实业 | 影合社-影视人的内容合作平台| 苏州西朗门业-欧盟CE|莱茵UL双认证的快速卷帘门品牌厂家 | 网站seo优化_seo云优化_搜索引擎seo_启新网络服务中心 | 深圳网站建设-高端企业网站开发-定制网页设计制作公司 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 |