importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;

//结果与DES算法工具一致public classDES{public static voidmain(String[] args) {

String key= "F2C04AD9F598EE61C424C9C7D39BA75F";

String data= "06321643FF8B67EB";

String des=encryptECB3Des(key,data);

System.out.println(des);

}public staticString encryptECB3Des(String key, String src) {

System.out.println("encryptECB3Des->" + "key:" +key);

System.out.println("encryptECB3Des->" + "src:" +src);int len =key.length();if (key == null || src == null) {return null;

}if (src.length() % 16 != 0) {return null;

}if (len == 32) {

String outData= "";

String str= "";for (int i = 0; i < src.length() / 16; i++) {

str= src.substring(i * 16, (i + 1) * 16);

outData+=encECB3Des(key, str);

}returnoutData;

}return null;

}public staticString encECB3Des(String key, String src) {byte[] temp = null;byte[] temp1 = null;

temp1= encryptDes(hexStringToBytes(key.substring(0, 16)), hexStringToBytes(src));

temp= decryptDes(hexStringToBytes(key.substring(16, 32)), temp1);

temp1= encryptDes(hexStringToBytes(key.substring(0, 16)), temp);returnbytesToHexString(temp1);

}public staticString decECB3Des(String key, String src) {byte[] temp2 = decryptDes(hexStringToBytes(key.substring(0, 16)), hexStringToBytes(src));byte[] temp1 = encryptDes(hexStringToBytes(key.substring(16, 32)), temp2);byte[] dest = decryptDes(hexStringToBytes(key.substring(0, 16)), temp1);returnbytesToHexString(dest);

}public static String bytesToHexString(byte[] src) {

StringBuilder stringBuilder= new StringBuilder("");if (src == null || src.length <= 0) {return null;

}for (int i = 0; i < src.length; i++) {int v = src[i] & 0xFF;

String hv=Integer.toHexString(v);if (hv.length() < 2) {

stringBuilder.append(0);

}

stringBuilder.append(hv);

}returnstringBuilder.toString();

}public static byte[] hexStringToBytes(String hexString) {if (hexString == null || hexString.equals("")) {return null;

}

hexString=hexString.toUpperCase();int length = hexString.length() / 2;char[] hexChars =hexString.toCharArray();byte[] d = new byte[length];for (int i = 0; i < length; i++) {int pos = i * 2;

d[i]= (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));

}returnd;

}private static byte charToByte(charc) {return (byte) "0123456789ABCDEF".indexOf(c);

}/*** 3DES(双倍长) 解密

*

*@paramkeybyte

*@paramsrc

*@return

*/

public staticString decryptECB3Des(String key, String src) {if (key == null || src == null) {return null;

}if (src.length() % 16 != 0) {return null;

}if (key.length() == 32) {

String outData= "";

String str= "";for (int i = 0; i < src.length() / 16; i++) {

str= src.substring(i * 16, (i + 1) * 16);

outData+=decECB3Des(key, str);

}returnoutData;

}return null;

}/*** DES加密

**/

public static byte[] encryptDes(byte[] key, byte[] src) {try{//创建一个DESKeySpec对象

DESKeySpec desKey = newDESKeySpec(key);//创建一个密匙工厂

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");//将DESKeySpec对象转换成SecretKey对象

SecretKey secretKey =keyFactory.generateSecret(desKey);//Cipher对象实际完成解密操作

Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding");//用密匙初始化Cipher对象

cipher.init(Cipher.ENCRYPT_MODE, secretKey);//现在,获取数据并加密//正式执行加密操作

returncipher.doFinal(src);

}catch(Exception e) {

e.printStackTrace();

}return null;

}/*** des解密

*

*@paramkey

*@paramsrc

*@return

*/

public static byte[] decryptDes(byte[] key, byte[] src) {try{//DES算法要求有一个可信任的随机数源

SecureRandom random = newSecureRandom();//创建一个DESKeySpec对象

DESKeySpec desKey = newDESKeySpec(key);//创建一个密匙工厂

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");//将DESKeySpec对象转换成SecretKey对象

SecretKey secretKey =keyFactory.generateSecret(desKey);//Cipher对象实际完成解密操作

Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding");//用密匙初始化Cipher对象

cipher.init(Cipher.DECRYPT_MODE, secretKey, random);//现在,获取数据并加密//正式执行加密操作

returncipher.doFinal(src);

}catch(Exception e) {

e.printStackTrace();

}return null;

}

}

des vue 双倍长 解密_3DES双倍长加密 - osc_ojx9hm4t的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. vue仿今日头条_vue 仿今日头条 - osc_isfcy2fi的个人空间 - OSCHINA - 中文开源技术交流社区...

    vue 仿今日头条 为了增加移动端项目的经验,近一周通过 vue 仿写今日头条,以下就项目实现过程中遇到的问题以及解决方法给出总结,有什么不正确的地方,恳请大家批评指正^ _ ^!,代码仓库地址为 g ...

  2. php 原理 淘口令 解密_淘口令解析 - super19911115的个人空间 - OSCHINA - 中文开源技术交流社区...

    淘口令解析 通过程序解析淘口令,无需联盟开发者权限,只需几行代码就可实现自动识别淘口令: def query_password(sign_server, share_password): data = ...

  3. vue 文字转语音mp3_vue 语音合成 - 梦魂清风的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.百度语音 restAPI https 请求,在线语音合成免费 tex 必填 合成的文本,使用UTF-8编码.小于2048个中文字或者英文数字.(文本在百度服务器内转换为GBK后,长度必须小于409 ...

  4. 支付宝php 验签 解密,支付宝敏感信息解密 - osc_fcq4wwqo的个人空间 - OSCHINA - 中文开源技术交流社区...

    /*** 敏感信息解密*/@PostMapping(value= "/decryptor", produces =MediaType.APPLICATION_JSON_UTF8_V ...

  5. 仿射解密c语言程序实验报告,仿射加密解密 - 依姆哣特的个人空间 - OSCHINA - 中文开源技术交流社区...

    //功能:仿射加密 密钥:[3][5][9][11][15][17][19][21][23]有逆元的数 例子:pku  c=7,d=3  输出 :EVN 编辑环境:vc++6.0 include in ...

  6. php抓娃娃机器,vue制作抓娃娃机 - osc_icwhzig7的个人空间 - OSCHINA - 中文开源技术交流社区...

    去年为联通制作双十一活动,做四个小游戏:'配对消消乐'.移动拼图.抓娃娃.倒计时. 现在先做来分享一下制作抓娃娃游戏时的经验 先上效果图 游戏规则:在指定时间内抓到上图四张卡片为挑战成功. 现在直接说 ...

  7. vue向list中添加数据_vue点击添加数据 - osc_sjg81se7的个人空间 - OSCHINA - 中文开源技术交流社区...

    通过v-model来实现数据的添加,以后会有更好的办法. 首先,写三个input 文本域,然后通过v-model 双向绑定data 里面的prop 对象里面对应的字段,里面的字段都给空字符串,因为一开 ...

  8. java线程锁为什么要唯一,java线程同步-锁 - 谁说这么长又没有中心思想还与个人技术主题无关的的标题是胡闹??? - OSCHINA - 中文开源技术交流社区...

    1.synchronized 用在方法和代码块上有什么区别呢? synchronized 用在方法签名上(以test为例),当某个线程调用此方法时,会获取该实例的对象锁,方法未结束之前,其他线程只能去 ...

  9. des vue 双倍长 解密_[转]单倍长密钥加密和双倍长密钥加密,银联直联终端62域难点详解...

    首先来看一段文字: ------------------– 银联直联终端测试中,在POS终端签到的应答报文中,62域是如何规定的? 62域长度应为24或40个字节.对于单倍长密钥算法:前12个字节为P ...

最新文章

  1. (二)Amazon Lightsail 部署LAMP应用程序之部署单片LAMP应用程序
  2. 买股票的最佳时机(六种题解dp)
  3. 排序算法 —— 选择排序
  4. 【ARM】Cortex存储系统
  5. 显示三维图片序列_SLAM结合三维检测
  6. C++为什么空格无法输出_OOP 面向对象编程:由 C 到 C++
  7. java 联合_如何在java中进行联合,相交,区分和反向数据
  8. 点滴记录:管理工作的50点亲身感悟(分享!)
  9. vue 局部回到顶部_vue中回到顶部
  10. synchronized解析
  11. App上实现用户手写签名保存为透明PNG格式图片
  12. 2021微信红包封面免费领取最新攻略 春节免费微信红包封面序列号大全
  13. 增加网站的档次!网页设计师可在网站中加入暗色调
  14. 大数据助力普惠金融发展
  15. 春运在即 360又抢了12306的风头
  16. JavaFX入门(五):使用CSS样式美化你的UI控件
  17. 微信小程序输入框字数限制以及计算
  18. 信息流广告投放相关概念与技术(DSP等,OCPA)
  19. Linux系统调用之SYSCALL_DEFINE
  20. 十进制转换为二、十六进制的方法

热门文章

  1. 绿色版NVM安装与配置详细说明
  2. oracle字符界面安装,怎么解决oracle在linux 纯字符界面安装有关问题
  3. 2022-2028年中国无菌手套产业发展动态及投资趋势预测报告
  4. “睡眠猴子”团队项目及成员介绍
  5. Android环境搭建和Android HelloWorld—Android开发环境搭建
  6. ((ios开发学习笔记九)) Simple TableView 实现(附 实例源码)
  7. java struts2值栈ognl_Struts2 (三) — OGNL与值栈
  8. pat 食物链(状态压缩求哈密顿回路)
  9. 单调队列多重背包时间复杂度O(vn)
  10. usaco The Tamworth Two 两只塔姆沃斯牛