Oracle数据库中 DECRYPT_DES 加密解密对应JAVA类

  • Post author:
  • Post category:java


import javax.crypto.Cipher;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

import javax.crypto.spec.IvParameterSpec;

import javax.xml.bind.DatatypeConverter;

import org.apache.commons.codec.binary.Hex;

/**

* 对应数据库加解密函数

* @Copyright: (C),2019, info. Co., Ltd.

* @ClassName: EncryptUtil

* @Author: XXXXXX

* @Date: 2020年2月14日 上午11:34:57

*/

public class EncryptUtil {

private static String key = “tnb12345”;

public static void main(String[] args) {


System.out.println(DECRYPT_DES(“320102199003072477”));

System.out.println(ENCRYPT_DES(“37AD0FDC82E65E3745F3E9D608D244F3B8DA813A0434B06E”));

}

//对应数据库DECRYPT_DES函数

public static String DECRYPT_DES(String inStr) {


try {


DESKeySpec desKey = new DESKeySpec(key.getBytes());

SecretKey securekey = SecretKeyFactory.getInstance(“DES”).generateSecret(desKey);

Cipher cipher = Cipher.getInstance(“DES/CBC/NoPadding”);

cipher.init(Cipher.ENCRYPT_MODE, securekey, new IvParameterSpec(new byte[8]));

byte[] inBytes = new byte[((int) (inStr.length() / 8) + 1) * 8];

for (int i = 0; i < inStr.length(); i++) {


inBytes[i] = inStr.getBytes()[i];

}

byte[] enBytes = cipher.doFinal(inBytes);

String hexStr = DatatypeConverter.printHexBinary(enBytes);

return hexStr;

} catch (Exception e) {


e.printStackTrace();

}

return null;

}

//对应数据库ENCRYPT_DES函数

public static String ENCRYPT_DES(String encryptStr) {


try {


DESKeySpec desKey = new DESKeySpec(key.getBytes());

SecretKey securekey = SecretKeyFactory.getInstance(“DES”).generateSecret(desKey);

Cipher cipher = Cipher.getInstance(“DES/CBC/NoPadding”);

cipher.init(Cipher.DECRYPT_MODE, securekey, new IvParameterSpec(new byte[8]));

byte[] decryptBytes = cipher.doFinal(Hex.decodeHex(encryptStr.toCharArray()));

return new String(decryptBytes).trim();

} catch (Exception e) {


e.printStackTrace();

}

return null;

}



版权声明:本文为qq_30777059原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。