JavaUtil_06_DES加解密工具

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 一、示例 CommonUtil.java package com.ray.test.des; import java.io.ByteArrayOutputStream; import java.

一、示例

CommonUtil.java

package com.ray.test.des;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
 
public class CommonUtil {
    public static void main(String[] args) {
      
       byte[] before=new byte[] {80, 75, 3, 4, 10, 60, 82, -83, 68, 8, 0, 28, 0, 80, 97, 121, 108, 108};
       String mes=getStringFromBytes(before);
    
       byte[] after=getBytesFromString(  mes);
       
       
       System.out.println("before= "+Arrays.toString(before));
       System.out.println("after = "+Arrays.toString(after));
    }
    
    
    public static String  getStringFromBytes( byte[] before ) {
          BASE64Encoder enc=new BASE64Encoder();
          String mes=enc.encodeBuffer(before); //使用BASE64编码
        return mes;
    }
    
    public static byte[]  getBytesFromString( String mes) {
         BASE64Decoder dec=new BASE64Decoder();
         byte[]after=null;
         try {
             after =dec.decodeBuffer(mes);//使用BASE64解码
         } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }       return after;
  }
  
    
    
}
View Code

 

DESTest.java

package com.ray.test.des;

import java.io.IOException;
import java.security.SecureRandom;
import java.util.Arrays;

import javax.crypto.Cipher;  
import javax.crypto.SecretKey;  
import javax.crypto.SecretKeyFactory;  
import javax.crypto.spec.DESKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;  
  
/** 
 * DESTest.java 
 *  
 * @author Techzero 
 * @Email techzero@163.com 
 * @Time 2013-12-12 下午2:22:58 
 */  
public class DESTest {  
  
    /** 
     * @param args 
     * @throws IOException 
     */  
    public static void main(String[] args) throws IOException {  
        String content = "wzm";  
        // 密码长度必须是8的倍数  
        String password = "12345678";  
        System.out.println("密 钥:" + password);  
        System.out.println("加密前:" + content);  
        
        //1.加密
        byte[] result = encrypt(content, password);  
        System.out.println("result  length:" + result.length);

        System.out.println("加密后:" + Arrays.toString(result));
        
        //2.解密
        String decryResult = decrypt(result, password);  
        System.out.println("解密后:" + decryResult);  
        
       
        //3.将字节转String
        String mes=CommonUtil.getStringFromBytes(result);  
        System.out.println("mes:" + mes);  
        
        //4.将String转字节
        byte[] after=CommonUtil.getBytesFromString(mes);
        
        String decryResultString =decrypt(after, password);
        System.out.println("decryResultString解密后:" + decryResultString); 
       
        
    }  
  
    /** 
     * 加密 
     *  
     * @param content 
     *            待加密内容 
     * @param key 
     *            加密的密钥 
     * @return 
     */  
    public static byte[] encrypt(String content, String key) {  
        try {  
            SecureRandom random = new SecureRandom();  
            DESKeySpec desKey = new DESKeySpec(key.getBytes());  
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");  
            SecretKey securekey = keyFactory.generateSecret(desKey);  
            Cipher cipher = Cipher.getInstance("DES");  
            cipher.init(Cipher.ENCRYPT_MODE, securekey, random);  
            byte[] result = cipher.doFinal(content.getBytes());  
            return result;  
        } catch (Throwable e) {  
            e.printStackTrace();  
        }  
        return null;  
    }  
  
    /** 
     * 解密 
     *  
     * @param content 
     *            待解密内容 
     * @param key 
     *            解密的密钥 
     * @return 
     */  
    public static String decrypt(byte[] content, String key) {  
        try {  
            SecureRandom random = new SecureRandom();  
            DESKeySpec desKey = new DESKeySpec(key.getBytes());  
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");  
            SecretKey securekey = keyFactory.generateSecret(desKey);  
            Cipher cipher = Cipher.getInstance("DES");  
            cipher.init(Cipher.DECRYPT_MODE, securekey, random);  
            byte[] result = cipher.doFinal(content);  
            return new String(result);  
        } catch (Throwable e) {  
            e.printStackTrace();  
        }  
        return null;  
    }  
    
    
    
}  
View Code

 

 

 

 

 

 

二、参考资料

1.Java DES 加密 解密 示例

 

目录
相关文章
|
6月前
|
算法 搜索推荐 Java
DES - 对称加密算法简要介绍与JAVA实现
DES - 对称加密算法简要介绍与JAVA实现
109 2
|
5月前
|
存储 算法 安全
Java中的DES和3DES加密算法详解
Java中的DES和3DES加密算法详解
|
5月前
|
Java C# 数据安全/隐私保护
|
6月前
|
存储 算法 安全
java des加解密啊
【2月更文挑战第8天】
|
算法 安全 Java
【算法】Java实现DES算法
DES(Data Encryption Standard)是一种对称密钥加密算法,它是在1977年被美国国家标准局(NBS,现在的NIST)发布的。
398 0
|
算法 Java 关系型数据库
JSP基于DES算法管理系统myeclipse开发mysql数据库web结构java编程jsp展现
JSP 基于DES算法管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,mysql数据库存储,系统主要采用B/S模式开发。
71 0
|
算法 Java
java的DES和3DES加解密算法
java的DES和3DES加解密算法
|
算法 Java
java 版DES和MAC算法
java 版DES和MAC算法
|
Java 数据安全/隐私保护
JAVA DES加密解密代码范例
JAVA DES加密解密代码范例
166 0
|
数据安全/隐私保护
DES解密:java.security.InvalidKeyException: Parameters missing
DES解密:java.security.InvalidKeyException: Parameters missing
159 0