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. Jenkins_安装

    1.下载war包 wget -c -O ./jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war 2.启动下载好的wa ...

  2. Mongodb分片集群技术+用户验证

    随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,“分片”就用这个来解决这个问题. 从图中可以看到有四个组件:mongos.config server. ...

  3. 我的长大app开发教程第一弹:Fragment布局

    在接下来的一段时间里我会发布一个相对连续的Android教程,这个教程会讲述我是如何从零开始开发“我的长大”这个Android应用. 在开始之前,我先来介绍一下“我的长大”:这是一个校园社交app,准 ...

  4. Swift 4 Hex Color

    上点干货,写个extension, 可以通过hex值去设置Color,以及通过UIColor的color case 去得到hex值. extension UIColor {     var toHex ...

  5. .NET尝试访问某方法失败

    今天发现了一个错误: xxxx.xxxx尝试访问xxxx.xxxx方法失败. 调试无果,经过分析后得到这是.NET引用的问题.果然有了这个方向后,发现了引用不匹配的问题,问题随之解决. 记录一下.

  6. <发条游戏设计>粗翻——序言、

    序言——————————————————————— 优雅 就像在英语里的很多单词一样,“优雅”有着一些不同意义的解释.一些习惯性的用法常常带有“美”的意思:例如“她穿着一条优雅的裙子”,代表着一种完全 ...

  7. luogu P5303 [GXOI/GZOI2019]逼死强迫症

    传送门 只有两行,考虑递推,设\(f_i\)为没有那两个\(1*1\)的,前\(i\)列的方案,可以发现一次可以放一个竖的或两个横的,也就是\(f_i=f_{i-1}+f_{i-2}\) 再设\(g_ ...

  8. python复习2

    在操作字符串时,我们经常遇到str和bytes的互相转换.为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换.

  9. MySQL数据库 Too many connections

    出现这种错误明显就是 mysql_connect 之后忘记 mysql_close:当大量的connect之后,就会出现Too many connections的错误,mysql默认的连接为100个, ...

  10. 【模板】最长公共子序列(LCS)。

    看过好多人的博客,感觉要么是太复杂要么就是太不容易理解. 那就亲自动手写一个通俗易懂的. 先定义两个数组,第一个数组为主,用第二个数组来匹配第一个,看能有多少可以对应上的. 所以,其实第一个数组的内容 ...