◆JAVA加密解密-3DES

1 package my3des;
2
3 import java.io.UnsupportedEncodingException;
4
5 import javax.crypto.Cipher;
6 import javax.crypto.SecretKey;
7 import javax.crypto.spec.SecretKeySpec;
8
9
10 /**
11 * SecretUtils {3DES加密解密的工具类 }
12 * @author William
13 * @date 2013-04-19
14 */
15 public class SecretUtils {
16
17 //定义加密算法,有DES、DESede(即3DES)、Blowfish
18 private static final String Algorithm = "DESede";
19 private static final String PASSWORD_CRYPT_KEY = "2012PinganVitality075522628888ForShenZhenBelter075561869839";
20
21
22 /**
23 * 加密方法
24 * @param src 源数据的字节数组
25 * @return
26 */
27 public static byte[] encryptMode(byte[] src) {
28 try {
29 SecretKey deskey = new SecretKeySpec(build3DesKey(PASSWORD_CRYPT_KEY), Algorithm); //生成密钥
30 Cipher c1 = Cipher.getInstance(Algorithm); //实例化负责加密/解密的Cipher工具类
31 c1.init(Cipher.ENCRYPT_MODE, deskey); //初始化为加密模式
32 return c1.doFinal(src);
33 } catch (java.security.NoSuchAlgorithmException e1) {
34 e1.printStackTrace();
35 } catch (javax.crypto.NoSuchPaddingException e2) {
36 e2.printStackTrace();
37 } catch (java.lang.Exception e3) {
38 e3.printStackTrace();
39 }
40 return null;
41 }
42
43
44 /**
45 * 解密函数
46 * @param src 密文的字节数组
47 * @return
48 */
49 public static byte[] decryptMode(byte[] src) {
50 try {
51 SecretKey deskey = new SecretKeySpec(build3DesKey(PASSWORD_CRYPT_KEY), Algorithm);
52 Cipher c1 = Cipher.getInstance(Algorithm);
53 c1.init(Cipher.DECRYPT_MODE, deskey); //初始化为解密模式
54 return c1.doFinal(src);
55 } catch (java.security.NoSuchAlgorithmException e1) {
56 e1.printStackTrace();
57 } catch (javax.crypto.NoSuchPaddingException e2) {
58 e2.printStackTrace();
59 } catch (java.lang.Exception e3) {
60 e3.printStackTrace();
61 }
62 return null;
63 }
64
65
66 /*
67 * 根据字符串生成密钥字节数组
68 * @param keyStr 密钥字符串
69 * @return
70 * @throws UnsupportedEncodingException
71 */
72 public static byte[] build3DesKey(String keyStr) throws UnsupportedEncodingException{
73 byte[] key = new byte[24]; //声明一个24位的字节数组,默认里面都是0
74 byte[] temp = keyStr.getBytes("UTF-8"); //将字符串转成字节数组
75
76 /*
77 * 执行数组拷贝
78 * System.arraycopy(源数组,从源数组哪里开始拷贝,目标数组,拷贝多少位)
79 */
80 if(key.length > temp.length){
81 //如果temp不够24位,则拷贝temp数组整个长度的内容到key数组中
82 System.arraycopy(temp, 0, key, 0, temp.length);
83 }else{
84 //如果temp大于24位,则拷贝temp数组24个长度的内容到key数组中
85 System.arraycopy(temp, 0, key, 0, key.length);
86 }
87 return key;
88 }
89 }


1 package my3des;
2
3 public class Main {
4
5 /**
6 * @param args
7 */
8 public static void main(String[] args) {
9 String msg = "3DES加密解密案例";
10 System.out.println("【加密前】:" + msg);
11
12 //加密
13 byte[] secretArr = SecretUtils.encryptMode(msg.getBytes());
14 System.out.println("【加密后】:" + new String(secretArr));
15
16 //解密
17 byte[] myMsgArr = SecretUtils.decryptMode(secretArr);
18 System.out.println("【解密后】:" + new String(myMsgArr));
19 }
20 }

◆JAVA加密解密-3DES的更多相关文章
- Java加密解密大全
ChinaSEI系列讲义(By 郭克华) Java加密解密方法大全 如果有文字等小错,请多包涵.在不盈利的情况下,欢迎免费传播. 版权所有.郭克华 本讲义经 ...
- java加密解密的学习
注:此文章只是对如何学习java加密解密技术做一个讲解.并不涉及具体的知识介绍,如果有需要请留言,有时间我补冲长.个人觉着学习一个学习方法比学习一个知识点更有价值的多. 首先,对于加密解密知识体系没有 ...
- Java加密解密字符串
http://www.cnblogs.com/vwpolo/archive/2012/07/18/2597232.html Java加密解密字符串 旧文重发:http://www.blogjava ...
- java加密解密
java加密解密 public class MD5Util { /** * @param args */ public static void main(String[] args) { System ...
- password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest). 它是一个唯一相应一个消息或文本的固定长度 ...
- java加密解密算法位运算
一.实例说明 本实例通过位运算的异或运算符 “ ^ ” 把字符串与一个指定的值进行异或运算,从而改变每个字符串中字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,异或运算 ...
- java加密-解密小结
加密算法可以分为 双向加密(对称加密.不对称加密) 单向加密(不可逆加密)—— MD5.sha.hmac... 在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密 有: ...
- Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
版权声明:本文为博主原创文章,未经博主允许不得转载. [前言] 本文简单的介绍了加密技术相关概念,最后总结了java中现有的加密技术以及使用方法和例子 [最简单的加密] 1.简单的概念 明文:加密前的 ...
- java-信息安全(十八)java加密解密,签名等总结
一.基本概念 加密: 密码常用术语: 明文,密文,加密,加密算法,加密秘钥,解密,解密算法,解密秘钥, 密码分析:分析密文从而推断出明文或秘钥的过程 主动攻击:入侵密码系统,采用伪造,修改,删除等手段 ...
随机推荐
- 初识python 之 离线搭建pyhive环境(含python3安装)
系统版本: centos6.5 python版本:python3.6.8 相关包存放目录:software 注意:以下操作需要用到root权限 安装python3 root操作 cd /lzh/sof ...
- 初识python: 字典
使用数据字典,编写一个多级菜单: 需求:每一级可返回上级,可退出. 多级菜单 #!/user/bin env python # author:Simple-Sir # time:20180915 # ...
- Word2010制作电子印章
原文链接: https://www.toutiao.com/i6488971642788643341/ 选择"插入"选项卡,"插图"功能组,"形状&q ...
- linux笔记(一)
linux 开源镜像网址:http://mirrors.163.com pwd : 展示当前所在的目录的绝对路径 cd : 切换到某个路径 cd 命令,是 Change Directory 的缩写, ...
- Vulnhub系列——持续更新
vulnhub系列--持续更新 一 · XXE Lab: 1 使用vmware搭建靶机 扫描存活主机 找到目标主机--192.168.1.18 开始扫描目标端口 发现只开了一个80 ...
- django框架--登录注册功能(ajax)
注册 实现一个注册功能 编写 html 内容 input 标签 csrf_token ajax 路由 视图: 提供页面 负责处理业务,返回响应 接收到 post 请求传递的参数 写库 返回 ...
- Jetpack—LiveData组件的缺陷以及应对策略 转至元数据结尾
一.前言 为了解决Android-App开发以来一直存在的架构设计混乱的问题,谷歌推出了Jetpack-MVVM的全家桶解决方案.作为整个解决方案的核心-LiveData,以其生命周期安全,内存安全等 ...
- Fastjson反序列化漏洞分析 1.2.22-1.2.24
Fastjson反序列化漏洞分析 1.2.22-1.2.24 Fastjson是Alibaba开发的Java语言编写的高性能JSON库,用于将数据在JSON和Java Object之间互相转换,提供两 ...
- Kubernetes:故障排查(Trouble Shooting)方法总结
Blog:博客园 个人 本文部分内容源自网络,侵删. 概述 为了跟踪和发现在Kubernetes集群中运行的容器应用出现的问题,我们常用如下排查方法: 查看Kubernetes对象的当前运行时信息,特 ...
- 使用ansible 批量分发ssh密钥
先看执行结果 看看ssh.yml怎么写的 看看hosts文件中backup组怎么写的