java使用DES加密方式,實現對資料的加密解密
全棧工程師開發手冊 (作者:欒鵬)
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資料加密與解密Java加密解密
- java 實現 DES加密 解密演算法Java加密解密演算法
- DES對稱資料加密加密
- JAVA和C# 3DES加密解密JavaC#3D加密解密
- C#DES加密和解密C#加密解密
- 使用Java加密與解密實現步驟Java加密解密
- Android資料加密之Des加密Android加密
- DES加密和解密PHP,Java,ObjectC統一的方法加密解密PHPJavaObject
- 用vb實現DES加解密演算法(二)--加密 (轉)解密演算法加密
- DES/3DES/AES 三種對稱加密演算法在 Java 中的實現3D加密演算法Java
- C語言實現DES加密C語言加密
- 傻瓜式教學DES加密、解密加密解密
- 淺談貝貝遊戲資料加密解密方式遊戲加密解密
- 使用Des,MD5 加密.解密.字串.檔案 (轉)加密解密字串
- iOS中使用RSA對資料進行加密解密iOS加密解密
- RSA加密解密(無資料大小限制,php、go、java互通實現)加密解密PHPGoJava
- Java加密解密Java加密解密
- AES實現財務資料的加密解密儲存加密解密
- DES加密加密
- 後臺對Json資料加密、解密JSON加密解密
- PHP和.NET通用的加密解密函式類,均使用3DES加解密PHP加密解密函式3D
- java使用RSA加密方式,實現數字簽名Java加密
- 對稱加密演算法----DES加密演算法加密演算法
- Flutter 的加密和解密資料Flutter加密解密
- Oracle對資料進行加密&解密處理Oracle加密解密
- 【知識積累】DES演算法之C#加密&Java解密演算法C#加密Java解密
- 在PHP中使用AES加密演算法加密資料及解密資料PHP加密演算法解密
- 資料加密(對稱加密和非對稱加密)加密
- RSA加密解密及數字簽名Java實現加密解密Java
- Java中的加密與解密Java加密解密
- 資料的加密和解密初識加密解密
- 支付對接常用的加密方式介紹以及java程式碼實現加密Java
- 加密、解密詳解及CA的實現加密解密
- Java加密解密瞭解Java加密解密
- 資料加密方式:APM加密
- Python2 解密易語言DES加密的密文Python解密加密
- 小程式加密資料解密演算法java版加密解密演算法Java
- DES加密詳解加密