3DES(或稱爲Triple DES)是三重數據加密算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當於是對每個數據塊應用三次DES加密算法。由於計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼算法。
基於Java的DES算法的使用
//base64編碼
public static String byte2base64(byte[] bytes){
BASE64Encoder base64Encoder = new BASE64Encoder();
return base64Encoder.encode(bytes);
}
//base64解碼
public static byte[] base642byte(String base64) throws Exception{
BASE64Decoder base64Decoder = new BASE64Decoder();
return base64Decoder.decodeBuffer(base64);
}
public static String getKeyDes() throws Exception{
//1.通過KeyGenerator獲取祕鑰生成器
KeyGenerator kg = KeyGenerator.getInstance("DES");
//2.設置DES算法的祕鑰爲56位
kg.init(56);
//3.生成DES算法的祕鑰
SecretKey key = kg.generateKey();
//4.爲了方便存儲,生成祕鑰後進行base64編碼
String base64Str = byte2base64(key.getEncoded());
return base64Str;
}
public static SecretKey SecreKeyDes(String base64Key) throws Exception{
//1.將相應的祕鑰字符串轉換成SecretKey對象
byte[] bytes = base642byte(base64Key);
//2.需要將祕鑰base64解碼後,傳入對應的算法後實例一個SecretKey即可
SecretKey key = new SecretKeySpec(bytes, "DES");
return key;
}
//加密
public static byte[] encryptDES(byte[] source,SecretKey key)throws Exception{
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE,key);//加密模式
byte[] bytes = cipher.doFinal(source);
return bytes;
}
//解密
public static byte[] decryptDES(byte[] source,SecretKey key)throws Exception{
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE,key);//解密模式
byte[] bytes = cipher.doFinal(source);
return bytes;
}