package com.zhx.base.util;

import org.apache.commons.codec.binary.Base64;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import java.security.Key; public class TripleDES {
public static final String CIPHERMODE = "DESede/ECB/PKCS5Padding";
public static final String ENCODE = "utf-8"; /**
* 初始化密钥
* @return
* @throws Exception
*/
public static String getKeyStr() throws Exception{
return Base64.encodeBase64String(getKey().getEncoded());
} /**
* 获取密钥
* @return
* @throws Exception
*/
public static Key getKey() throws Exception{
//实例化
KeyGenerator kg = KeyGenerator.getInstance("DESede");
kg.init(168);
//生成密钥
SecretKey secretKey = kg.generateKey();
return secretKey;
} public static String encrypt(String key, String src) {
try {
DESedeKeySpec dks = new DESedeKeySpec(key.getBytes(ENCODE));
SecretKeyFactory keyFactory = SecretKeyFactory
.getInstance("DESede");
SecretKey securekey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance(CIPHERMODE);
cipher.init(Cipher.ENCRYPT_MODE, securekey);
byte[] b = cipher.doFinal(src.getBytes());
return Base64.encodeBase64String(b).replaceAll("\r", "").replaceAll("\n", "");
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public static String decrypt(String key, String src) {
try {
byte[] bytesrc = Base64.decodeBase64(src);
DESedeKeySpec dks = new DESedeKeySpec(key.getBytes(ENCODE));
SecretKeyFactory keyFactory = SecretKeyFactory
.getInstance("DESede");
SecretKey securekey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance(CIPHERMODE);
cipher.init(Cipher.DECRYPT_MODE, securekey);
byte[] retByte = cipher.doFinal(bytesrc);
return new String(retByte, "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public static void main(String[] args) throws Exception { String key = getKeyStr();
System.out.println(key);
System.out.println(key.getBytes().length);
String test = TripleDES.encrypt(key, "1232135sdsadsasdshgjhkjhkadsadsdgdfhgdjhkbvnbcnbhgfjhgjhgkhghfdsgfdsgadsadadsad");
System.out.println(test);
test = test.replace("=","");
System.out.println(test);
// System.out.println(Base64Utils.getBase64(test));
System.out.println(TripleDES.decrypt(key,test));
}
}
package com.zhx.base.util;

public class TripleDESUtil {

    //    public static String key = PropertiesUtil.getValue("THREEDESKEY");
public static String key = "asdsaffjhdfgdbv^&%^**hhjad";
/**
* 3DES加密
*
* @param value
* @return
*/
public static String getEncryptString(String value,String key) {
return TripleDES.encrypt(key, value).replace("=","");
}
/**
* 3DES解密
*
* @param value
* @return
*/
public static String decryptString(String value,String key) {
return TripleDES.decrypt(key, value);
} /**
* 3DES加密 带Base64
*
* @param value
* @return
*/
public static String getEncryptStringIncludeBase64(String value,String key) {
value = Base64Utils.getBase64(value);
value = TripleDES.encrypt(key, value);
// System.out.println("生成密文:" + value);
return value.replace("=","");
} /**
* 3DES解密 带Base64
*
* @param str
* @return
*/
public static String decryptDataIncludeBase64(String str,String key) {
if (str == null) {
str = "";
}
str = str.replaceAll(" ", "+");
return Base64Utils.getFromBase64(TripleDES.decrypt(key, str));
} public static void main(String[] args) {
String key = "5j3EAa7qp/R8xLquBKQskSaAtp224McC";
System.out.println("*******************BASE64****************************");
System.out.println(Base64Utils.getBase64("我的12312314"));
System.out.println(Base64Utils.getFromBase64(Base64Utils.getBase64("我的12312314")));
System.out.println("*******************3des****************************");
System.out.println(TripleDESUtil.getEncryptString("我的12312314",key));
System.out.println(TripleDESUtil.decryptString("+rEVEmiHZKcgIKVV2NcYNw",key));
System.out.println(TripleDESUtil.decryptString(TripleDESUtil.getEncryptString("我的12312314",key), key));
System.out.println("*******************3des+Base64****************************");
System.out.println(TripleDESUtil.getEncryptStringIncludeBase64("我的12312314",key));
System.out.println(TripleDESUtil.decryptDataIncludeBase64(TripleDESUtil.getEncryptStringIncludeBase64("我的12312314",key),key));
}
}
package com.zhx.base.util;

import org.apache.commons.codec.binary.Base64;

import java.io.UnsupportedEncodingException;

public class Base64Utils {

    /**
* 加密
*
* @param str
* @return
*/
public static String getBase64(String str) {
byte[] b = null;
String s = null;
try {
b = str.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (b != null) {
s = Base64.encodeBase64String(b);
}
return s;
} /**
* 解密
*
* @param s
* @return
*/
public static String getFromBase64(String s) {
byte[] b = null;
String result = null;
if (s != null) {
try {
b = Base64.decodeBase64(s);
result = new String(b, "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
}

java TripleDES加密的更多相关文章

  1. Java 前端加密传输后端解密以及验证码功能

    目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概 ...

  2. js和java MD5加密

    项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of ...

  3. PHP、Java对称加密中的AES加密方法

    PHP AES加密 <?php ini_set('default_charset','utf-8'); class AES{ public $iv = null; public $key = n ...

  4. bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能

    xmlrpc .  https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...

  5. Java Base64加密、解密原理Java代码

    Java Base64加密.解密原理Java代码 转自:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是 ...

  6. Java AES加密

    Java AES 加密 加密 /** * * @description 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return * ...

  7. java c# 加密与解密对照

    原文 java c# 加密与解密对照 最近一直烦恼,java , c# 加密的不同,然后整理了一下,留个备份的轮子: 其中在 java.c#加密转换时,最重要的是 IV 的确定,我常常用如下方法使得j ...

  8. java对称加密(AES)

    java对称加密(AES) 博客分类: Java javaAES对称加密  /** * AESHelper.java * cn.com.songjy.test * * Function: TODO * ...

  9. C# Java DES加密解密

    转自http://www.cnblogs.com/zhuiyi/archive/2013/04/01/2993201.html 最近被DES加解密弄得超级郁闷,我用C#的方法加密得到的密文老是跟客户给 ...

随机推荐

  1. STL迭代器iterator

    一:迭代器原理 迭代器是一个“可遍历STL容器内全部或部分元素”的对象. 迭代器指出容器中的一个特定位置. 迭代器就如同一个指针. 迭代器提供对一个容器中的对象的访问方法,并且可以定义了容器中对象的范 ...

  2. 目前的.NET 主流的后端ORM框架

    转自:https://www.cnblogs.com/yeminglong/p/9518438.html  推荐一些常用的asp.net ORM框架 SqlSugar (国内) Dos.ORM (国内 ...

  3. JavaScript 归纳

    MDN 本文以 NodeJS 为交互解释器实验 尽量遵循 ES6 标准 javascript 重点 1.javascript 是单线程,通过 EventLoop 实现模拟异步,其中包括宏任务,微任务 ...

  4. Learn Node.js

    Learn Node.js Node: 脱离浏览器运行的JS,运行在服务端 基于Chrome浏览器的V8引擎,使用V8虚拟机解析和执行JS代码 创建简单的服务器: 创建一个server.js的文件 $ ...

  5. Ubuntu 18.04 记录

    登录后死机,关机时死机的解决方法 更新内核并安装 Nvidia 显卡驱动可解决. 在内核更新为 4.15.18,Nvidia 显卡驱动为 390 时,问题解决. 使用 LiveCD 启动,然后 mou ...

  6. SpringMVC+Apache Shiro+JPA(hibernate)案例教学(三)给Shiro登录验证加上验证码

    序: 给Shiro加入验证码,有多种方式,当然你也可以通过继承修改FormAuthenticationFilter类,通过Shiro去验证验证码.具体实现请百度: 应用Shiro到Web Applic ...

  7. Mac环境下Scrapy的安装

    直接命令安装: $ easy_install scrapy 从 GitHub 安装: $ git clonehttps://github.com/scrapy/scrapy.git $ cd scra ...

  8. OSL

    1,SimpleColorShader: shader gamma(color cin = color(,,),output color Cout=color(,,)) { Cout = cin; } ...

  9. HDMI热插拔检测原理

    HDMI(19Pin)/DVI(16 pin)的功能是热插拔检测(HPD),这个信号将作为主机系统是否对HDMI/DVI是否发送TMDS信号的依据.HPD是从显示器输出送往计算机主机的一个检测信号.热 ...

  10. 《Linux就该这么学》 - 必读的红帽系统与红帽linux认证自学手册

    <Linux就该这么学>   本书作者刘遄从事于linux运维技术行业,较早时因兴趣的驱使接触到了Linux系统并开始学习. 已在2012年考下红帽工程师RHCE_6,今年又分别考下RHC ...