public class DESUtil {
private static String strdefaultkey = "13456789abcd";//默认的key
private Cipher encryptCipher = null;//加密
private Cipher decryptCipher = null;//解密 public static String byteArr2HexStr(byte[] arrb) {
int len = arrb.length;
StringBuffer sb = new StringBuffer(len * );
for (int i = ; i < len; i++) {
int inttmp = arrb[i];
while (inttmp < ) {
inttmp = inttmp + ;
}
if (inttmp < ) {
sb.append("");
}
sb.append(Integer.toString(inttmp, ));
}
return sb.toString();
} public static byte[] hexstr2byteatrr(String strin) {
byte[] arrb = strin.getBytes();
int len = arrb.length;
byte[] arro = new byte[len / ];
for (int i = ; i < len; i = i + ) {
String strt = new String(arrb, i, );
arro[i / ] = (byte) Integer.parseInt(strt, );
}
return arro;
} // public DesUtils() throws Exception {      this(strDefaultKey);    }
public DESUtil() throws Exception {
this(strdefaultkey);
} public DESUtil(String strdefaultkey2) throws Exception { Security.addProvider(new SunJCE());
Key key = getKey(strdefaultkey2.getBytes());
encryptCipher = Cipher.getInstance("DES");
encryptCipher.init(Cipher.ENCRYPT_MODE, key);
decryptCipher = Cipher.getInstance("DES");
decryptCipher.init(Cipher.DECRYPT_MODE, key);
} public byte[] encrypt(byte[] arrb) throws Exception {
return encryptCipher.doFinal(arrb);
} public String encrypt(String str) throws Exception {
return byteArr2HexStr(encrypt(str.getBytes()));
} public byte[] decrypt(byte[] arrB) throws Exception {
return decryptCipher.doFinal(arrB);
} public String decrypt(String strIn) throws Exception {
return new String(decrypt(hexstr2byteatrr(strIn)));
} private Key getKey(byte[] arrBTmp){
byte[]arrB=new byte[];
for(int i=;i<arrBTmp.length&&i<arrB.length;i++){ arrB[i]=arrBTmp[i];
}
// 生成密钥
Key key=new javax.crypto.spec.SecretKeySpec(arrB,"DES");
return key;
} public static void main(String[] args) throws Exception { String test="ksjdfksjdflk;342315.,,52256266322555124123225555";
DESUtil des = new DESUtil("kj;skldjfklsdj,.-=sdfjj;f'wons2862485");//自定义key值
String b = des.encrypt(test);//加密
System.out.println("加密后:"+b);
String a= des.encrypt(test);
//DateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm SSS"); System.out.println("解密后"+des.decrypt(a));//解密 } }

java加密算法-DES的更多相关文章

  1. 常用加密算法的Java实现总结(二) ——对称加密算法DES、3DES和AES

    1.对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发 ...

  2. Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密

    Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...

  3. Atitit.加密算法 des  aes 各个语言不同的原理与解决方案java php c#

    Atitit.加密算法 des  aes 各个语言不同的原理与解决方案java php c# 1. 加密算法的参数::算法/模式/填充 1 2. 标准加密api使用流程1 2.1. Md5——16bi ...

  4. [转] 对称加密算法DES、3DES

    转自:http://www.blogjava.net/amigoxie/archive/2014/07/06/415503.html 1.对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法, ...

  5. 对称加密算法DES,3重DES,TDEA,Blowfish,RC5,IDEA,AES。

    对称加密算法:DES,3重DES,TDEA,Blowfish,RC5,IDEA,AES. 1.对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文 ...

  6. java加密算法入门(二)-对称加密详解

    1.简单介绍 什么是对称加密算法? 对称加密算法即,加密和解密使用相同密钥的算法. 优缺点: 优点:算法公开.计算量小.加密速度快.加密效率高. 缺点: (1)交易双方都使用同样钥匙,安全性得不到保证 ...

  7. java加密算法入门(三)-非对称加密详解

    1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...

  8. 对称加密算法DES、3DES和AES 原理总结(转载)

    1.对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法,技术成熟.在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发 ...

  9. 一个java的DES加密解密类转换成C#

    一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...

随机推荐

  1. Java 8 stream 经典示例

    package org.study2.java8.stream; import org.junit.Test; import java.util.*; import java.util.stream. ...

  2. django:下拉框二级联动实现

    注意:只列举核心部分代码 前台模板: 第一级下拉菜单: <div class="col-sm-4"> <select data-placeholder=" ...

  3. Tomcat免安装版执行tomcat9.exe闪退

    Tomcat免安装版点击startup.bat可成功启动,但是执行tomcat9.exe时却闪退,这是因为免安装版的tomcat不会自动把tomcat注册到windows服务里,需要手动注册. 解决办 ...

  4. 基于thinkphp5框架做一个可以区别开发、测试、生产三种环境的配置加载

    在日常的开发测试中我们经常会遇到本地开发和测试或者线上配置参数不同的场景,必要你要是使用一个三方的支付,它的本地测试和线上的key值或者账号存在不同.最基本的做法是本地用测试参数,提交到测试的时候再改 ...

  5. NGINX安全配置和限制访问

    说起网络攻击,可能很多人只知道大名鼎鼎的DDOS攻击,这种攻击廉价且效果出众,直接通过第四层网络协议用他的带宽把你的带宽顶掉,造成网路阻塞,防不胜防,就连腾讯这种大鳄公司也被大流量DDOS搞过焦头烂额 ...

  6. Python基础系列讲解-自动控制windows桌面

    原链接:https://zhuanlan.zhihu.com/p/73001806 在使用PC时与PC交互的主要途径是看屏幕显示.听声音,点击鼠标和敲键盘等等.在自动化办公的趋势下,繁琐的工作可以让程 ...

  7. Vue.js 2.x render 渲染函数 & JSX

    Vue.js 2.x render 渲染函数 & JSX Vue绝大多数情况下使用template创建 HTML.但是比如一些重复性比较高的场景,需要运用 JavaScript 的完全编程能力 ...

  8. 面试6 --- 当List<String> list =new ArrayList<String>(20); 他会扩容多少次

    当List<String> list =new ArrayList<String>(20); 他会扩容多少次?A 0       B 1 C 2 D 3答案是A: 因为这个集合 ...

  9. Android自动化测试之Monkey 转自:LupuX

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011436666/article/details/53998332 在之前的文章Android自动 ...

  10. jquery easyui datagrid的一些用法

    获取选中的多选数据 var rows = $('#Id').datagri('getSelections'); 选中单行的数据 var row = $(#Id).datagrid('getSelect ...