import java.util.ArrayList;

import java.util.List;

import javax.crypto.Cipher;

import javax.crypto.SecretKey;

import javax.crypto.spec.IvParameterSpec;

import javax.crypto.spec.SecretKeySpec;

public class SecretUtils {

//根秘钥

final static byte[] keyBytes = Util.hexStringToByteArray("404142434445464748494A4B4C4D4E4F48494A4B4C4D4E4F");

private static final String Algorithm = "DESede"; //3DES算法

private static byte[] ivs = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 };

private static IvParameterSpec iv = new IvParameterSpec(ivs);

/************************************************************

Function: // encryptMode(byte[] src,byte[] key)

Description: // 3DES_ECB_EN

Input: // src-源数据(byte[]) key-加密秘钥(byte[])

Output: // 加密后的数据

Return: // byte[]

*************************************************************/

public static byte[] encryptMode(byte[] src,byte[] key) {

try {

System.out.println("没到8bytes:"+Util.byteArrayToHexString(src));

SecretKey deskey = new SecretKeySpec(key, Algorithm); //生成密钥21

Cipher c1 = Cipher.getInstance("DESede/ECB/NoPadding"); //实例化负责加密/解密的Cipher工具类22

c1.init(Cipher.ENCRYPT_MODE, deskey); //初始化为加密模式23

return c1.doFinal(src); } catch (java.security.NoSuchAlgorithmException e1) {

e1.printStackTrace(); } catch (javax.crypto.NoSuchPaddingException e2) {

e2.printStackTrace(); } catch (java.lang.Exception e3) {

e3.printStackTrace();}

return null; }

/************************************************************

Function: // decryptMode(byte[] src,byte[] key)

Description: // 3DES_ECB_DE

Input: // src-源数据(byte[]) key-解密秘钥(byte[])

Output: // 解密后的数据

Return: // byte[]

*************************************************************/

public static byte[] decryptMode(byte[] src ,byte[] key) {

try {SecretKey deskey = new SecretKeySpec(key, Algorithm);

Cipher c1 = Cipher.getInstance("DESede/ECB/NoPadding");

c1.init(Cipher.DECRYPT_MODE, deskey); //初始化为解密模式44

return c1.doFinal(src); } catch (java.security.NoSuchAlgorithmException e1) {

e1.printStackTrace(); } catch (javax.crypto.NoSuchPaddingException e2) {

e2.printStackTrace(); } catch (java.lang.Exception e3) {

e3.printStackTrace(); } return null; }

/************************************************************

Function: // length_process(String src)

Description: // 计算MAC时用到,字符串长度处理为8byte的倍数

Input: // src-待变长的源数据(String)

Output: // 变长后后的源数据

Return: // String

*************************************************************/

private static String length_process(String src) {

if(src.length()%16==0){

return src;

}else if(src.length()%16==14){

return src+"80";

}else{

src+"80";

while(src.length()%8!=0){

src+="0";

}

return src;

}

}

public static String DES_ECB_EN(String data){

String msg = length_process(data);

byte[] Util.hexStringToByteArray(msg);

byte[] secretStr = SecretUtils.encryptMode(src,keyBytes); //调用加密方法16

System.out.println("【Card Cryptogram DATA明文是】:" + msg);

System.out.println("【Card Cryptogram 全部加密文是】:" + Util.byteArrayToHexString(secretStr));

return Util.byteArrayToHexString(secretStr);

}

public static String DES_ECB_DE(String secretStr){

byte[] myMsg = SecretUtils.decryptMode(Util.hexStringToByteArray(secretStr),keyBytes); //调用解密方法17

System.out.println("【Card Cryptogram DATA解密是】:" + Util.byteArrayToHexString(myMsg));

return Util.byteArrayToHexString(myMsg);

}

}

3des java ecb_3DES_ECB_加密解密相关推荐

  1. java字符串加密解密

    2019独角兽企业重金招聘Python工程师标准>>> java字符串加密解密try {String test = "123456789@fdj.com";Enc ...

  2. Java DES 加密解密

    1.加密的相关概念 1.明文:被隐蔽的消息称作明文(plaintext) 2.密文:隐蔽后的消息称作密文(ciphertext) 3.加密:将明文变换成密文的过程称作加密(encryption) 4. ...

  3. java 字符串加密 解密_java字符串加密解密

    java字符串加密解密 try { String test = "123456789@fdj.com"; EncryptionDecryption des = new Encryp ...

  4. Java AES 加密解密工具类

    maven 引入一个依赖 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> <depen ...

  5. Java常用加密解密核心算法

    加密算法 最近面试被问到了一些常见的加密解密算法,特此整理记录. 加密算法我们整体可以分为:可逆加密算法和不可逆加密算法.可逆加密算法又可以分为:对称加密算法和非对称加密算法. 一.不可逆加密算法 常 ...

  6. java des加密解密_Java实现的DES加密解密工具类实例

    本文实例讲述了Java实现的DES加密解密工具类.分享给大家供大家参考,具体如下: 一个工具类,很常用,不做深入研究了,那来可直接用 DesUtil.java package lsy; import ...

  7. java AES加密解密

    近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一:AES可以使用128.192.和256位密钥,并且用128位 ...

  8. java安全 加密解密!

    拷贝java源文件到另外的Eclipse或者MyEclipse的时候.出现红叉,很可能的原因是Jre运行时的环境不对,java的安全主要讲了私钥,公钥.对称加密和非对称加密.说是加密,解密,对手吗加密 ...

  9. Java Base64 加密解密 (数据加密或解决手机Emoji表情被数据库过滤掉的问题)

    2017年06月08日 10:15:19 glimmer_it 阅读数:359更多 个人分类: 安全加密 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

最新文章

  1. php函数细节_php strip_tags()函数使用注意细节
  2. 原来这才是游戏上瘾的机制 如果把它用到生活中的话
  3. Unity3d5.0 新UI之2048
  4. 双电容单相电机接线图解_为什么单相电机要用电容,三相电机不需要?
  5. 在哪个瞬间你感觉自己是一个产品经理?
  6. 清除故障,Windows2003更加亲切
  7. CISCO交换机上实现MAC和端口、IP和端口、IP和MAC的绑定
  8. python前端工资_前端的工资分布情况-你又拖后退了吗?
  9. 批量下载花瓣图片脚本--抖机灵
  10. mysql官网默认账号缪_Mysql账户设置_增删改查_表操作
  11. 论文笔记Doubly Stochastic Variational Inference for Deep Gaussian Processes深度高斯过程的双重随机变分推理
  12. Debian6.02 终端中文设置--FBTerm + ucimf
  13. 复合辛普森公式求解定积分 matlab
  14. adb脚本选择语句_常用adb命令汇总(绝对干货)
  15. Android音乐播放器制作(一)扫描本地音乐显示在手机上
  16. 捕鱼来了2017系列游戏
  17. 微功率隔离电源专用驱动芯片
  18. Java之美[从菜鸟到高手演变]之智力题【史上最全】
  19. SpringCloud鉴权
  20. 【项目】小帽教育(一)

热门文章

  1. html css 如何将图片作为背景,CSS背景图片和HTML中的img标签
  2. 加州欧文大学计算机申请,加州大学欧文分校信息与计算机科学(信息方向)理学硕士研究生申请要求及申请材料要求清单...
  3. PS学习-制作下雨效果
  4. 马蹄疾 | 详解 JavaScript 异步机制及发展历程(万字长文)
  5. CyberArk被评为2022年Gartner特权访问管理魔力象限领导者
  6. java猫抓老鼠_猫抓老鼠-Java面向对象特点梳理
  7. 使用SPSS进行曲线估算分析
  8. 嵌入式电路中的BUCK VS LDO【转】
  9. cpci无法检索_图书馆无法进行CPCI-S检索 - 北京大学图书馆(PKULibrary)版 - 北大未名BBS...
  10. JSON是什么?对JSON的简单理解