Java DES加密解密工具类详解编程语言
2023-06-13 09:20:30 时间
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class DES {
public DES() {
public static DES getInstance(String key) throws NoSuchPaddingException,
NoSuchAlgorithmException {
return getInstance(getKeyByStr(key));
public static DES getInstance(byte key[]) throws NoSuchPaddingException,
NoSuchAlgorithmException {
DES des = new DES();
if (des.key == null) {
SecretKeySpec spec = new SecretKeySpec(key, "DES");
des.key = spec;
des.cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
return des;
public byte[] encrypt(byte b[]) throws InvalidKeyException,
BadPaddingException, IllegalBlockSizeException,
IllegalStateException {
byte byteFina[] = null;
cipher.init(1, key);
byteFina = cipher.doFinal(b);
return byteFina;
public byte[] decrypt(byte b[]) throws InvalidKeyException,
BadPaddingException, IllegalBlockSizeException,
IllegalStateException {
byte byteFina[] = null;
cipher.init(2, key);
byteFina = cipher.doFinal(b);
return byteFina;
public static byte[] getKeyByStr(String str) {
byte bRet[] = new byte[str.length() / 2];
for (int i = 0; i str.length() / 2; i++) {
Integer itg = new Integer(16 * getChrInt(str.charAt(2 * i))
+ getChrInt(str.charAt(2 * i + 1)));
bRet[i] = itg.byteValue();
return bRet;
private static int getChrInt(char chr) {
int iRet = 0;
if (chr == "0".charAt(0))
iRet = 0;
if (chr == "1".charAt(0))
iRet = 1;
if (chr == "2".charAt(0))
iRet = 2;
if (chr == "3".charAt(0))
iRet = 3;
if (chr == "4".charAt(0))
iRet = 4;
if (chr == "5".charAt(0))
iRet = 5;
if (chr == "6".charAt(0))
iRet = 6;
if (chr == "7".charAt(0))
iRet = 7;
if (chr == "8".charAt(0))
iRet = 8;
if (chr == "9".charAt(0))
iRet = 9;
if (chr == "A".charAt(0))
iRet = 10;
if (chr == "B".charAt(0))
iRet = 11;
if (chr == "C".charAt(0))
iRet = 12;
if (chr == "D".charAt(0))
iRet = 13;
if (chr == "E".charAt(0))
iRet = 14;
if (chr == "F".charAt(0))
iRet = 15;
return iRet;
private Key key;
private Cipher cipher;
/**
* @interpret 进行base64加密操作
* @param text
* @param keyString
* @return String
public String encrypt(String text, String keyString) {
String body = null;
try {
DES des = DES.getInstance(keyString);
byte[] b = des.encrypt(text.getBytes("UTF8"));
body = new String(Base64.encodeBase64(b));
} catch (Exception ex) {
return body;
/**
* @interpret 进行base64进行解密
* @param text
* @param keyString
* @return String
public String decrypt(String text, String keyString) {
String body = null;
try {
DES des = DES.getInstance(keyString);
byte[] b = Base64.decodeBase64(text.getBytes());
body = new String(des.decrypt(b), "UTF8");
} catch (Exception e) {
e.printStackTrace();
return body;
public String authcode(String content, String operation, String key){
String encontent = null;
if (operation != null operation.equals("DECODE")) {
encontent = encrypt(content,key);
} else if (operation != null operation.equals("ENCODE")) {
encontent = decrypt(content,key);
return encontent;
public static void main(String[] args) {
DES des = new DES();
System.out.println(des.authcode("wewweewewew=","DECODE","0102030405060708"));//加密
System.out.println(des.authcode("d8fPhfd9JkW99p8aqhtVIA==","ENCODE","0102030405060708"));//解密
}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10918.html
cgojava相关文章
- java set 排序的_Set集合排序
- 反应java程序并行机制的特点_Java语言具有许多优点和特点,下列选项中能反映Java程序并行机制特点的是()。…[通俗易懂]
- java启动器_JAVA基础:Java 启动器如何查找类
- java出现中文乱码_Java开发中中文乱码总结
- md5 java 实现_MD5加密的Java实现
- java数组去重_JAVA数组去重常用方法
- java uuid 随机数_Java随机数和UUID[通俗易懂]
- java打开dex文件_dex文件反编译工具(Dedexer)
- java 异或加密_Java异或技操作给任意的文件加密原理及使用详解
- Java中的并发工具类
- Java自带的性能监测工具之jinfo
- 【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件签名 )
- 深入浅出:利用Java操作MySQL(java操作mysql)
- 系统命令Java实现Linux系统命令调用的探究(java调用linux)
- Google的J2ObjC工具可以将Java代码转换为iOS的Objective-C
- 使用Java远程控制Linux 实现简单、高效的服务器管理(java控制linux)
- 简明易懂的介绍Linux java包的25个字的文章标题:Linux Java包:开发和运行Java程序的工具(Linuxjava包)
- Java工程师集MySQL技能于一身(java工程师mysql)
- Java快速加载Oracle数据库(java加载oracle)
- Oracle和Java结合,推出新一代商城系统(java oracle商城)
- MySQL和Java结合的必备工具MySQL下载Java(mysql下载java)
- Java基础之java处理ip的工具类