使用DES加密解密的工具类

本文介绍了一个实用的AES加密解密工具类DesUtil。该工具类提供了创建密钥、加密和解密的方法,并展示了如何使用不同的密钥进行加密及解密操作。此外,还演示了当使用错误密钥解密时的异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个工具类,很常用,不做深入研究了,那来可直接用

 

DesUtil.java

 

[java]  view plain copy
  1. package lsy;  
  2.   
  3. import java.security.Key;  
  4. import java.security.SecureRandom;  
  5.   
  6. import javax.crypto.Cipher;  
  7. import javax.crypto.KeyGenerator;  
  8. import javax.crypto.SecretKey;  
  9.   
  10. import sun.misc.BASE64Decoder;  
  11. import sun.misc.BASE64Encoder;  
  12.   
  13. public class DesUtil {  
  14.   
  15.     /** 
  16.      * @param args 
  17.      */   
  18.     public static void main(String[] args) {  
  19.         //以下是加密方法algorithm="AES"的测试  
  20.           
  21.         System.out.println(DesUtil.getInstance("lushuaiyin").getEnCodeString("hello"));  
  22.         //输出  LDewGAZkmWHeYFjBz56ylw==  
  23.         //将上面的密文解密:  
  24.         System.out.println(DesUtil.getInstance("lushuaiyin").getDecodeString("LDewGAZkmWHeYFjBz56ylw=="));  
  25.         //输出   hello  
  26.           
  27.         //改变密钥测试  
  28.         System.out.println(DesUtil.getInstance("suolong").getEnCodeString("hello"));  
  29.         //输出  /RLowOJ+Fr3KdMcdJeNatg==  
  30.         System.out.println(DesUtil.getInstance("suolong").getDecodeString("/RLowOJ+Fr3KdMcdJeNatg=="));  
  31.         //输出   hello  
  32.           
  33.         //如果使用不正确的密钥解密,将会:  
  34.         System.out.println(DesUtil.getInstance("suolong").getDecodeString("LDewGAZkmWHeYFjBz56ylw=="));  
  35.           
  36.     }  
  37.       
  38.     private  SecretKey key=null;//密钥  
  39.       
  40.     //定义 加密算法,可用 DES,DESede,Blowfish,AES   
  41.     //不同的加密方式结果会不同  
  42.     private  static String algorithm="AES";  
  43.   
  44.     private  static DesUtil desUtil=null;  
  45.       
  46.       
  47.     public DesUtil(){}  
  48.       
  49.     public static DesUtil getInstance(String strKey){  
  50.         desUtil=new DesUtil();  
  51.         desUtil.createKey(strKey);  
  52.         return desUtil;  
  53.     }  
  54.     /** 
  55.      * algorithm 算法 
  56.      * @param strKey 
  57.      */  
  58.     public void createKey(String strKey){  
  59.           
  60.         try{  
  61.             KeyGenerator kg=KeyGenerator.getInstance(DesUtil.algorithm);  
  62.             byte[] bt=strKey.getBytes("UTF-8");  
  63.             SecureRandom sr=new SecureRandom(bt);  
  64.             kg.init(sr);  
  65.             this.setKey(kg.generateKey());  
  66.         }catch(Exception e){  
  67.               
  68.         }  
  69.     }  
  70.     /** 
  71.      * 加密方法,返回密文 
  72.      * cipher 密码 
  73.      * @param dataStr 
  74.      */  
  75.     public  String getEnCodeString(String dataStr){  
  76.         byte[] miwen=null;//密文  
  77.         byte[] mingwen=null;//明文  
  78.         Cipher cipher;  
  79.         String result="";//密文字符串  
  80.         try{  
  81.             mingwen=dataStr.getBytes("UTF-8");  
  82.             cipher=Cipher.getInstance(DesUtil.algorithm);  
  83.             cipher.init(Cipher.ENCRYPT_MODE, this.getKey());  
  84.             miwen=cipher.doFinal(mingwen);  
  85.               
  86.             BASE64Encoder base64en = new BASE64Encoder();   
  87.             result=base64en.encodeBuffer(miwen);//或者可以用下面的方法得到密文,结果是不一样的,都可以正常解密  
  88. //          result=byte2hex(miwen);//密文结果类似2C:37:B0:18:06:64:99:61:DE:60:58:C1:CF:9E:B2:97  
  89.         }catch(Exception e){  
  90.             e.printStackTrace();  
  91.         }  
  92.         return result;  
  93.     }  
  94.       
  95.     /** 
  96.      * 解密方法,返回明文 
  97.      * @param codeStr 
  98.      * @return 
  99.      */  
  100.     public  String getDecodeString(String codeStr){  
  101.         BASE64Decoder base64De = new BASE64Decoder();  
  102.         byte[] miwen=null;  
  103.         byte[] mingwen=null;  
  104.         String resultData="";//返回的明文  
  105.         Cipher cipher;  
  106.         try{  
  107.             miwen=base64De.decodeBuffer(codeStr);  
  108.             cipher=Cipher.getInstance(DesUtil.algorithm);  
  109.             cipher.init(Cipher.DECRYPT_MODE, this.getKey());  
  110.               
  111.             mingwen=cipher.doFinal(miwen);  
  112.             resultData = new String(mingwen,"UTF-8");    
  113.         }catch(Exception e){  
  114.             return "密钥不正确或其他原因导致异常,无法解密!";  
  115.         }  
  116.           
  117.         return resultData;  
  118.     }  
  119.       
  120.      //二行制转字符串  
  121.     public String byte2hex(byte[] b) {  
  122.         String hs = "";  
  123.         String stmp = "";  
  124.         for (int n = 0; n < b.length; n++) {  
  125.             stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));  
  126.             if (stmp.length() == 1)  
  127.                 hs = hs + "0" + stmp;  
  128.             else  
  129.                 hs = hs + stmp;  
  130.             if (n < b.length - 1)  
  131.                 hs = hs + ":";  
  132.         }  
  133.         return hs.toUpperCase();  
  134.     }   
  135.   
  136.   
  137.        
  138.     public  SecretKey getKey() {  
  139.         return key;  
  140.     }  
  141.     public  void setKey(SecretKey key) {  
  142.         this.key = key;  
  143.     }  
  144.     public static String getAlgorithm() {  
  145.         return algorithm;  
  146.     }  
  147.     public static void setAlgorithm(String algorithm) {  
  148.         algorithm = algorithm;  
  149.     }  
  150.       
  151.       
  152. }  


 

打印:

LDewGAZkmWHeYFjBz56ylw==

hello
/RLowOJ+Fr3KdMcdJeNatg==

hello
密钥不正确或其他原因导致异常,无法解密!

内容概要:本文档详细介绍了基于MATLAB实现多目标差分进化(MODE)算法进行无人机三维路径规划的项目实例。项目旨在提升无人机在复杂三维环境中路径规划的精度、实时性、多目标协调处理能力、障碍物避让能力和路径平滑性。通过引入多目标差分进化算法,项目解决了传统路径规划算法在动态环境和多目标优化中的不足,实现了路径长度、飞行安全距离、能耗等多个目标的协调优化。文档涵盖了环境建模、路径编码、多目标优化策略、障碍物检测与避让、路径平滑处理等关键技术模块,并提供了部分MATLAB代码示例。 适合人群:具备一定编程基础,对无人机路径规划和多目标优化算法感兴趣的科研人员、工程师和研究生。 使用场景及目标:①适用于无人机在军事侦察、环境监测、灾害救援、物流运输、城市管理等领域的三维路径规划;②通过多目标差分进化算法,优化路径长度、飞行安全距离、能耗等多目标,提升无人机任务执行效率和安全性;③解决动态环境变化、实时路径调整和复杂障碍物避让等问题。 其他说明:项目采用模块化设计,便于集成不同的优化目标和动态环境因素,支持后续算法升级与功能扩展。通过系统实现和仿真实验验证,项目不仅提升了理论研究的实用价值,还为无人机智能自主飞行提供了技术基础。文档提供了详细的代码示例,有助于读者深入理解和实践该项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值