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 }

3des 解密 java_◆JAVA加密解密-3DES相关推荐

  1. java 加密解密编程,java 加密解密容易实现

    当前位置:我的异常网» 编程 » java 加密解密容易实现 java 加密解密容易实现 www.myexceptions.net  网友分享于:2013-10-27  浏览:3次 java 加密解密 ...

  2. Java 加密解密之对称加密算法PBE

    JAVA  加密解密系列 Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java 加密解密之消息摘要算法(MD5 SHA MAC) Java 加密 ...

  3. Java加密解密入门

    一 概述 Java加密解密概述 Java安全领域分为四个部分:JCA-Java加密体系结构:JCE-Java加密扩展包:JSSE-Java安全套接字扩展包:JAAS-Java鉴别与安全服务. JCA提 ...

  4. java中解密技术是什么_详解Java 加密解密技术的分类和归纳

    这篇文章主要介绍了Java加密解密基础分类方法汇总的相关资料,需要的朋友可以参考下 Java 加密解密基础: 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信 ...

  5. java加密解密 pdf_JAVA加密与解密的艺术 第2版 PDF 下载

    本书是Java安全领域公认的标杆之作,被奉为每一位Java开发工程师必读的著作之一.由资深专家撰写,第1版4年来畅销不衰,繁体版在台湾出版,大陆和台湾的读者都给予了极高的评价.第2版根据Java 7全 ...

  6. vue使用DES模式加密解密,包括Java加密解密

    前端加密解密 1.安装:npm install crypto-js 2.在utils下创建一个cryptoAES.js import CryptoJS from 'crypto-js';//与后端约定 ...

  7. nodejs java rsa_NodeJS加密解密及node-rsa加密解密用法详解

    要用nodejs开发接口,实现远程调用,如果裸奔太危险了,就在网上找了一下nodejs的加密,感觉node-rsa挺不错的,下面来总结一下简单的rsa加密解密用法 初始化环境 新建一个文件夹 node ...

  8. Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

    [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...

  9. java公钥加密私钥解密过程_GPG加密解密过程

    GPG加密解密过程 一.Linux系统下 1.安装 yum安装 [root@POC-ORACLE ~]# yum install gnupg 下载安装包安装 https://www.gnupg.org ...

  10. java php aes加密解密_php aes 加密解密可与java对接

    php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...

最新文章

  1. 两大图像处理库Halcon和Opencv 的对比
  2. R语言使用ggpubr包的ggbarplot函数可视化分组条形图(grouped bar plot)、并添加误差条(error bar、误差条显示平均值+/-sd)、不添加填充色、添加jitter抖动
  3. Q45 跳跃游戏 II
  4. css使两个盒子并列_css如何去掉重叠部分的边框?
  5. Maximum Subarray leetcode java
  6. 40岁的程序员还能找到工作吗_学会了Vue就能找到前端工作吗
  7. linux 根分区分的太大了,linux根分区满了如何处理,查找大文件方法
  8. (四)怎么优化 where 子句
  9. 82_Linux检测指定ip指定端口是否开放
  10. 仿淘宝收货地址,本地数据库
  11. Flash 加密和破解
  12. python隐藏窗口_python中隐藏Console窗口
  13. WPS中设置一级、二级、三级标题以及正文和目录
  14. 电脑杀毒软件哪个好?好用的电脑杀毒软件推荐
  15. 奥威软件联手省科干,全力打造大数据BI岗位技能实践基地
  16. TwinCAT3中GetSystemTime()功能块使用
  17. 电脑上打开chm文件时系统提示:不能打开文件:mk:@MSITStore:(文件路径)
  18. Actor编程模型——简介
  19. python glob.glob使用
  20. 工程效能部门如何讲好故事做好事

热门文章

  1. python创建字典的两种方法
  2. Mina2.0快速入门
  3. activemq 搭建2
  4. MKAnnotationView,MKAnnotation与MKMapView结合使用显示坐标点
  5. RN Adatper_Util工具类
  6. Flutter 常用的按钮组件
  7. matlab mysql数据库增删改查_ef6.0增删改查操作
  8. postman访问abp接口因cookies问题导致400错误
  9. PHP之JWT接口鉴权(一)
  10. Mysql5.7+ 出现Field * doesn‘t have a default value解决办法