java TripleDES加密
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加密的更多相关文章
- Java 前端加密传输后端解密以及验证码功能
目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概 ...
- js和java MD5加密
项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of ...
- PHP、Java对称加密中的AES加密方法
PHP AES加密 <?php ini_set('default_charset','utf-8'); class AES{ public $iv = null; public $key = n ...
- bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能
xmlrpc . https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...
- Java Base64加密、解密原理Java代码
Java Base64加密.解密原理Java代码 转自:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是 ...
- Java AES加密
Java AES 加密 加密 /** * * @description 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return * ...
- java c# 加密与解密对照
原文 java c# 加密与解密对照 最近一直烦恼,java , c# 加密的不同,然后整理了一下,留个备份的轮子: 其中在 java.c#加密转换时,最重要的是 IV 的确定,我常常用如下方法使得j ...
- java对称加密(AES)
java对称加密(AES) 博客分类: Java javaAES对称加密 /** * AESHelper.java * cn.com.songjy.test * * Function: TODO * ...
- C# Java DES加密解密
转自http://www.cnblogs.com/zhuiyi/archive/2013/04/01/2993201.html 最近被DES加解密弄得超级郁闷,我用C#的方法加密得到的密文老是跟客户给 ...
随机推荐
- 【关于Java移位操作符&按位操作符】
一.java按位运算符(操作符) 这段时间偶尔看一下源码,会发现有很多很基础的java知识在脑海中已经慢慢的淡成不常用记忆,于是打算捡起来一些. 按位运算符是来操作整数基本数据类型中的单个“比特”(b ...
- codeforces-1131 (div2)
A.把右上角的凹缺口补上变成凸的就成了规则矩形 #include <map> #include <set> #include <ctime> #include &l ...
- django环境部署 crm和路飞学城
环境依赖 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-de ...
- Dynamics CRM 日常使用JS整理(二)
BPF(Business Process Flow)相关的JS 为Stage添加changed或者selected事件: function fnOnLoad() { Xrm.Page.data.pro ...
- 使用容器编排工具docker swarm安装clickhouse多机集群
1.首先需要安装docker最新版,docker 目前自带swarm容器编排工具 2.选中一台机器作为master,执行命令sudo docker swarm init [options] 3,再需 ...
- idea中pom.xml添加了新的maven依赖,点击import changes没反应
打开file,setting. 选择Build,Execution,Deployment -> Build Tools -> Maven. 修改maven home directory为自 ...
- Java 集合系列03之 ArrayList详细介绍
ArrayList做为List接口中最常用的实现类,必须掌握. 一.ArrayList简介 与Java中的数组相比ArrayList的容量可以动态增加.它继承与AbstractList,实现了List ...
- windows8.1全角与半角切换快捷键
windows8.1全角与半角切换快捷键: shift + 空格
- 在页面加载前先出现加载loading,页面加载完成之后再显示页面
在此加入一个关于页面加载成功之前先展现一个loading的案例: 如下代码写入js里放在html头部即可实现需求:添加的可以自己在css文件设置宽高,也可以放入一个background的gif的loa ...
- MySQL保留字不能作为字段名使用
在设计MySQL字段的时候,无意中使用InOut这个名称作为字段名称,结果前端提交后就是没有写入数据库!但后端没有任何提示,跟踪mySQL日志,也没有留下痕迹,反复查,不得其解. 后来实在没有办法情况 ...