java使用DES加密方式,实现对数据的加密解密
来源:互联网 发布:硬盘分区丢失数据恢复 编辑:程序博客网 时间:2024/06/18 12:40
全栈工程师开发手册 (作者:栾鹏)
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; } }
阅读全文
0 0
- java使用DES加密方式,实现对数据的加密解密
- java实现DES数据加密与解密
- java实现DES数据加密与解密
- java实现DES数据加密与解密
- java实现DES数据加密与解密
- java使用RSA加密方式实现数据加密解密
- 使用DES数据加密与解密的java代码
- DES加密与解密的java实现
- Java实现简单的DES加密解密
- java实现DES的加密解密
- Java 实现DES加密解密
- DES加密解密->java实现
- java DES加密解密实现
- Java实现DES加密解密
- java实现对称加密AES和DES的加密、解密
- DES - Java编程: 使用DES加密/解密
- DES 加密,解密方式
- 使用C# DES解密java DES加密的字符串
- CSS(八) 盒子的浮动与定位
- BinaryTree C++
- click事件的累加绑定,绑定一次点击事件,执行多次
- unity_NGUI系统学习(七)_Anchor锚点的设置和使用技巧
- linux学习之路 删除内核中的文件
- java使用DES加密方式,实现对数据的加密解密
- Lucus定理
- HDU
- HDU 4059 The Boss on Mars(质数分解+容斥)
- 9.MySQL触发器示例
- centos6.5安装openoffice
- hashmap对字符串的统计
- C语言数据类型问题及答疑
- Maven