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

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

java 實現DES 加密解密的示例

瀏覽:4日期:2022-08-20 09:55:07

package com.cn.peitest;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import javax.crypto.spec.IvParameterSpec;/** * @功能說明: <BR> * @創建日期:2016年9月21日<BR> * @變更記錄:<BR> * 1、2016年9月21日 LeoLu 更新 */public class DESUtil { /**用于建立大寫的十六進制字符的輸出*/ private static final char[] DIGITS_UPPER = { ’0’, ’1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’, ’A’, ’B’, ’C’, ’D’, ’E’, ’F’ }; /**DES向量*/ private static final byte[] iv = {0x12, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef}; //private static final Logger log = LoggerFactory.getLogger(DESUtil.class); /** * @函數名稱:encodeHex<br> * @創建日期:2016年9月22日<br> * @功能說明: 將字節數組轉換為十六進制字節數組 <br> * @參數說明:data byte[] 字節數組<br> * @參數說明:toDigits char[] 向量<br> * @返回說明:十六進制char[] */ private static char[] encodeHex(byte[] data, char[] toDigits) { int l = data.length; char[] out = new char[l << 1]; for (int i = 0, j = 0; i < l; i++) { out[j++] = toDigits[(0xF0 & data[i]) >>> 4]; out[j++] = toDigits[0x0F & data[i]]; } return out; } /** * @函數名稱:encodeHexStr<br> * @創建日期:2016年9月22日<br> * @功能說明:將16進制字節數組轉換為十六進制字符串 <br> * @參數說明:data byte[] 16進制字節數組 <br> * @參數說明:toDigits char[] 向量 <br> * @返回說明:String 返回16進制字符串 */ private static String encodeHexStr(byte[] data, char[] toDigits) { return new String(encodeHex(data, toDigits)); } /** * @函數名稱:hexStringToString<br> * @創建日期:2016年9月21日<br> * @功能說明:將16進制字符串轉換為10進制字符串 <br> * @參數說明:str String 16進制字符串 <br> * @返回說明:String */ private static String hexStringToString(String str) { if (str == null || str.equals('')) { return null; } str = str.replace(' ', ''); byte[] baKeyword = new byte[str.length() / 2]; for (int i = 0; i < baKeyword.length; i++) { try { baKeyword[i] = (byte) (0xff & Integer.parseInt( str.substring(i * 2, i * 2 + 2), 16)); } catch (Exception e) { e.printStackTrace(); } } try { str = new String(baKeyword, 'UTF-8'); new String(); } catch (Exception e1) { e1.printStackTrace(); } return str; } /** * @函數名稱:encrypt<br> * @創建日期:2016年9月22日<br> * @功能說明:加密字節數組 <br> * @參數說明:arrB byte[] 需要加密的字節數組 <br> * @參數說明:key String 秘鑰 <br> * @返回說明:byte[] */ private static byte[] encrypt(byte[] arrB, String key) throws Exception { return converCrypt(arrB, key, true); } /** * @函數名稱:encrypt<br> * @創建日期:2016年9月22日<br> * @功能說明:加密字符串 <br> * @參數說明:xml String 加密字符串 <br> * @參數說明:key String 秘鑰 <br> * @返回說明:String 返回加密后的16進制字符串 */ public static String encrypt(String xml, String key) { try { return encodeHexStr(encrypt(xml.getBytes('UTF-8'), key), DIGITS_UPPER); } catch (Exception e) { System.out.println(e); return ''; } } /** * @函數名稱:decrypt<br> * @創建日期:2016年9月22日<br> * @功能說明: 將16進制字節數組進行解密 <br> * @參數說明: arrB byte[] 解密字節數組<br> * @參數說明:key String 秘鑰 <br> * @返回說明:byte[] 返回解密后 的16位字節數組 */ private static byte[] decrypt(byte[] arrB, String key) throws Exception { return converCrypt(arrB, key, false); } /** * @函數名稱:converCrypt<br> * @創建日期:2016年9月22日<br> * @功能說明:將16位的字節數據進行加密或解密 <br> * @參數說明: arrB byte[] 需要加密的字節數組<br> * @參數說明: key String 秘鑰<br> * @參數說明:encrypt boolean是否加密,true加密,false解密 <br> * @返回說明:byte[] 返回16進制字節數組 */ private static byte[] converCrypt(byte[] arrB, String key, boolean encrypt) throws Exception{ String vikey = MD5.sign(key).substring(0, 8).toUpperCase(); DESKeySpec desKeySpec = new DESKeySpec(vikey.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance('DES'); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); IvParameterSpec ivp = new IvParameterSpec(vikey.getBytes()); Cipher cipher = Cipher.getInstance('DES/CBC/PKCS5Padding'); /**加密*/ if (encrypt == true) { cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivp); } else{ /**解密*/ cipher.init(Cipher.DECRYPT_MODE, secretKey, ivp); } return cipher.doFinal(arrB); } /** * @函數名稱:decrypt<br> * @創建日期:2016年9月22日<br> * @功能說明:解密16進制字符串 <br> * @參數說明: desStr String 需要解密的16進制字符串<br> * @參數說明: key String 秘鑰<br> * @返回說明:String 返回解密后的10進制字符串 */ public static String decrypt(String desStr, String key) { try{ if (null == desStr || null == key) { return ''; } return hexStringToString(encodeHexStr(decrypt(hexStringToByte(new String(desStr.getBytes('UTF-8'))), key), DIGITS_UPPER)); } catch (Exception e) { System.out.println(); return ''; } } /** * @函數名稱:hexStringToByte<br> * @創建日期:2016年9月22日<br> * @功能說明:將16進制字符串轉換為16進制字節數組 <br> * @參數說明:hex String需要轉換的16進制字符串 <br> * @返回說明:byte[] 返回轉換后的16進制字節數組 */ private static byte[] hexStringToByte(String hex) { int len = (hex.length() / 2); byte[] result = new byte[len]; char[] achar = hex.toCharArray(); for (int i = 0; i < len; i++) { int pos = i * 2; result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1])); } return result; } /** * @函數名稱:toByte<br> * @創建日期:2016年9月22日<br> * @功能說明: 將字符轉換為字節<br> * @參數說明: c char 需要轉換的字符<br> * @返回說明:int 返回字符對應的字節碼 */ private static int toByte(char c) { byte b = (byte) '0123456789ABCDEF'.indexOf(c); return b; } /** * @構造函數 */ public DESUtil() { // TODO Auto-generated constructor stub } /** * @函數名稱:main<br> * @創建日期:2016年9月21日<br> * @功能說明: <br> * @參數說明: <br> * @返回說明:void */ public static void main(String[] args) { // TODO Auto-generated method stub try { System.out.println('-----------------------------'); String bStr = '123'; String key = 'SZAOA589'; String binSing = encrypt(bStr, key); System.out.println('加密前:'+bStr); System.out.println('加密后:'+binSing); System.out.println('解密后:'+decrypt(binSing, key)); System.out.println('-------------------------'); } catch (Exception e) { // TODO Auto-generated catch bloc e.printStackTrace(); } //3B976A2A2919A60B57DFF3518F65E1FF //3B976A2A2919A60B57DFF3518F65E1FF /* * C4A737D04D0D05E2 BD2DD4FC5050EBD0 */ }}//================================package com.cn.peitest;import java.security.MessageDigest; public class MD5 { // 生成MD5(截取16位長度) public static String sign(String message) { String md5 = ''; try { MessageDigest md = MessageDigest.getInstance('MD5'); // 創建一個md5算法對象 byte[] messageByte = message.getBytes('UTF-8'); byte[] md5Byte = md.digest(messageByte); // 獲得MD5字節數組,16*8=128位 md5 = bytesToHex(md5Byte).substring(0, 16); // 轉換為16進制字符串 } catch (Exception e) { e.printStackTrace(); } return md5; } // 二進制轉十六進制 public static String bytesToHex(byte[] bytes) { StringBuffer hexStr = new StringBuffer(); int num; for (int i = 0; i < bytes.length; i++) { num = bytes[i]; if (num < 0) { num += 256; } if (num < 16) { hexStr.append('0'); } hexStr.append(Integer.toHexString(num)); } return hexStr.toString().toUpperCase(); }}

以上就是java 實現DES 加密解密的示例代碼的詳細內容,更多關于java des加密解密的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 北京中创汇安科贸有限公司 | 十字轴_十字轴万向节_十字轴总成-南京万传机械有限公司 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 江苏南京多语种翻译-专业翻译公司报价-正规商务翻译机构-南京华彦翻译服务有限公司 | 企业微信营销_企业微信服务商_私域流量运营_艾客SCRM官网 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 双效节能浓缩器-热回流提取浓缩机组-温州市利宏机械 | 沈阳缠绕包装机厂家直销-沈阳海鹞托盘缠绕包装机价格 | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 广东佛电电器有限公司|防雷开关|故障电弧断路器|智能量测断路器 广东西屋电气有限公司-广东西屋电气有限公司 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | 深圳装修_店面装修设计_餐厅设计_装修全包价格-尚泰装饰设计 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 电车线(用于供电给电车的输电线路)-百科 | 企业VI设计_LOGO设计公司_品牌商标设计_【北京美研】 | 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 门禁卡_智能IC卡_滴胶卡制作_硅胶腕带-卡立方rfid定制厂家 | 船用泵,船用离心泵,船用喷射泵,泰州隆华船舶设备有限公司 | 工业rfid读写器_RFID工业读写器_工业rfid设备厂商-ANDEAWELL | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 熔体泵_熔体出料泵_高温熔体泵-郑州海科熔体泵有限公司 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 雷达液位计_超声波风速风向仪_雨量传感器_辐射传感器-山东风途物联网 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 |