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;
}
}