java 加密使长度变短
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 加密使长度变短相关推荐
- 短语文:很好很强大 全民参与正在使语文变短zz
长篇文学是少数人的工作,制造短语文,却是全民的乐子. 你也许没有意识到,你也是这个时代语文的创造者. ◎本版撰文/本报记者 曲慧(除署名外) ■签名档和短信都接在你的名字后面,理所当然地将成为你的&q ...
- 短连接生成器——让你的url地址长度变短
http://www.henshiyong.com/tools/sina-shorten-url.php 转载于:https://www.cnblogs.com/mangu-uu/archive/20 ...
- java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串...
java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 1 package com.zdz.test; ...
- 用Java实现:设有一根长3000m 的绳子,每天减一半,需要几天的时间,绳子的长度会短于5m?
Java练习:设有一根长3000m 的绳子,每天减一半,需要几天的时间,绳子的长度会短于5m? Java程序语言设计课后习题4.11 源代码如下: public class Rope4_11 {pub ...
- Java 基础算法 短板问题 : 你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer, 你必须正好使用 k 块
题目 你正在使用一堆木板建造跳水板. 有两种类型的木板,其中长度较短的木板长度为 shorter ,长度较长的木板长度为 longer . 你必须正好使用 k 块木板.编写一个方法,生成跳水板所有可能 ...
- java 加密 BASE64,MD5, SHA,HMAC
简单的java加密算法有: BASE64 严格地说,属于编码格式,而非加密算法 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algor ...
- 牛客练习赛61 D 最短路变短了(最短路,反向最短路)难度⭐⭐⭐★
最短路变短了 链接 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format:%lld 题目描述 给定一个有向带权图,其中 ...
- 对称加密算法 - Java加密与安全
对称加密算法什么是对称加密算法呢?1. 对称加密算法就是加密和解密使用同一个密钥,例如我们使用WinRAR,对文件进行打包的时候,我们可以设置一个秘密,在解压的时候需要使用同一个密码,才能够正确的解压 ...
- Java整合腾讯云短信发送
1. 引入相关maven依赖 <dependency><groupId>com.github.qcloudsms</groupId><artifactId&g ...
- 怎么保证自动化脚本没有问题_质量保证将使设计变得自动化
怎么保证自动化脚本没有问题 As changes in the world pick up speed, machine learning pioneers steer new technologic ...
最新文章
- Photometric Stereo 初體驗
- linux重新安装mysql步骤_Linux下MySQL安装及相关操作过程
- 笔记-信息系统安全管理-网络安全工具
- adobe flash player plugin_Adobe的LOGO升级了! ps图标没有描边了
- SpringBoot声明式事务
- linux进程运行队列,Linux进程调度中队列的使用
- cocos2d-x学习笔记番外篇05:如何快速屏蔽触摸
- 家里的活一般是都帮不上忙
- Codeforces Round #280 (Div. 2) D. Vanya and Computer Game 二分
- 【leetcode❤python】Intersection of Two Arrays
- nodejs后台系列--第六篇-把nodejs后台部署到云服务器上面
- wordpress函数手册_WordPress中文手册文档
- 多伦多大学计算机硕士读几年,多伦多大学计算机硕士申请条件
- 家庭教育:怎样安慰不想上学的人
- 数据库系统设计_银行业务管理系统
- java北京招聘_JAVA应届毕业生去北京找工作,薪资大约多少?
- markdown_typora排版编辑技巧(样式嵌套/撤销/列表缩进)/表格内换行
- C语言编程>第二十六周 ① 函数fun的功能是:将形参b所指数组中的前半部分元素的值和后半部分元素的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。
- eclipse默认指向WebContent目录修改为webRoot 设置说明
- 局域网控制软件之有效控制局域网主机带宽