bcb070936805adf396bb40c91523ae23c66c1990.svn-base 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.iamberry.app.api.util;
  2. import java.security.SecureRandom;
  3. import java.util.UUID;
  4. /**
  5. * @website www.ratfw.com
  6. * @author 献
  7. * @tel 18271840547
  8. * @date 2016年8月30日
  9. * @explain 生成安全随机的token工具类
  10. */
  11. public class TokenUtil {
  12. /**
  13. * 创建一个安全的随机数组byte[]
  14. *
  15. * @return
  16. */
  17. private static byte[] createRandomByte() {
  18. try {
  19. SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
  20. byte[] bytes = new byte[1024 / 8];
  21. random.nextBytes(bytes);
  22. int count = 10;
  23. byte[] seed = random.generateSeed(count);
  24. random = SecureRandom.getInstance("SHA1PRNG");
  25. random.setSeed(seed);
  26. SecureRandom random2 = SecureRandom.getInstance("SHA1PRNG");
  27. random2.setSeed(seed);
  28. return seed;
  29. } catch (Exception e) {
  30. return UUID.randomUUID().toString().getBytes();
  31. }
  32. }
  33. /**
  34. * byte[] 转 字符串
  35. *
  36. * @param b
  37. * @return
  38. */
  39. private static String byte2hex(byte[] b) {
  40. String hs = "";
  41. String stmp = "";
  42. for (int n = 0; n < b.length; n++) {
  43. stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
  44. if (stmp.length() == 1)
  45. hs = hs + "0" + stmp;
  46. else
  47. hs = hs + stmp;
  48. }
  49. return hs.toUpperCase();
  50. }
  51. /**
  52. * 获取一个安全的token
  53. *
  54. * @return
  55. */
  56. public static String getToken() {
  57. return byte2hex(createRandomByte());
  58. }
  59. }