57 lines
1.7 KiB
C#
57 lines
1.7 KiB
C#
using System;
|
|
using System.Text;
|
|
|
|
namespace ZhiZhun.AuthenticationCenter.Utility
|
|
{
|
|
public class JWTTokenDeserialize
|
|
{
|
|
public static string AnalysisToken(string token)
|
|
{
|
|
string info = token.Split('.')[1];
|
|
string escapeInfo = Escape(info);
|
|
string sInfo = FromBase64(escapeInfo);
|
|
Newtonsoft.Json.JsonConvert.DeserializeObject(sInfo);
|
|
return sInfo;
|
|
}
|
|
|
|
public static string ToBase64(string content)
|
|
{
|
|
byte[] byteContent = System.Text.Encoding.Default.GetBytes(content);
|
|
return Convert.ToBase64String(byteContent);
|
|
}
|
|
|
|
public static string FromBase64(string result)
|
|
{
|
|
byte[] byteResult = Convert.FromBase64String(result);
|
|
return System.Text.Encoding.Default.GetString(byteResult);
|
|
}
|
|
|
|
public static string Escape(string str)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
foreach (char c in str)
|
|
{
|
|
sb.Append((Char.IsLetterOrDigit(c)
|
|
|| c == '-' || c == '_' || c == '\\'
|
|
|| c == '/' || c == '.') ? c.ToString() : Uri.HexEscape(c));
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
|
|
public static string UnEscape(string str)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
int len = str.Length;
|
|
int i = 0;
|
|
while (i != len)
|
|
{
|
|
if (Uri.IsHexEncoding(str, i))
|
|
sb.Append(Uri.HexUnescape(str, ref i));
|
|
else
|
|
sb.Append(str[i++]);
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|