package com.des.test;

import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import org.apache.commons.codec.binary.Base64; /**
*
* @author y
*/
public class DESUtil {
private static final String CHARSET_TYPE = "UTF-8";
private static final String ENCRYPT_KEY = "Z7CKBCcc5KwlZqjbunr1yhZG5nM";
private static final String ENCRYPT_SCHEME = "DESede"; byte[] keyAsBytes; private final KeySpec myKeySpec;
private final SecretKeyFactory mySecretKeyFactory;
private final Cipher cipher;
private final SecretKey key; public DESUtil() throws InvalidKeyException, UnsupportedEncodingException,
NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeySpecException{ keyAsBytes = ENCRYPT_KEY.getBytes(CHARSET_TYPE);
myKeySpec = new DESedeKeySpec(keyAsBytes);
mySecretKeyFactory = SecretKeyFactory.getInstance(ENCRYPT_SCHEME);
cipher = Cipher.getInstance(ENCRYPT_SCHEME);
key = mySecretKeyFactory.generateSecret(myKeySpec);
} public String encrypt(String unencryptedString) {
String encryptedString = null;
try {
cipher.init(Cipher.ENCRYPT_MODE, key); byte[] plainText = unencryptedString.getBytes(CHARSET_TYPE);
byte[] encryptedText = cipher.doFinal(plainText); Base64 base64 = new Base64(); encryptedString = base64.encodeAsString(encryptedText);
} catch (InvalidKeyException ex) {
Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalBlockSizeException ex) {
Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (BadPaddingException ex) {
Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
} return encryptedString;
} public String decrypt(String encryptedString) {
String decryptedText=null;
try {
cipher.init(Cipher.DECRYPT_MODE, key); Base64 base64 = new Base64(); byte[] encryptedText = base64.decode(encryptedString);
byte[] plainText = cipher.doFinal(encryptedText); decryptedText = new String(plainText,CHARSET_TYPE);
} catch (InvalidKeyException ex) {
Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalBlockSizeException ex) {
Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (BadPaddingException ex) {
Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
} return decryptedText;
} public static void main(String[] args) throws Exception {
String str = "hello,这是Java DES加密测试数据"; DESUtil desUtil = new DESUtil(); System.out.println("==desc before:"+str);
String encryptStr = desUtil.encrypt(str);
System.out.println("==desc after:"+encryptStr);
System.out.println("==descrypt:"+desUtil.decrypt(encryptStr));
}
}

Java DES 测试的更多相关文章

  1. 使用C# DES解密java DES加密的字符串

    转自 microAllen   最近需要使用C#的DES解密工具类解密字符串,但是要解密的字符串是使用java进行DES加密的,去网上查了关于C#和java关于DES加密解密的资料,发现可以相互加密解 ...

  2. Java Des加解密方法(c#加密Java解密)

    最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...

  3. 转: java DES的算法片码

    转自: https://www.zhihu.com/question/36767829 作者:郭无心链接:https://www.zhihu.com/question/36767829/answer/ ...

  4. Java反序列化测试

    前言:有没有想过,如何将对象进行“加密”后写入磁盘?序列化帮你实现! 1.概念 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写 ...

  5. 零成本实现接口自动化测试 – Java+TestNG 测试Restful service

    接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...

  6. Android AIDL自动生成Java文件测试

    /******************************************************************************** * Android AIDL自动生成 ...

  7. Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流

    #Java基础测试 涉及知识点:数组,面向对象,重载,重写,继承,集合,排序,线程,文件流 一.多项选择题(可能是单选,也可能是多选) 1.下列标识符命名不合法的是(   D  ). A.$_Name ...

  8. JMeter 压测基础(四)——Java工程测试

    JMeter Java工程测试 1.eclipse中新建工程 2.导入需要的jar包 从JMeter安装目录lib/ext中两个jar包buildPath到Java project中,分别是“Apac ...

  9. Java常用测试工具

    第一部分:九款性能测试 Java入门 如果你才刚开始接触Java世界,那么要做的第一件事情是,安装JDK——Java Development Kit(Java开发工具包),它自带有Java Runti ...

随机推荐

  1. Appium 环境搭建

    1.安装nodejs 下载地址: http://nodejs.org/download/ 下载之后一路next就好. 验证是否安装成功: node -v

  2. objc非主流代码技巧

    原文:http://blog.sunnyxx.com/2014/08/02/objc-weird-code/ [娱乐向]objc最短的方法声明 先来个娱乐向的.方法声明时有一下几个trick: 返回值 ...

  3. Java中直接输出一个类的对象

    例如 package com.atguigu.java.fanshe; public class Person { String name; private int age; public Strin ...

  4. 3D视频可能出现的质量问题 (MSU出品)

    俄罗斯的MSU Graphics & Media Lab (Video Group)提出的3D视频存在的几种问题.有一定的参考价值,在此翻译一下. 他们目前总结出4种问题: 水平视差(Hori ...

  5. C# 关键字--using

    using 关键字有两个主要用途:  (一).作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型.  (二).作为语句,用于定义一个范围,在此范围的末尾将释放对象. using指令    ...

  6. Ionic文件目录说明

    hooks   //google之后这个目录应该是在编译cordova时自定义的脚本命令,方便整合到我们的编译系统和版本控制系统中 plugins  //cordova插件的目录,插件的安装下一节详述 ...

  7. RESTFul中的那些事(1)---在RESTFul中,HTTP Put和Patch操作的差别?

    笔者在用调用Google Calendar和Google Tasks的RESTFul API的时候.遇到了一个特殊的操作,PATCH. 那么PATCH操作和PUT操作的差别是什么呢? 依据PATCH ...

  8. [Redux] Store Methods: getState(), dispatch(), and subscribe()

    console.clear(); const counter = (state = 0, action) => { switch (action.type) { case 'INCREMENT' ...

  9. USACO lamps

    IOI 98称号.然后,它似乎没有很困难.即使我能做到这一点微弱的残留物.所有的button按两次不按,高达因此实际上总的等效按4二级,首先C往下<=4,则搜索将能直接照射,总共只有16状态(事 ...

  10. mongodb入门教程

    title: mongodb入门教程 date: 2016-04-06 14:47:18 tags: --- 为什么要认识呢,因为这玩意就一傻逼 借用一下百科的介绍 MongoDB 是一个介于关系数据 ...