一、示例

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 加密 解密 示例

JavaUtil_06_DES加解密工具的更多相关文章

  1. RSA加解密工具类RSAUtils.java,实现公钥加密私钥解密和私钥解密公钥解密

    package com.geostar.gfstack.cas.util; import org.apache.commons.codec.binary.Base64; import javax.cr ...

  2. Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

  3. Java中的RSA加解密工具类:RSAUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.utils.log.LogUtils; ...

  4. XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译

    XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译 <?xml version="1.0" encoding="UTF-8" ...

  5. CTF-Tools 一款CTF古典密码加解密工具

    CTF-Tools 一款CTF古典密码加解密工具 工具截图 工具简介 一款CTF编码.解码.加密.解密工具. 支持的编码解码: URL-UTF-8 URL-GB2312 Unicode Escape( ...

  6. vue 核心加解密工具类 方法

    1 /* base64 加解密 2 */ 3 export let Base64 = require('js-base64').Base64 4 5 /* md5 加解密 6 */ 7 export ...

  7. DES加解密工具类

    这两天在跟友商对接接口,在对外暴露接口的时候,因为友商不需要登录即可访问对于系统来说存在安全隐患,所以需要友商在调用接口的时候需要将数据加密,系统解密验证后才执行业务.所有的加密方式并不是万能的,只是 ...

  8. Des加解密工具

    import java.security.Key; import java.security.Security; import java.util.Date; import javax.crypto. ...

  9. UBT框架加解密工具项目 UBT.Framework.Encryption

    DESEncrypt.cs //==================================================================================== ...

随机推荐

  1. python并发编程之多进程二

    一,multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.P ...

  2. 迭代操作-->c:forEach和c:forTokens

    jstl--->Core 核心标签库-->c:forEach 在页面上遍历后台传到前台的数据是最基本的最常用的方法  主要包含两种迭代操作:forEach和forTokens 语法1:迭代 ...

  3. ##2.基础服务(SQl,RabbitMQ)-- openstack pike

    2-基础服务(SQl,RabbitMQ) openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.基础服务(Mysql ...

  4. Git快速入门和常用命令

    一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...

  5. scapy安装及SCTP包分析

    关于Scapy scapy是一个强大的交互式数据包处理程序(使用python编写).它能够伪造或者解码大量的网络协议数据包,能够发送.捕捉.匹配请求和回复包等.它可以很容易地处理一些典型操作,比如端口 ...

  6. C#的数据类型总结(2):decimal ,double,float的区别

    1> 三者是精度不同的浮点数,如下图 参见:https://docs.microsoft.com/zh-cn/dotnet/articles/csharp/language-reference/ ...

  7. Dynamics CRM可以设置会话超时和非活动超时吗?

    本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复266或者20171213可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  8. flask-login使用笔记

    看外国文献的中文翻译  翻译的程度有的让人会疯,翻译最好的状态是异译 直译会显的很生硬 看起来确实难过:所以在看的时候,建议都看外国文献吧,或者自己用谷歌翻译,感觉比一些翻译的博客准多了: 在使用fl ...

  9. linux kvm虚拟机使用

    安装配置kvm 1.安装kvm软件包 [root@kvm ~]# yum install kvm python-virtinst libvirt tunctl bridge-utils virt-ma ...

  10. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...