java使用DES加密方式,实现对数据的加密解密
全栈工程师开发手册 (作者:栾鹏)
java教程全解
java使用DES加密方式,实现对数据的加密解密。加密和解密中需要使用同一个秘钥
第一种方式,使用类型Key作为加密解密的共同秘钥。
测试代码
public static void main(String[] args) {try {DESDemo des=new DESDemo();des.generateKey();byte[] data="Hello World!".getBytes();byte[] data1=des.des_encrypt(data); //加密byte[] data2=des.des_dencrypt(data1); //解密String back=new String(data2);System.out.println(back);} catch (Exception e) {e.printStackTrace();}}
DES加密解密工具类的实现
package com.lp.app.safe;
import java.security.*;
import javax.crypto.*;
public class DESDemo {Key key;//产生秘钥public void generateKey() throws Exception {// 得到DES私钥KeyGenerator keyGen = KeyGenerator.getInstance("DES");keyGen.init(56);key = keyGen.generateKey();}//des加密,输入明文字节流public byte[] des_encrypt(byte[] plainText) throws Exception {// 得到DES cipher 对象Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");// 使用密钥对明文进行加密cipher.init(Cipher.ENCRYPT_MODE, key);byte[] cipherText = cipher.doFinal(plainText);return cipherText;}//des解密public byte[] des_dencrypt(byte[] cipherText) throws Exception {// 使用同一把密钥对密文进行解密// 得到DES cipher 对象Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, key);byte[] newPlainText = cipher.doFinal(cipherText);return newPlainText;}
}
第二种方式,使用字节数组byte[]作为加密解密的共同秘钥
测试代码
public static void main(String[] args) {String str1="12014-11-15";// DES数据加密 String s1=encryptBasedDes(str1);System.out.println("加密后"+s1); // DES数据解密 String s2=decryptBasedDes(s1); System.out.println("解密后"+s2); }
加密解密工具类的实现
package com.lp.app.util;import java.security.SecureRandom;import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;public class DESUtil {//算法密匙private static final byte[] DES_KEY = { 21, 1, -110, 82, -32, -85, -128, -65 }; //数据加密,算法(DES) public static String encryptBasedDes(String data) { String encryptedData = null; try { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); DESKeySpec deskey = new DESKeySpec(DES_KEY); // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(deskey); // 加密对象 Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key, sr); // 加密,并把字节数组编码成字符串 encryptedData = new sun.misc.BASE64Encoder().encode(cipher.doFinal(data.getBytes())); } catch (Exception e) {
// log.error("加密错误,错误信息:", e); throw new RuntimeException("加密错误,错误信息:", e); } return encryptedData; } //解密(DES) public static String decryptBasedDes(String cryptData) { String decryptedData = null;try { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); DESKeySpec deskey = new DESKeySpec(DES_KEY); // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(deskey); // 解密对象 Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, key, sr); // 把字符串解码为字节数组,并解密 decryptedData = new String(cipher.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(cryptData))); } catch (Exception e) {
// log.error("解密错误,错误信息:", e); throw new RuntimeException("解密错误,错误信息:", e); } return decryptedData; } }
java使用DES加密方式,实现对数据的加密解密相关推荐
- 分享几种有趣的加密方式和几个在线加解密网址
目录 一.有趣的加密方式 1.1.当铺密码 1.2.猪圈密码 1.3.键盘密码 二.在线加解密网址 2.1.在线AES.DES加解密 2.2.与佛论禅在线加解密 2.3.核心价值观在线编码 2.4.猪 ...
- cryptojs php 互通_PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
本文实例讲述了PHP7实现和CryptoJS的AES加密方式互通.分享给大家供大家参考,具体如下: PHP类: class AES { /** * * @param string $string 需要 ...
- 【JS 逆向百例】某空气质量监测平台无限 debugger 以及数据动态加密分析
关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 写在前面 绕过无限 debugger 方法一 方法二 方法三 抓包分析 加密入口 动态 JS 本地改写 ...
- JS逆向之常见编码和混淆加密方式(二)
继上篇讲到JS的一些常见编码加密方式后,本篇继续讲解一下编码加密方式. JS加密方式: 1.HMAC 加密 2.DES对称加密 3.AES 对称加密 4.RSA 非对称加密 5.https 对称密钥加 ...
- 写给小白的常见三种加密方式:MD5,对称非对称加密
我们在做数据类传输产品或测试的过程中,总会听到开发说数据要加密,然后使用各种加密方式,那么希望通过本文,能够让大家对一些常见的加密方式有一些更加深入的了解,理解其中的底层逻辑. 今天介绍三种常见的加密 ...
- 【计算机网络】常见加密方式
写在前面 这周了解了https是如何实现安全传输的,其中涉及到了s加密的技术.所以,博主去又去学习了常见的加密方式,故写下这篇博客 一. 对称加密 1.介绍 这个比较好理解,也就是说加密和解密使用的是 ...
- 密码学之常见加密方式(05)
常见加密方式 文章目录 常见加密方式 前言 一.对称加密 二.DES加密 三.DES解密 Base64 算法简介 Base64 算法原理 Base64 构成原则 四.base64补等号测试 五.AES ...
- 【JS 逆向百例】某空气质量监测平台无限 debugger 以及数据动态加密
关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 写在前面 绕过无限 debugger 方法一 方法二 方法三 抓包分析 加密入口 动态 JS 本地改写 ...
- 谁更安全?WI-FI无线网加密方式大比拼
为什么80%的码农都做不了架构师?>>> 哪里有隐私,哪里就有安全防护.随着无线网络的普及,在商场.街上.餐厅搜索到无线信号并不出奇,这些无线热点一般都是免费的提供,并不对信号 ...
- 一文读懂十大数据存储加密技术
数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出.密码技术,是实现数据安全最经济.最有效.最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环境中实现对数据的强访问控制, ...
最新文章
- 万年历小程序(黑框)
- 工作中使用计算机的经验,事业单位考试中计算机工作经历是什么意思
- 官方全面解读“5G+工业互联网”
- ACE - Reactor模式源码剖析及具体实现(大量源码慎入)
- 访问被拒绝:“microsoft.web.ui.webcontrols”的解决办法
- 用HttpClientFactory来实现简单的熔断降级
- linux刷命令脚本,linux – 如何调试bash脚本并获得每个命令的执行时间
- 大学计算机网络期末重点,中南大学计算机网络期末复习重点
- python程序中想使用正则表达式_如何在python中使用正则表达式提取每行中需要的信息...
- linux mc服务器 mod_使用阿里云服务器搭建饥荒联机版服务器(最新有效2020.2.9更新)...
- c oracle 参数赋值,利用c#反射实现实体类生成以及数据获取与赋值
- 【精】18款在线网页SVG编辑器
- 微信公众号账号登录功能实现
- java小组的队名,霸气小组队名口号大全
- 【数学】什么是取模运算?
- 哲哲打游戏(简单模拟,重点理解题意)
- yocto模块使用quilt工具增加patch方法
- C#理发店会员管理系统v1.0
- 神经网络 mse一直不变_利用神经网络寻找超新星
- 如何获取电脑软件图标和app图标
热门文章
- create-react-app 后需要npm run eject
- 【linux笔记】secureCRT使用
- 镜头分割:像素域方法综述
- mysql批量写入redis_如何高效地向Redis插入大量的数据(推荐)
- epoll边缘触发_epoll事件通知机制详解,水平触发和边沿触发的区别
- sequelize 增加数据库字段_sequelize 5.0中文文档连接数据源及数据类型 (一) - node.js语言最好用的orm...
- RocketMQ报错:MQClientException:no route info of this topic的解决
- 泽众性能测试软件,软件测试工具-测试管理工具-自动化测试工具-性能测试工具-SPASVO泽众软件测试网...
- oracle architeture,ORACLE 11G Process Architecture(一)
- 应用系统运行监控界面_重庆悦来会展二期电力监控系统的设计与应用