Java DES 测试
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 测试的更多相关文章
- 使用C# DES解密java DES加密的字符串
转自 microAllen 最近需要使用C#的DES解密工具类解密字符串,但是要解密的字符串是使用java进行DES加密的,去网上查了关于C#和java关于DES加密解密的资料,发现可以相互加密解 ...
- Java Des加解密方法(c#加密Java解密)
最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ...
- 转: java DES的算法片码
转自: https://www.zhihu.com/question/36767829 作者:郭无心链接:https://www.zhihu.com/question/36767829/answer/ ...
- Java反序列化测试
前言:有没有想过,如何将对象进行“加密”后写入磁盘?序列化帮你实现! 1.概念 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写 ...
- 零成本实现接口自动化测试 – Java+TestNG 测试Restful service
接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, ...
- Android AIDL自动生成Java文件测试
/******************************************************************************** * Android AIDL自动生成 ...
- Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流
#Java基础测试 涉及知识点:数组,面向对象,重载,重写,继承,集合,排序,线程,文件流 一.多项选择题(可能是单选,也可能是多选) 1.下列标识符命名不合法的是( D ). A.$_Name ...
- JMeter 压测基础(四)——Java工程测试
JMeter Java工程测试 1.eclipse中新建工程 2.导入需要的jar包 从JMeter安装目录lib/ext中两个jar包buildPath到Java project中,分别是“Apac ...
- Java常用测试工具
第一部分:九款性能测试 Java入门 如果你才刚开始接触Java世界,那么要做的第一件事情是,安装JDK——Java Development Kit(Java开发工具包),它自带有Java Runti ...
随机推荐
- static关键字使用
static关键字对一些公共使用的数据,比如是饭店筷子,不可能说每个人去饭店吃饭的时候自带一双筷子,饭店的筷子对于进店吃饭的对象都是公共的; 静态变量,跟其他变量不同的是,它是与类关联的,其他变量则是 ...
- VMware Ubuntu安装详细过程
参考链接: http://blog.csdn.net/u013142781/article/details/50529030
- Demo_敌军坦克生成,坦克移动(可以拓展发射子弹,敌军消失获取分数或者添加动画,声音功能)
using UnityEngine; using System.Collections; public class Tank : MonoBehaviour { //坦克面积结构体对象 public ...
- Ubuntu 13.04 安装 GCC4.8.1
终于有了完整实现C++11的GCC 4.8.1. 给自己的系统升级吧. 下面的步骤可以安装GCC4.8.1, 内容来自:http://askubuntu.com/questions/312620/ho ...
- IOS开发之Post 方式获取服务器数据
//1.创建post方式的 参数字符串url +(NSString *)createPostURL:(NSMutableDictionary *)params { NSString *postStri ...
- 一起来写2048(160行python代码)
前言: Life is short ,you need python. --Bruce Eckel 我与2048的缘,不是缘于一个玩家,而是一次,一次,重新的ACM比赛.四月份校赛初赛,第一次碰到20 ...
- [Redux] Avoiding Array Mutations with concat(), slice(), and ...spread
For Redux, you cannot use mutable methods like push, splice. Need to use immutable methods such as c ...
- 一个Nodejs的简单计算測试程序
測试目的: 1 測试二维数组的使用 2 输出函数的使用 代码: var util = require('util'); a = 3; b = 4; c = a + b; a = []; for(i = ...
- boost 相等与等价的区别
- myqltransactionRollbackexception deadlock found when trying to get lock
linux 下远程连接mysq 命令: mysql -h "1.0.0.1" -u username -p 1 获 取锁等待情况 可以通过检查 table_locks_waited ...