TokenEncryptUtils.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.caimei.utils;
  2. /**
  3. * token编码工具类
  4. *
  5. * @author ouyangjun
  6. */
  7. public class TokenEncryptUtils {
  8. // 编码密码,可自定义
  9. private static final String ENCODED_PASSWORD = "ouyangjun";
  10. /**
  11. * 编码
  12. *
  13. * @param str
  14. * @return
  15. */
  16. public static String encoded(String str) {
  17. return strToHex(encodedString(str, ENCODED_PASSWORD));
  18. }
  19. /**
  20. * 转换
  21. *
  22. * @param str
  23. * @param password
  24. * @return
  25. */
  26. private static String encodedString(String str, String password) {
  27. char[] pwd = password.toCharArray();
  28. int pwdLen = pwd.length;
  29. char[] strArray = str.toCharArray();
  30. for (int i = 0; i < strArray.length; i++) {
  31. strArray[i] = (char) (strArray[i] ^ pwd[i % pwdLen] ^ pwdLen);
  32. }
  33. return new String(strArray);
  34. }
  35. private static String strToHex(String s) {
  36. return bytesToHexStr(s.getBytes());
  37. }
  38. private static String bytesToHexStr(byte[] bytesArray) {
  39. StringBuilder builder = new StringBuilder();
  40. String hexStr;
  41. for (byte bt : bytesArray) {
  42. hexStr = Integer.toHexString(bt & 0xFF);
  43. if (hexStr.length() == 1) {
  44. builder.append("0");
  45. builder.append(hexStr);
  46. } else {
  47. builder.append(hexStr);
  48. }
  49. }
  50. return builder.toString();
  51. }
  52. /**
  53. * 解码
  54. *
  55. * @param str
  56. * @return
  57. */
  58. public static String decoded(String str) {
  59. String hexStr = null;
  60. try {
  61. hexStr = hexStrToStr(str);
  62. } catch (Exception e) {
  63. e.printStackTrace();
  64. }
  65. if (hexStr != null) {
  66. hexStr = encodedString(hexStr, ENCODED_PASSWORD);
  67. }
  68. return hexStr;
  69. }
  70. private static String hexStrToStr(String hexStr) {
  71. return new String(hexStrToBytes(hexStr));
  72. }
  73. private static byte[] hexStrToBytes(String hexStr) {
  74. String hex;
  75. int val;
  76. byte[] btHexStr = new byte[hexStr.length() / 2];
  77. for (int i = 0; i < btHexStr.length; i++) {
  78. hex = hexStr.substring(2 * i, 2 * i + 2);
  79. val = Integer.valueOf(hex, 16);
  80. btHexStr[i] = (byte) val;
  81. }
  82. return btHexStr;
  83. }
  84. }