JavaUtil_06_DES加解密工具

一、示例

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;
  }
  
    
    
}

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;  
    }  
    
    
    
}  

二、参考资料

1.Java DES 加密 解密 示例

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hongten

PBE_Password-based encryption(基于密码加密)_项目中你也可以有

中说道了PBE——Password-based encryption(基于密码加密)。我也做测试了一下,现在把我做的效果给大家演示一下:

1021
来自专栏web开发

JavaScript前端和Java后端的AES加密和解密

在实际开发项目中,有些数据在前后端的传输过程中需要进行加密,那就需要保证前端和后端的加解密需要统一。这里给大家简单演示AES在JavaScript前端和Java...

7126
来自专栏小灰灰

java与openssl的rsa算法互

说明    1.java生成的公私钥格式为 pkcs8, 而openssl默认生成的公私钥格式为 pkcs1,两者的密钥实际上是不能直接互用的     2.j...

4438
来自专栏数据结构与算法

08:Vigenère密码

08:Vigenère密码 总时间限制: 1000ms 内存限制: 65536kB描述 16世纪法国外交家Blaise de Vigenère设计了一种多表...

4599
来自专栏技术博文

php des 加密解密实例

des加密是对称加密中在互联网应用的比较多的一种加密方式,php 通过mcrypt扩展库来支持des加密,要在Php中使用des加密,需要先安装mcrypt扩展...

48910
来自专栏Danny的专栏

RSA公钥加密私钥解密实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

1.2K2
来自专栏码农二狗

php实现rsa签名和验签

9174
来自专栏增长技术

Android RxJava

1812
来自专栏小工匠技术圈

【小工匠聊密码学】--对称加密--3DES

  3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于...

1062
来自专栏Android干货

浅谈DES加密算法

3865

扫码关注云+社区

领取腾讯云代金券