package com.mes.metering.util;import java.io.UnsupportedEncodingException;
import java.security.SecureRandom;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.SecretKeyFactory;
import javax.crypto.SecretKey;
import javax.crypto.Cipher;/*** DES加密介绍 DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,* 后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,* 24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现 。* 注意:DES加密和解密过程中,密钥长度都必须是8的倍数*/
public class DesDemo {public DesDemo() {}// 测试public static void main(String args[]) {
// 待加密内容String str = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXNzd29yZCI6IjEyMyIsImV4cCI6MTY1MTY2NjgxMiwidXNlcm5hbWUiOiJ6aGFuZ3NhbiJ9.ufQzpVE0scbG1xznt1WdZvCiZgCkyNEfRzk_jpeFMw4";
// 密码,长度要是8的倍数String password = "95880288";byte[] result;try {result = DesDemo.encrypt(str.getBytes(), password);System.out.println("加密后:" + result);byte[] decryResult = DesDemo.decrypt(result, password);System.out.println("解密后:" + new String(decryResult));} catch (UnsupportedEncodingException e2) {
// TODO Auto-generated catch blocke2.printStackTrace();} catch (Exception e1) {e1.printStackTrace();}}// 直接将如上内容解密/*** 加密** @param datasource byte[]* @param password   String* @return byte[]*/public static byte[] encrypt(byte[] datasource, String password) {try {SecureRandom random = new SecureRandom();DESKeySpec desKey = new DESKeySpec(password.getBytes());
// 创建一个密匙工厂,然后用它把DESKeySpec转换成SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey securekey = keyFactory.generateSecret(desKey);
// Cipher对象实际完成加密操作Cipher cipher = Cipher.getInstance("DES");
// 用密匙初始化Cipher对象,ENCRYPT_MODE用于将 Cipher 初始化为加密模式的常量cipher.init(Cipher.ENCRYPT_MODE, securekey, random);
// 现在,获取数据并加密
// 正式执行加密操作return cipher.doFinal(datasource); // 按单部分操作加密或解密数据,或者结束一个多部分操作} catch (Throwable e) {e.printStackTrace();}return null;}/*** 解密** @param src      byte[]* @param password String* @return byte[]* @throws Exception*/public static byte[] decrypt(byte[] src, String password) throws Exception {
// DES算法要求有一个可信任的随机数源SecureRandom random = new SecureRandom();
// 创建一个DESKeySpec对象DESKeySpec desKey = new DESKeySpec(password.getBytes());
// 创建一个密匙工厂SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");// 返回实现指定转换的
// Cipher
// 对象
// 将DESKeySpec对象转换成SecretKey对象SecretKey securekey = keyFactory.generateSecret(desKey);
// Cipher对象实际完成解密操作Cipher cipher = Cipher.getInstance("DES");
// 用密匙初始化Cipher对象cipher.init(Cipher.DECRYPT_MODE, securekey, random);
// 真正开始解密操作return cipher.doFinal(src);}
}

java 加密使长度变短相关推荐

  1. 短语文:很好很强大 全民参与正在使语文变短zz

    长篇文学是少数人的工作,制造短语文,却是全民的乐子. 你也许没有意识到,你也是这个时代语文的创造者. ◎本版撰文/本报记者 曲慧(除署名外) ■签名档和短信都接在你的名字后面,理所当然地将成为你的&q ...

  2. 短连接生成器——让你的url地址长度变短

    http://www.henshiyong.com/tools/sina-shorten-url.php 转载于:https://www.cnblogs.com/mangu-uu/archive/20 ...

  3. java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串...

    java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 1 package com.zdz.test; ...

  4. 用Java实现:设有一根长3000m 的绳子,每天减一半,需要几天的时间,绳子的长度会短于5m?

    Java练习:设有一根长3000m 的绳子,每天减一半,需要几天的时间,绳子的长度会短于5m? Java程序语言设计课后习题4.11 源代码如下: public class Rope4_11 {pub ...

  5. Java 基础算法 短板问题 : 你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer, 你必须正好使用 k 块

    题目 你正在使用一堆木板建造跳水板. 有两种类型的木板,其中长度较短的木板长度为 shorter ,长度较长的木板长度为 longer . 你必须正好使用 k 块木板.编写一个方法,生成跳水板所有可能 ...

  6. java 加密 BASE64,MD5, SHA,HMAC

    简单的java加密算法有: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algor ...

  7. 牛客练习赛61 D 最短路变短了(最短路,反向最短路)难度⭐⭐⭐★

    最短路变短了 链接 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format:%lld 题目描述 给定一个有向带权图,其中 ...

  8. 对称加密算法 - Java加密与安全

    对称加密算法什么是对称加密算法呢?1. 对称加密算法就是加密和解密使用同一个密钥,例如我们使用WinRAR,对文件进行打包的时候,我们可以设置一个秘密,在解压的时候需要使用同一个密码,才能够正确的解压 ...

  9. Java整合腾讯云短信发送

    1. 引入相关maven依赖 <dependency><groupId>com.github.qcloudsms</groupId><artifactId&g ...

  10. 怎么保证自动化脚本没有问题_质量保证将使设计变得自动化

    怎么保证自动化脚本没有问题 As changes in the world pick up speed, machine learning pioneers steer new technologic ...

最新文章

  1. Photometric Stereo 初體驗
  2. linux重新安装mysql步骤_Linux下MySQL安装及相关操作过程
  3. 笔记-信息系统安全管理-网络安全工具
  4. adobe flash player plugin_Adobe的LOGO升级了! ps图标没有描边了
  5. SpringBoot声明式事务
  6. linux进程运行队列,Linux进程调度中队列的使用
  7. cocos2d-x学习笔记番外篇05:如何快速屏蔽触摸
  8. 家里的活一般是都帮不上忙
  9. Codeforces Round #280 (Div. 2) D. Vanya and Computer Game 二分
  10. 【leetcode❤python】Intersection of Two Arrays
  11. nodejs后台系列--第六篇-把nodejs后台部署到云服务器上面
  12. wordpress函数手册_WordPress中文手册文档
  13. 多伦多大学计算机硕士读几年,多伦多大学计算机硕士申请条件
  14. 家庭教育:怎样安慰不想上学的人
  15. 数据库系统设计_银行业务管理系统
  16. java北京招聘_JAVA应届毕业生去北京找工作,薪资大约多少?
  17. markdown_typora排版编辑技巧(样式嵌套/撤销/列表缩进)/表格内换行
  18. C语言编程>第二十六周 ① 函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。
  19. eclipse默认指向WebContent目录修改为webRoot 设置说明
  20. 局域网控制软件之有效控制局域网主机带宽

热门文章

  1. python2线程池_python 线程池
  2. Linux命令学习总结(超详细)
  3. PyCharm 2022 软件安装及汉化
  4. android俄罗斯方块开发代码,基于Android的俄罗斯方块开发(附源码)
  5. 毕业论文免费查重软件测评及降重心得
  6. 清明小长假不无聊:分享一大波影视网站和APP,轻松看全网视频
  7. 查看Sql Server2016是否激活
  8. java中文手册下载,22年最新
  9. mysql官网下载驱动包
  10. Unity3D新手入门初级教程