You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							50 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							50 lines
						
					
					
						
							1.9 KiB
						
					
					
				| using JWT;
 | |
| using JWT.Algorithms;
 | |
| using JWT.Serializers;
 | |
| using System;
 | |
| using System.Text;
 | |
| 
 | |
| namespace FactorySystemCommon
 | |
| {
 | |
|     public class JWTHelper
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// 加密
 | |
|         /// </summary>
 | |
|         public static string Encryption(object content, string keyStr = "")
 | |
|         {
 | |
|             string result;
 | |
|             try
 | |
|             {
 | |
|                 keyStr = AppSettingsHelper.GetAppSettingVal("ApiAuthSecretKey") + keyStr.Replace("_", "").ToLower();
 | |
|                 byte[] key = Encoding.UTF8.GetBytes(keyStr);
 | |
|                 IJwtAlgorithm algorithm = new HMACSHA256Algorithm();//加密方式
 | |
|                 IJsonSerializer serializer = new JsonNetSerializer();//序列化Json
 | |
|                 IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();//base64加解密
 | |
|                 IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);//JWT编码
 | |
|                 result = encoder.Encode(content, key);//生成令牌
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 throw new Exception("Auth加密发生异常,异常信息:" + ex.Message.ToString());
 | |
|             }
 | |
|             return result;
 | |
|         }
 | |
|         /// <summary>
 | |
|         /// 解密
 | |
|         /// </summary>
 | |
|         public static T Decrypt<T>(string strKey, string keyStr = "")
 | |
|         {
 | |
|             keyStr = AppSettingsHelper.GetAppSettingVal("ApiAuthSecretKey") + keyStr.Replace("_", "").ToLower();
 | |
|             byte[] key = Encoding.UTF8.GetBytes(keyStr);
 | |
|             IJsonSerializer serializer = new JsonNetSerializer();
 | |
|             IDateTimeProvider provider = new UtcDateTimeProvider();
 | |
|             IJwtValidator validator = new JwtValidator(serializer, provider);
 | |
|             IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
 | |
|             IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder);
 | |
|             //解密
 | |
|             return decoder.DecodeToObject<T>(strKey, key, verify: true);
 | |
|         }
 | |
|     }
 | |
| }
 |