|  |  | 
 |  |  | package com.doumee.core.utils; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.doumee.core.constants.ResponseStatus; | 
 |  |  | import com.doumee.core.exception.BusinessException; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.data.redis.core.RedisTemplate; | 
 |  |  |  | 
 |  |  | import javax.crypto.Cipher; | 
 |  |  | import javax.crypto.CipherInputStream; | 
 |  |  | import javax.crypto.CipherOutputStream; | 
 |  |  | 
 |  |  | import javax.crypto.spec.DESKeySpec; | 
 |  |  | import javax.crypto.spec.IvParameterSpec; | 
 |  |  | import java.io.*; | 
 |  |  | import java.net.URLDecoder; | 
 |  |  | import java.net.URLEncoder; | 
 |  |  | import java.security.Key; | 
 |  |  | import java.util.Base64; | 
 |  |  | import java.util.concurrent.TimeUnit; | 
 |  |  |  | 
 |  |  | public class DESUtil { | 
 |  |  |  | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return null; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 海康加密 | 
 |  |  |      * @param userName | 
 |  |  |      * @param hour | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public static  String generateTokenToHk(String userName,Integer hour, RedisTemplate<String,Object> redisTemplate) { | 
 |  |  |          long currentTimeMillis = System.currentTimeMillis() + 1000*60*60*hour; | 
 |  |  |          String encrypt = DESUtil.encrypt("12345678",currentTimeMillis + "_" + userName ); | 
 |  |  |          redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+encrypt, encrypt,1000*60*60*hour, TimeUnit.MILLISECONDS); | 
 |  |  |         try{ | 
 |  |  |             encrypt = URLEncoder.encode(encrypt,"UTF-8"); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"生成加密码失败!"); | 
 |  |  |         } | 
 |  |  |          return encrypt; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 海康解码 | 
 |  |  |      * @param token | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public static String verifyHkToken(String token){ | 
 |  |  |         String decrypt = DESUtil.decrypt("12345678",token); | 
 |  |  |         if(StringUtils.isBlank(decrypt)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token解析失败"); | 
 |  |  |         } | 
 |  |  |         try{ | 
 |  |  |             Integer index_ = decrypt.indexOf("_"); | 
 |  |  |             long currentTimeMillis = Long.valueOf(decrypt.substring(Constants.ZERO,index_)); | 
 |  |  |             if(currentTimeMillis<=System.currentTimeMillis()){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token已过期"); | 
 |  |  |             } | 
 |  |  |             String userName = decrypt.substring(index_+Constants.ONE); | 
 |  |  |             return userName ; | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"token解析失败"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |