DES java源代码如下:
- import java.security.InvalidKeyException;
- import java.security.NoSuchAlgorithmException;
- import java.security.SecureRandom;
- import java.security.spec.InvalidKeySpecException;
- import javax.crypto.BadPaddingException;
- import javax.crypto.Cipher;
- import javax.crypto.IllegalBlockSizeException;
- import javax.crypto.KeyGenerator;
- import javax.crypto.NoSuchPaddingException;
- import javax.crypto.SecretKey;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.DESKeySpec;
- public class DESEncryptTest {
- private static final String DES_ALGORITHM = "DES";
- /**
- * DES加密
- * @param plainData
- * @param secretKey
- * @return
- * @throws Exception
- */
- public String encryption(String plainData, String secretKey) throws Exception{
- Cipher cipher = null;
- try {
- cipher = Cipher.getInstance(DES_ALGORITHM);
- cipher.init(Cipher.ENCRYPT_MODE, generateKey(secretKey));
- } catch (NoSuchAlgorithmException e) {
- e.printStackTrace();
- } catch (NoSuchPaddingException e) {
- e.printStackTrace();
- }catch(InvalidKeyException e){
- }
- try {
- // 为了防止解密时报javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher异常,
- // 不能把加密后的字节数组直接转换成字符串
- byte[] buf = cipher.doFinal(plainData.getBytes());
- return Base64Utils.encode(buf);
- } catch (IllegalBlockSizeException e) {
- e.printStackTrace();
- throw new Exception("IllegalBlockSizeException", e);
- } catch (BadPaddingException e) {
- e.printStackTrace();
- throw new Exception("BadPaddingException", e);
- }
- }
- /**
- * DES解密
- * @param secretData
- * @param secretKey
- * @return
- * @throws Exception
- */
- public String decryption(String secretData, String secretKey) throws Exception{
- Cipher cipher = null;
- try {
- cipher = Cipher.getInstance(DES_ALGORITHM);
- cipher.init(Cipher.DECRYPT_MODE, generateKey(secretKey));