java 使用 DES加密解密
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
/**
* DES加密解密
* @author wy
* 2016.9.8
*/
public class DESTest {
public static String str = "這是需要加密的des字符串";
//這是加密字符串的密碼,通過當前字符串加密和解密 (密碼需要8位以上)
public static String password = "5d111121d122";
public static void main(String[] args) throws Exception{
//加密獲得加密後字節
byte [] encrypt = encryptStr(str,password);
System.out.println("加密過後的字節對象:"+encrypt);
//解密
byte [] decrypt = decryptStr(encrypt,password);
System.out.println("解密後的字符串:"+new String(decrypt));
}
/**
* 加密字符串
* @param mes 加密內容
* @param password 通過當前字符串加密和解密 (如果給定的密鑰內容短於 8 個字節。會拋出InvalidKeyException異常)
* @return
*/
public static byte[] encryptStr(String mes,String password){
try {
//此類指定一個 DES 密鑰。
DESKeySpec desKeySpec = new DESKeySpec(password.getBytes());
//獲得祕鑰工廠
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
//生成祕鑰
SecretKey secretKey = secretKeyFactory.generateSecret(desKeySpec);
//操作,加密過程
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE,secretKey);
return cipher.doFinal(mes.getBytes());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* 解密操作
* @param b 用DES加密過後得到的字節數組
* @param pasword 通過當前字符串加密和解密 (如果給定的密鑰內容短於 8 個字節。會拋出InvalidKeyException異常)
* @return
*/
public static byte[] decryptStr(byte[] b ,String pasword){
try {
//此類指定一個 DES 密鑰。
DESKeySpec desKeySpec = new DESKeySpec(password.getBytes());
//獲得祕鑰工廠
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = secretKeyFactory.generateSecret(desKeySpec);
//操作,加密過程
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return cipher.doFinal(b);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}