12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package com.behosoft.util;
- import java.net.URLDecoder;
- import javax.crypto.Cipher;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.DESKeySpec;
- import javax.crypto.spec.IvParameterSpec;
- import com.behosoft.framework.web.exception.CommonException;
- public class DESEncrypt {
- public static String decrypt(String message) {
- try {
- byte bkey[] = new byte[8];
- bkey[0] = 56;
- bkey[1] = 48;
- bkey[2] = 52;
- bkey[3] = 66;
- bkey[4] = 68;
- bkey[5] = 57;
- bkey[6] = 68;
- bkey[7] = 52;
- byte bytesrc[] = convertHexString(message);
- Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
- DESKeySpec desKeySpec = new DESKeySpec(bkey);
- SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
- javax.crypto.SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
- IvParameterSpec iv = new IvParameterSpec(bkey);
- cipher.init(2, secretKey, iv);
- byte retByte[] = cipher.doFinal(bytesrc);
- String sde = new String(retByte);
- return URLDecoder.decode(sde, "gb2312");
- }
- catch (Exception e) {
- throw new CommonException(e.getMessage(), e);
- }
- }
- public static String encrypt(String message) {
- try {
- Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
- byte bkey[] = new byte[8];
- bkey[0] = 56;
- bkey[1] = 48;
- bkey[2] = 52;
- bkey[3] = 66;
- bkey[4] = 68;
- bkey[5] = 57;
- bkey[6] = 68;
- bkey[7] = 52;
- DESKeySpec desKeySpec = new DESKeySpec(bkey);
- SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
- javax.crypto.SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
- IvParameterSpec iv = new IvParameterSpec(bkey);
- cipher.init(1, secretKey, iv);
- byte ben[] = cipher.doFinal(message.getBytes("gb2312"));
- return toHexString(ben).toUpperCase();
- }
- catch (Exception e) {
- throw new CommonException(e.getMessage(), e);
- }
- }
- private static byte[] convertHexString(String ss) {
- byte digest[] = new byte[ss.length() / 2];
- for (int i = 0; i < digest.length; i++) {
- String byteString = ss.substring(2 * i, 2 * i + 2);
- int byteValue = Integer.parseInt(byteString, 16);
- digest[i] = (byte) byteValue;
- }
- return digest;
- }
- private static String toHexString(byte b[]) {
- StringBuffer hexString = new StringBuffer();
- for (int i = 0; i < b.length; i++) {
- String plainText = Integer.toHexString(0xff & b[i]);
- if (plainText.length() < 2)
- plainText = (new StringBuilder("0")).append(plainText).toString();
- hexString.append(plainText);
- }
- return hexString.toString();
- }
- public static void main(String... strings) throws Exception {
- // System.out.println("DESEncrypt.main(): " + encrypt("沪B35063").equals("A93D8E2F0BDB99DE8741267D1D31469E"));
- }
- }
|