全栈工程师开发手册 (作者:栾鹏)

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.当铺密码 1.2.猪圈密码 1.3.键盘密码 二.在线加解密网址 2.1.在线AES.DES加解密 2.2.与佛论禅在线加解密 2.3.核心价值观在线编码 2.4.猪 ...

  2. cryptojs php 互通_PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】

    本文实例讲述了PHP7实现和CryptoJS的AES加密方式互通.分享给大家供大家参考,具体如下: PHP类: class AES { /** * * @param string $string 需要 ...

  3. 【JS 逆向百例】某空气质量监测平台无限 debugger 以及数据动态加密分析

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 写在前面 绕过无限 debugger 方法一 方法二 方法三 抓包分析 加密入口 动态 JS 本地改写 ...

  4. JS逆向之常见编码和混淆加密方式(二)

    继上篇讲到JS的一些常见编码加密方式后,本篇继续讲解一下编码加密方式. JS加密方式: 1.HMAC 加密 2.DES对称加密 3.AES 对称加密 4.RSA 非对称加密 5.https 对称密钥加 ...

  5. 写给小白的常见三种加密方式:MD5,对称非对称加密

    我们在做数据类传输产品或测试的过程中,总会听到开发说数据要加密,然后使用各种加密方式,那么希望通过本文,能够让大家对一些常见的加密方式有一些更加深入的了解,理解其中的底层逻辑. 今天介绍三种常见的加密 ...

  6. 【计算机网络】常见加密方式

    写在前面 这周了解了https是如何实现安全传输的,其中涉及到了s加密的技术.所以,博主去又去学习了常见的加密方式,故写下这篇博客 一. 对称加密 1.介绍 这个比较好理解,也就是说加密和解密使用的是 ...

  7. 密码学之常见加密方式(05)

    常见加密方式 文章目录 常见加密方式 前言 一.对称加密 二.DES加密 三.DES解密 Base64 算法简介 Base64 算法原理 Base64 构成原则 四.base64补等号测试 五.AES ...

  8. 【JS 逆向百例】某空气质量监测平台无限 debugger 以及数据动态加密

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 写在前面 绕过无限 debugger 方法一 方法二 方法三 抓包分析 加密入口 动态 JS 本地改写 ...

  9. 谁更安全?WI-FI无线网加密方式大比拼

    为什么80%的码农都做不了架构师?>>>    哪里有隐私,哪里就有安全防护.随着无线网络的普及,在商场.街上.餐厅搜索到无线信号并不出奇,这些无线热点一般都是免费的提供,并不对信号 ...

  10. 一文读懂十大数据存储加密技术

    数据作为新的生产要素,其蕴含的价值日益凸显,而安全问题却愈发突出.密码技术,是实现数据安全最经济.最有效.最可靠的手段,对数据进行加密,并结合有效的密钥保护手段,可在开放环境中实现对数据的强访问控制, ...

最新文章

  1. 万年历小程序(黑框)
  2. 工作中使用计算机的经验,事业单位考试中计算机工作经历是什么意思
  3. 官方全面解读“5G+工业互联网”
  4. ACE - Reactor模式源码剖析及具体实现(大量源码慎入)
  5. 访问被拒绝:“microsoft.web.ui.webcontrols”的解决办法
  6. 用HttpClientFactory来实现简单的熔断降级
  7. linux刷命令脚本,linux – 如何调试bash脚本并获得每个命令的执行时间
  8. 大学计算机网络期末重点,中南大学计算机网络期末复习重点
  9. python程序中想使用正则表达式_如何在python中使用正则表达式提取每行中需要的信息...
  10. linux mc服务器 mod_使用阿里云服务器搭建饥荒联机版服务器(最新有效2020.2.9更新)...
  11. c oracle 参数赋值,利用c#反射实现实体类生成以及数据获取与赋值
  12. 【精】18款在线网页SVG编辑器
  13. 微信公众号账号登录功能实现
  14. java小组的队名,霸气小组队名口号大全
  15. 【数学】什么是取模运算?
  16. 哲哲打游戏(简单模拟,重点理解题意)
  17. yocto模块使用quilt工具增加patch方法
  18. C#理发店会员管理系统v1.0
  19. 神经网络 mse一直不变_利用神经网络寻找超新星
  20. 如何获取电脑软件图标和app图标

热门文章

  1. create-react-app 后需要npm run eject
  2. 【linux笔记】secureCRT使用
  3. 镜头分割:像素域方法综述
  4. mysql批量写入redis_如何高效地向Redis插入大量的数据(推荐)
  5. epoll边缘触发_epoll事件通知机制详解,水平触发和边沿触发的区别
  6. sequelize 增加数据库字段_sequelize 5.0中文文档连接数据源及数据类型 (一) - node.js语言最好用的orm...
  7. RocketMQ报错:MQClientException:no route info of this topic的解决
  8. 泽众性能测试软件,软件测试工具-测试管理工具-自动化测试工具-性能测试工具-SPASVO泽众软件测试网...
  9. oracle architeture,ORACLE 11G Process Architecture(一)
  10. 应用系统运行监控界面_重庆悦来会展二期电力监控系统的设计与应用