java des 加解密 通用版

最近开发的时候,遇到一个加密的模块,分享给大家

 

 

//JAVADES加密解密类 
import javax.crypto.Cipher; 
import javax.crypto.SecretKey; 
import javax.crypto.SecretKeyFactory; 
import javax.crypto.spec.DESKeySpec;  
import javax.crypto.spec.IvParameterSpec;
public class ThreedesUtil {
 
 //解密数据    
 public static String decrypt(String message,String key) throws Exception {    
          
         byte[] bytesrc =convertHexString(message);       
         Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");        
         DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));       
         SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");       
         SecretKey secretKey = keyFactory.generateSecret(desKeySpec);       
         IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));    
         cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);          
         byte[] retByte = cipher.doFinal(bytesrc);         
         return new String(retByte);     
 }   
 public static byte[] encrypts(String message, String key)    
         throws Exception {    
     Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");   
     DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));   
     SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");    
     SecretKey secretKey = keyFactory.generateSecret(desKeySpec);    
     IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));    
     cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);   
     return cipher.doFinal(message.getBytes("UTF-8"));    
 }   

 

//加密数据
 public static String encrypt(String value,String keys){ 
 String result=""; 
 try{ 
 value=java.net.URLEncoder.encode(value, "utf-8");  
 result=toHexString(encrypts(value,keys)).toUpperCase(); 
 }catch(Exception ex){ 
    ex.printStackTrace(); 
    return ""; 
 } 
 return result;  
 } 
 public static byte[] convertHexString(String ss)     
 {     
 byte digest[] = new byte[ss.length() / 2];     
 for(int i = 0; i < digest.length; i++)     
 {     
 String byteString = ss.substring(2 * i, 2 * i + 2);     
 int byteValue = Integer.parseInt(byteString, 16);     
 digest[i] = (byte)byteValue;     
 }     
 return digest;     
 }    
 public static String toHexString(byte b[]) {    
     StringBuffer hexString = new StringBuffer();    
     for (int i = 0; i < b.length; i++) {    
         String plainText = Integer.toHexString(0xff & b[i]);    
         if (plainText.length() < 2)    
             plainText = "0" + plainText;    
         hexString.append(plainText);    
     }       
     return hexString.toString();    
 }    
 public static void main(String[] args) throws Exception {    
     String value="509401040000223";
     String key = "cf8f9a26";
     System.out.println("加密数据:"+value);  
     System.out.println("密码为:"+key);  
     String a=encrypt(value,key);    
     System.out.println("加密后的数据为:"+a);    
 }  
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值