|  |  |  | 
|---|
|  |  |  | 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.UUID; | 
|---|
|  |  |  | 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 ); | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | //            encrypt =  Base64.getEncoder().encodeToString(encrypt.getBytes()); | 
|---|
|  |  |  | //            encrypt = URLEncoder.encode(encrypt,"UTF-8"); | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"生成加密码失败!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String token = UUID.randomUUID().toString(); | 
|---|
|  |  |  | redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+token, encrypt,1000*60*60*hour, TimeUnit.MILLISECONDS); | 
|---|
|  |  |  | return token; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 海康解码 | 
|---|
|  |  |  | * @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解析失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|