DES全称为DataEncryption Standard,即数据加密标准,是一种对称加密算法!


DES加密介绍

DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现。

JAVA实现

加密

代码有详细解释,不多废话。
注意:DES加密和解密过程中,密钥长度都必须是8的倍数
[java] view plaincopy
  1. public byte[] desCrypto(byte[] datasource, String password) {
  2. try{
  3. SecureRandom random = new SecureRandom();
  4. DESKeySpec desKey = new DESKeySpec(password.getBytes());
  5. //创建一个密匙工厂,然后用它把DESKeySpec转换成
  6. SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
  7. SecretKey securekey = keyFactory.generateSecret(desKey);
  8. //Cipher对象实际完成加密操作
  9. Cipher cipher = Cipher.getInstance("DES");
  10. //用密匙初始化Cipher对象
  11. cipher.init(Cipher.ENCRYPT_MODE, securekey, random);
  12. //现在,获取数据并加密
  13. //正式执行加密操作
  14. return cipher.doFinal(datasource);
  15. }catch(Throwable e){
  16. e.printStackTrace();
  17. }
  18. return null;
  19. }

解密

代码有详细注释,不多废话
[java] view plaincopy
  1. private byte[] decrypt(byte[] src, String password) throws Exception {
  2. // DES算法要求有一个可信任的随机数源
  3. SecureRandom random = new SecureRandom();
  4. // 创建一个DESKeySpec对象
  5. DESKeySpec desKey = new DESKeySpec(password.getBytes());
  6. // 创建一个密匙工厂
  7. SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
  8. // 将DESKeySpec对象转换成SecretKey对象
  9. SecretKey securekey = keyFactory.generateSecret(desKey);
  10. // Cipher对象实际完成解密操作
  11. Cipher cipher = Cipher.getInstance("DES");
  12. // 用密匙初始化Cipher对象
  13. cipher.init(Cipher.DECRYPT_MODE, securekey, random);
  14. // 真正开始解密操作
  15. return cipher.doFinal(src);
  16. }

测试场景

例如,我们可以利用如上函数对字符串进行加密解密,也可以对文件进行加密解密,如:
[java] view plaincopy
  1. //待加密内容
  2. String str = "测试内容";
  3. //密码,长度要是8的倍数
  4. String password = "12345678";
  5. byte[] result = DESCrypto.desCrypto(str.getBytes(),password);
  6. System.out.println("加密后内容为:"+new String(result));
  7. //直接将如上内容解密
  8. try {
  9. byte[] decryResult = des.decrypt(result, password);
  10. System.out.println("加密后内容为:"+new String(decryResult));
  11. } catch (Exception e1) {
  12. e1.printStackTrace();
  13. }

JAVA实现DES加密相关推荐

  1. java使用DES加密方式,实现对数据的加密解密

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用DES加密方式,实现对数据的加密解密.加密和解密中需要使用同一个秘钥 第一种方式,使用类型Key作为加密解密的共同秘钥. 测试代码 p ...

  2. php与java的des加密解密

    与第三方接口对接des加密.解密,第三方提供java的des加密解密demo,特记录PHP与java加密解密. import javax.crypto.*; import javax.crypto.s ...

  3. IOS、java支持DES加密

    最近在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当然不是看的原理,只是看看怎么能够实现.现在我们需要实现的是移动端和后台(java)数据加解密的配合,开始的时候考虑的使用RSA,因为RSA ...

  4. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  5. java php des加密 byte数组16进制 DESTools

    大家好,我是烤鸭: 今天分享的是java 和 php des 加密. 因为接口对接,难免不同语言,加密又是必不可少的. 作为接口的提供方,必须把加密规则写好,最好有不同语言的加密demo. 1.    ...

  6. Android平台和java平台 DES加密解密互通程序及其不能互通的原因

    为什么80%的码农都做不了架构师?>>>    网上的demo一搜一大堆,但是,基本上都是一知半解(包括我).为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DE ...

  7. java c des ecb_PHP、Java的Des加密(ECB mode)

    PHP 和 Java �g用 Des 加密(ECB mode) ��鬏��Y料,要�_保�蛇�用同�拥�key加解密的�Y果一�印� PHP code: /** * DES 加解密(ECB mode) ...

  8. java ios des加密解密_IOS、java支持DES加密

    转载请注明博客地址:http://blog.csdn.net/mengxiangyue/article/details/40015727 近期在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当 ...

  9. java des 加密工具的使用,Java中DES加密解密工具类的实现实例

    这篇文章主要介绍了Java实现的DES加密解密工具类,结合具体实例形式分析了Java实现的DES加密解密工具类定义与使用方法,需要的朋友可以参考下 本文实例讲述了Java实现的DES加密解密工具类.分 ...

  10. Java实现DES加密解密

    DES(Data Encryption Standard)是一种对称加密算法,所谓对称加密就是加密和解密都是使用同一个密钥. 加密原理: DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位, ...

最新文章

  1. 基础知识《十》unchecked异常和checked异常
  2. 操作系统服务:logging日志记录模块
  3. 使用mybatis中的自定义TypeHandler处理PostgreSQL中的Json类型
  4. oracle10_client的安装,Oracle10.2ClientWindows安装.doc
  5. pandas基础(part4)--排序/分组/合并
  6. Docker 方式安装、运行 Nexus3 、重置默认密码、推送 jar 包到私服
  7. vs里安装了mysql吗_vs2017安装 MySQL for Visual Studio 1.2.
  8. Java关键字final、static
  9. 大话RAC介质恢复---联机日志损坏
  10. spring:注解配置AOP
  11. Java生成随机数原理_JAVA随机数生成的机制
  12. js基础之六种继承方式
  13. 网络型多媒体计算机教室功能是,多媒体网络教室中的信息技术教学
  14. html 圣诞节贺卡模板,圣诞节立体贺卡模板大全
  15. Matrix Operations -- Transpose +Determinant + Adjugate+ Inverse + Gram-Schimidt +LUP + QR + Eigen
  16. uniapp 调用原生插件包含第三方SDK时抛NoClassDefFoundError异常
  17. 笔记-pd.set_option()
  18. 主播必备超萌代打猫咪,超人气全键盘版资源下载~
  19. 一个参数 nls_date_language
  20. Java基础部分 阶段一(语法基础)1、开发环境搭建(计算机编程及开发语言)

热门文章

  1. fileformat set
  2. A、B、C、D、E、F、G、H、I、J 共10名学生有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束
  3. BIM软件工具选择顺手——事半功倍
  4. [stm32] Start Tour-按键控制LED
  5. 华为nova5ipro的优缺点_三个原因告诉你 为何华为nova 5i Pro如此受追捧
  6. Linux 入门概述
  7. 独立站联盟营销引流大法
  8. Qt/PyQt 重写mouseMoveEvent事件 实时监测鼠标移动
  9. 控制系统计算机仿真实验一,控制系统计算机仿真实验青岛科技大学
  10. ESP32用NVS存储wifi信息