import java.security.SecureRandom;

import javax.crypto.Cipher;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

/**

* @author tangx

* 测试des的加密与解密

*/

public class TestDES {

public static void main(String[] args) {

// TODO Auto-generated method stub

String source  = "测试des加密";

String key = "123456781";

String result = encrypt(source, key);

//加密结果

System.out.println(result);

//解密

System.out.println(decrypt(result, key));

}

/**

* DES加密操作

* @param source 要加密的源

* @param key    约定的密钥

* @return

*/

public static String encrypt(String source,String key){

//强加密随机数生成器

SecureRandom random = new SecureRandom();

try {

//创建密钥规则

DESKeySpec keySpec = new DESKeySpec(key.getBytes());

//创建密钥工厂

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

//按照密钥规则生成密钥

SecretKey secretKey =  keyFactory.generateSecret(keySpec);

//加密对象

Cipher cipher = Cipher.getInstance("DES");

//初始化加密对象需要的属性

cipher.init(Cipher.ENCRYPT_MODE, secretKey, random);

//开始加密

byte[] result = cipher.doFinal(source.getBytes());

//Base64加密

return  new BASE64Encoder().encode(result) ;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* 解密

* @param cryptograph 密文

* @param key         约定的密钥

* @return

*/

public static String decrypt(String cryptograph,String key){

//强加密随机生成器

SecureRandom random  =  new SecureRandom();

try {

//定义私钥规则

DESKeySpec keySpec = new DESKeySpec(key.getBytes());

//定义密钥工厂

SecretKeyFactory factory = SecretKeyFactory.getInstance("DES");

//按照密钥规则生成密钥

SecretKey secretkey = factory.generateSecret(keySpec);

//创建加密对象

Cipher cipher = Cipher.getInstance("DES");

cipher.init(Cipher.DECRYPT_MODE, secretkey, random);

//Base64对

byte[] result = new BASE64Decoder().decodeBuffer(cryptograph);

return new String(cipher.doFinal(result));

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

测试结果:

java des加密解密_DES加密和解密的JAVA实现方式相关推荐

  1. java des ecb_【转】 java DES ECB模式对称加密解密

    最近需要又要使用DES加密数据,要求DES加密出来的数据为对称加密,经过研究,发现了一些问题: 1.DES对称ECB模式加密的数据,长度必须为8的倍数 2.加密的数据,加密后先转码(因为加密后的数据我 ...

  2. java des算法_Java DES算法程序

    java des算法 Java Cryptography Extension (JCE) provides framework and implementation for generating ke ...

  3. [转]DES加密 java与.net可以相互加密解密两种方法

    [转]原文地址:http://jumpman.javaeye.com/blog/605996 DES加密 java与.net可以相互加密解密两种方法 文章分类:Java编程 通过这个方法可以实现jav ...

  4. Java实现Base64、DES、AES、RSA加解密以及加密方式之间的区别

    Base64 加密, 这个其实不可以算作加密方法,它可以看作是一种编码方式,它的用途只是二进制数字和字符串进行相互转化. Base64是网络上最常见的用于传输 8Bit字节码的编码方式之一,是一种基于 ...

  5. java des ecb_java DES ECB模式对称加密解密

    最近需要又要使用DES加密数据,要求DES加密出来的数据为对称加密,经过研究,发现了一些问题: 1.DES对称ECB模式加密的数据,长度必须为8的倍数 2.加密的数据,加密后先转码(因为加密后的数据我 ...

  6. Java DES 加密解密

    1.加密的相关概念 1.明文:被隐蔽的消息称作明文(plaintext) 2.密文:隐蔽后的消息称作密文(ciphertext) 3.加密:将明文变换成密文的过程称作加密(encryption) 4. ...

  7. DES和RSA混合加密及解密-JAVA

    DES和RSA混合加密及解密 实际开发过程中,RSA生成的公钥应保存在加密方,私钥应保存在解密方,可使用读取文件内容方式获取密钥. maven依赖: <!-- DES --><dep ...

  8. Java DES、AES、RSA、DM5读取文件加密解密

    //下面代码是直接读取文件来进行加密解密,算法文件 package Test; import javax.crypto.KeyGenerator; import javax.crypto.Cipher ...

  9. java实现加密解密抽象_DES加密解密-java实现

    DES加密解密涉及到的JAVA类 Cipher 此类为加密和解密提供密码功能.它构成了 Java Cryptographic Extension (JCE) 框架的核心. 为创建 Cipher 对象, ...

最新文章

  1. Oracle --存储过程,输入不定个数参数
  2. [译]理解js中的event loop
  3. python import 路径设置
  4. 机器人程序设计——之如何正确入门ROS | 硬创公开课(附视频/PPT)【转】
  5. matlab实现epirb调制,[单选] 根据《建筑安装工程费用项目组成》(建标[2003]206号)的规定,下列属于直接工程费中材料费的是()。...
  6. 关于STM32L100xx, STM32L151xx, STM32L152xx ,STM32L162xx 的Power Control
  7. UDS诊断系列之一 汽车诊断简介
  8. PX4的软件仿真(SITL)环境配置过程
  9. 你知道大量群发邮件用什么邮箱好吗?
  10. 淘宝至强cpu为什么那么便宜
  11. ZOJ3594 Sexagenary Cycle
  12. OBIEE,OAS,OAC三者之间的区别
  13. wating for network configuration unity恢复
  14. 惠普暗影精灵4pro安装ubuntu16.04
  15. Milestone 系统架构 及产品白皮书
  16. 电容笔有必要买吗?双十一性价比高的电容笔推荐
  17. CAN通信标准帧和扩展帧(全网最透彻解答)
  18. 中国脂肪填充奶粉(FFMP)市场趋势报告、技术动态创新及市场预测
  19. 题解:线性规划与网络流24题 T2 太空飞行计划问题
  20. JIR、进程池和线程池

热门文章

  1. 学计算机用锐龙,开学装机:3000元AMD锐龙5,2400G核显电脑配置推荐
  2. 树莓派开发—— wiringPi 库的使用
  3. 变量声明-TS学习笔记(2)
  4. OMAPL138调试笔记
  5. Java实现手机发送短信验证码
  6. python连接oracle报错DPI-1047
  7. XYT-EDFA光纤放大器-纤亿通谈超远距离传输神器!
  8. 英语语法总结---三、英语中三个特殊句式是哪三个
  9. C# .net Framework Windows窗体应用【01】
  10. SHAR1,获取不同,release版本SHAR1,debug版本SHAR1,导致定位失败,经纬度获取为0