DESEncrypt.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.behosoft.util;
  2. import java.net.URLDecoder;
  3. import javax.crypto.Cipher;
  4. import javax.crypto.SecretKeyFactory;
  5. import javax.crypto.spec.DESKeySpec;
  6. import javax.crypto.spec.IvParameterSpec;
  7. import com.behosoft.framework.web.exception.CommonException;
  8. public class DESEncrypt {
  9. public static String decrypt(String message) {
  10. try {
  11. byte bkey[] = new byte[8];
  12. bkey[0] = 56;
  13. bkey[1] = 48;
  14. bkey[2] = 52;
  15. bkey[3] = 66;
  16. bkey[4] = 68;
  17. bkey[5] = 57;
  18. bkey[6] = 68;
  19. bkey[7] = 52;
  20. byte bytesrc[] = convertHexString(message);
  21. Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
  22. DESKeySpec desKeySpec = new DESKeySpec(bkey);
  23. SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
  24. javax.crypto.SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
  25. IvParameterSpec iv = new IvParameterSpec(bkey);
  26. cipher.init(2, secretKey, iv);
  27. byte retByte[] = cipher.doFinal(bytesrc);
  28. String sde = new String(retByte);
  29. return URLDecoder.decode(sde, "gb2312");
  30. }
  31. catch (Exception e) {
  32. throw new CommonException(e.getMessage(), e);
  33. }
  34. }
  35. public static String encrypt(String message) {
  36. try {
  37. Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
  38. byte bkey[] = new byte[8];
  39. bkey[0] = 56;
  40. bkey[1] = 48;
  41. bkey[2] = 52;
  42. bkey[3] = 66;
  43. bkey[4] = 68;
  44. bkey[5] = 57;
  45. bkey[6] = 68;
  46. bkey[7] = 52;
  47. DESKeySpec desKeySpec = new DESKeySpec(bkey);
  48. SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
  49. javax.crypto.SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
  50. IvParameterSpec iv = new IvParameterSpec(bkey);
  51. cipher.init(1, secretKey, iv);
  52. byte ben[] = cipher.doFinal(message.getBytes("gb2312"));
  53. return toHexString(ben).toUpperCase();
  54. }
  55. catch (Exception e) {
  56. throw new CommonException(e.getMessage(), e);
  57. }
  58. }
  59. private static byte[] convertHexString(String ss) {
  60. byte digest[] = new byte[ss.length() / 2];
  61. for (int i = 0; i < digest.length; i++) {
  62. String byteString = ss.substring(2 * i, 2 * i + 2);
  63. int byteValue = Integer.parseInt(byteString, 16);
  64. digest[i] = (byte) byteValue;
  65. }
  66. return digest;
  67. }
  68. private static String toHexString(byte b[]) {
  69. StringBuffer hexString = new StringBuffer();
  70. for (int i = 0; i < b.length; i++) {
  71. String plainText = Integer.toHexString(0xff & b[i]);
  72. if (plainText.length() < 2)
  73. plainText = (new StringBuilder("0")).append(plainText).toString();
  74. hexString.append(plainText);
  75. }
  76. return hexString.toString();
  77. }
  78. public static void main(String... strings) throws Exception {
  79. // System.out.println("DESEncrypt.main(): " + encrypt("沪B35063").equals("A93D8E2F0BDB99DE8741267D1D31469E"));
  80. }
  81. }