JWT加密解密

血红的双手。 提交于 2019-12-05 14:41:53

首先需要添加引用

install-package JWT (3.0.1支持 .net framework 3.5,3.0.2需要.net 4.6.2)。

        public void AddSecret()
        {
            double exp = (DateTime.UtcNow.AddSeconds(10) - new DateTime(1970, 1, 1)).TotalSeconds;//10秒过期
            var payload = new Dictionary<string, object>
            {
                {"UserID",123},
                {"UserName","admin"},
                { "exp",exp}//过期时间的key必须叫exp
            };
            string secret = "123456789";//不能泄露的key
            IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
            IJsonSerializer serialer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder encoder = new JwtEncoder(algorithm, serialer, urlEncoder);
            string token = encoder.Encode(payload, secret);
            textBox1.Text = token;
        }

 

        public void SubSecret(string token)
        {
            //string token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJVc2VySUQiOjEyMywiVXNlck5hbWUiOiJhZG1pbiJ9.OR0lZOfbQr7D2wnY_m44tX9DOoNmDWV-6X53_ZZGJAs";
            var secret = "123456789"; //不能泄露的key
            try
            {
                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);
                var json = decoder.Decode(token, secret, verify: true);                
            }
            catch (TokenExpiredException)
            {
                MessageBox.Show("Token has expired");
            }
            catch (SignatureVerificationException)
            {
                MessageBox.Show("签名验证失败,数据可能被篡改");
            }
        }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!