Java加解密之DES
DES密钥字节长度为8为位,DES3字节长度为8*3 = 24位
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
public class DESUtil {
private static Logger logger = LoggerFactory.getLogger(DES3Util.class);
private final static String KEY = "";
private static final String KEY_ALGORITHM = "DES";
private static final String DEFAULT_CIPHER_ALGORITHM = "DES/CBC/PKCS5Padding";
/**
* 加密
* @param content 明文
* @param keyBytes 8位密钥
* @return
*/
public static byte[] encrypt(byte[] content, byte[] keyBytes) {
try {
DESKeySpec keySpec = new DESKeySpec(keyBytes);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(KEY_ALGORITHM);//指定使什么样的算法
SecretKey key = keyFactory.generateSecret(keySpec);
Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);//用什么样的转型方式
cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(keySpec.getKey()));
byte[] result = cipher.doFinal(content);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 解密
* @param content 密文
* @param keyBytes 8位密钥
* @return
*/
public static byte[] decrypt(byte[] content, byte[] keyBytes) {
try {
DESKeySpec keySpec = new DESKeySpec(keyBytes);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(KEY_ALGORITHM);//指定使什么样的算法
SecretKey key = keyFactory.generateSecret(keySpec);
Cipher cipher = Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);//用什么样的转型方式
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(keySpec.getKey()));
byte[] result = cipher.doFinal(content);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}