DES代码讲解
来源:互联网 发布:dracut命令安装linux 编辑:程序博客网 时间:2024/06/05 21:34
public class DESDemo {/* * DES加密介绍DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现。注意:DES加密和解密过程中,大于等于8位 */public static void main(String[] args) throws Exception { // 明文 String str = "hello des"; // 密码 String password = "12345678"; //大于等于8位 String desc = DESUlits.doWork(str, password,0); System.out.println("密文:" + desc); // 解密 str = DESUlits.doWork(desc, password,1); System.out.println("明文:" +str); }}
加密和解密的工具类
public class DESUlits {/** * 加密解密接口 * @param data 数据 * @param password 加密解密密码 必须8位字节 * @param flag 加密解密标志 0:加密 ,1:解密 * @return */ public static String doWork(String data, String password,int flag) { try { //1.DES算法要求有一个可信任的随机数源 SecureRandom random = new SecureRandom(); //2.创建一个DESKeySpec对象 DESKeySpec desKey = new DESKeySpec(password.getBytes()); //3.创建一个密匙工厂 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); //4.将DESKeySpec对象转换成SecretKey对象 SecretKey securekey = keyFactory.generateSecret(desKey); //5.Cipher对象实际完成加密/解密操作 Cipher cipher = Cipher.getInstance("DES"); //加密 if(flag == 0){ //创建一个BASE64Encoder对象进行加密 sun.misc.BASE64Encoder base64encoder = new sun.misc.BASE64Encoder(); //用密匙初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, random); //进行加密操作 return base64encoder.encode(cipher.doFinal(data.getBytes("UTF-8"))); }else{ //解密 ////创建一个BASE64Decoder对象进行解密 sun.misc.BASE64Decoder base64decoder = new sun.misc.BASE64Decoder(); byte[] encodeByte = base64decoder.decodeBuffer(data); //用密匙初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, random); //执行解密操作 byte[] decoder = cipher.doFinal(encodeByte); return new String(decoder,"UTF-8"); } } catch (Exception e) { e.printStackTrace(); } return null; } }
阅读全文
0 0
- DES代码讲解
- DES代码
- DES加密解密代码
- DES算法代码
- DES加密算法代码
- c++ DES加密代码
- c++ DES加密代码
- DES加密代码
- Des类,java代码
- 3des加密代码
- 一段Des加密解密代码
- des加密和解密代码
- java DES加密代码收藏
- PHP实现3DES代码
- des算法代码:内存移动算法代码
- DES加密程序代码(带有比较详细的讲解)
- des两种加密方式讲解和测试
- des
- HDU 4778 Gems Fight! 【记忆化搜索+位操作】
- POJ 2976 Dropping tests 01分数规划Dinkelbach算法
- 流程图
- Linux文件操作解析
- [JavaScript][AJAX]封装好的AJAX工具类
- DES代码讲解
- Java 应用发布后,需要关注的7个性能指标
- gcc工作流程
- RaspberryPi树莓派远程文件管理
- 日志(一)
- 51单片机外设之——按键的检测(快速识别)
- Java程序性能优化——性能指标
- 设计模式深入浅出(二)对象创建——Builder,原型,单例
- 校园网nat