| /** | 
|  * Copyright (c) 2018 人人开源 All rights reserved. | 
|  * | 
|  * https://www.renren.io | 
|  * | 
|  * 版权所有,侵权必究! | 
|  */ | 
|   | 
| package com.zt.core.shiro; | 
|   | 
| import com.zt.common.exception.RenException; | 
|   | 
| import java.security.MessageDigest; | 
| import java.util.UUID; | 
|   | 
| /** | 
|  * 生成token | 
|  * | 
|  * @author Mark sunlightcs@gmail.com | 
|  */ | 
| public class TokenGenerator { | 
|   | 
|     public static String generateValue() { | 
|         return generateValue(UUID.randomUUID().toString()); | 
|     } | 
|   | 
|     private static final char[] HEX_CODE = "0123456789abcdef".toCharArray(); | 
|   | 
|     public static String toHexString(byte[] data) { | 
|         if(data == null) { | 
|             return null; | 
|         } | 
|         StringBuilder r = new StringBuilder(data.length*2); | 
|         for ( byte b : data) { | 
|             r.append(HEX_CODE[(b >> 4) & 0xF]); | 
|             r.append(HEX_CODE[(b & 0xF)]); | 
|         } | 
|         return r.toString(); | 
|     } | 
|   | 
|     public static String generateValue(String param) { | 
|         try { | 
|             MessageDigest algorithm = MessageDigest.getInstance("MD5"); | 
|             algorithm.reset(); | 
|             algorithm.update(param.getBytes()); | 
|             byte[] messageDigest = algorithm.digest(); | 
|             return toHexString(messageDigest); | 
|         } catch (Exception e) { | 
|             throw new RenException("token invalid", e); | 
|         } | 
|     } | 
| } |