




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* * DesEncrypt.java * * Created on 2007-9-20, 16:10:47 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ /思路: 因为 任意一个字符串,都是由若干字节表示的,每个字节实质就是一个 / 有8位的进进制数, / 又因为 一个8位二进制数,可用两位16进制字符串表示. / 因此 任意一个字符串可以由两位16进制字符串表示。 / 而 DES是对8位二进制数进行加密,解密。 / 所以 用DES加密解密时,可以把加密所得的8位进进制数,转成 / 两位16进制数进行保存,传输。 / 具体方法:1 把一个字符串转成8位二进制数,用DES加密,得到8位二进制数的 / 密文 / 2 然后把(由1)所得的密文转成两位十六进制字符串 / 3 解密时,把(由2)所得的两位十六进制字符串,转换成8位二进制 / 数的密文 / 4 把子3所得的密文,用DES进行解密,得到8位二进制数形式的明文, / 并强制转换成字符串。 / 思考:为什么要通过两位16进制数字符串保存密文呢? / 原因是:一个字符串加密后所得的8位二进制数,通常不再时字符串了,如果 / 直接把这种密文所得的8位二进制数强制转成字符串,有许多信息因为异 / 常而丢失,导制解密失败。因制要把这个8位二制数,直接以数的形式 / 保存下来,而通常是用两位十六进制数表示。 package frelationmainten; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; /* * * 使用DES加密与解密,可对byte,String类型进行加密与解密 密文可使用String,byte存储. * * 方法: void getKey(String strKey)从strKey的字条生成一个Key * * String getEncString(String strMing)对strMing进行加密,返回String密文 String * getDesString(String strMi)对strMin进行解密,返回String明文 * * byte getEncCode(byte byteS)byte型的加密 byte getDesCode(byte * byteD)byte型的解密 */ public class DesEncrypt Key key; /* * 根据参数生成KEY * * param strKey */ public void getKey(String strKey) try KeyGenerator _generator = KeyGenerator.getInstance(DES); _generator.init(new SecureRandom(strKey.getBytes(); this.key = _generator.generateKey(); _generator = null; catch (Exception e) e.printStackTrace(); /* * 加密String明文输入,String密文输出 * * param strMing * return */ public String getEncString(String strMing) byte byteMi = null; byte byteMing = null; String strMi = ; try return byte2hex(getEncCode(strMing.getBytes(); / byteMing = strMing.getBytes(UTF8); / byteMi = this.getEncCode(byteMing); / strMi = new String( byteMi,UTF8); catch (Exception e) e.printStackTrace(); finally byteMing = null; byteMi = null; return strMi; /* * 解密 以String密文输入,String明文输出 * * param strMi * return */ public String getDesString(String strMi) byte byteMing = null; byte byteMi = null; String strMing = ; try return new String(getDesCode(hex2byte(strMi.getBytes(); / byteMing = this.getDesCode(byteMi); / strMing = new String(byteMing,UTF8); catch (Exception e) e.printStackTrace(); finally byteMing = null; byteMi = null; return strMing; /* * 加密以byte明文输入,byte密文输出 * * param byteS * return */ private byte getEncCode(byte byteS) byte byteFina = null; Cipher cipher; try cipher = Cipher.getInstance(DES); cipher.init(Cipher.ENCRYPT_MODE, key); byteFina = cipher.doFinal(byteS); catch (Exception e) e.printStackTrace(); finally cipher = null; return byteFina; /* * 解密以byte密文输入,以byte明文输出 * * param byteD * return */ private byte getDesCode(byte byteD) Cipher cipher; byte byteFina = null; try cipher = Cipher.getInstance(DES); cipher.init(Cipher.DECRYPT_MODE, key); byteFina = cipher.doFinal(byteD); catch (Exception e) e.printStackTrace(); finally cipher = null; return byteFina; /* * 二行制转字符串 * * param b * return */ public static String byte2hex(byte b) / 一个字节的数, / 转成16进制字符串 String hs = ; String stmp = ; for (int n = 0; n b.length; n+) / 整数转成十六进制表示 stmp = (java.lang.Integer.toHexString(bn & 0XFF); if (stmp.length() = 1) hs = hs + 0 + stmp; else hs = hs + stmp; return hs.toUpperCase(); / 转成大写 public static byte hex2byte(byte b) if (b.length % 2) != 0) throw new IllegalArgumentException(长度不是偶数); byte b2 = new byteb.length / 2; for (int n = 0; n b.length; n += 2) String item = new String(b, n, 2); / 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个进制字节 b2n / 2 = (byte) Integer.parseInt(item, 16); return b2; public static void main(String args) DesEncrypt des = new DesEncrypt();/ 实例化一个对像 des.getKey(aadd);/ 生成密匙 String
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年BIM模型在施工质量验收中的应用考核试卷
- 2025年建筑电工职业技能竞赛建筑电气物联网技术应用考核试卷
- 2025年民用航空无人机监管与安保措施考核试卷
- 考点解析-人教版八年级物理上册第5章透镜及其应用达标测试试题
- 学校公众号信息发布与运营管理制度(2025年版)
- 解析卷人教版八年级上册物理《物态变化》同步测试试题(含详解)
- 2025年建筑工程质量监督合同协议
- 郑州益源耐火材料有限公司营运资金管理问题研究
- 2024年环境监测质量目标管理考核试卷
- 102.《短视频剪辑节奏与背景音乐卡点考核》
- 2025年抗菌药物合理使用培训考试试题含答案
- 汽车充电桩场地安全使用协议书9篇
- 小学三年级英语教学计划
- 酒店海鲜供应配送合作合同5篇
- 幸福食堂运营补贴申请书
- 2025年中国盐业集团招聘面试模拟题集
- 中国铁建股份有限公司招聘笔试题目
- 电梯安全应急预案培训课件
- 七上数学期中复习压轴题小纸条【空白】
- 2025至2030中国建筑设计行业市场深度调研及战略决策及有效策略与实施路径评估报告
- 基于知识、能力、素养培养的2026届高考历史复习备考策略讲座
评论
0/150
提交评论