失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java使用DES加密方式 实现对数据的加密解密

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

时间:2021-06-25 11:35:47

相关推荐

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="1-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加密方式 实现对数据的加密解密》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。