zoukankan      html  css  js  c++  java
  • .netcore之jwt加密token理解和原理

    一,我们再使用jwt的时候,生成token到底是什么意思呢?如下生成解密后副本

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
    eyJ0ZXN0IjoidGVzdCIsInVpZCI6IjEiLCJuYmYiOjE2MDA2MTU1NjUsImV4cCI6MTYwMDYxNjQ2NSwiaWF0IjoxNjAwNjE1NTY1LCJpc3MiOiJ0ZXN0IiwiYXVkIjoiVGVzdEF1ZGllbmNlIn0.
    vVrBFj8AK9i_jytc5wEQbqr0ei7JBYDGu3zKuEZvzcI

    二,根据逗号,我们可以分割成三段,我们分别解释下生成原理吧,打开https://jwt.io/#debugger-io,官网,把我们的原文解密下,可得如下信息

    三,这个时候我们小伙伴是不是很疑惑,这样大家都可以解密了,信息不是不安全了么,慢慢解释下,这里其实解密出来的对于我们前两段信息,这些一般我们都是存一些不敏感的信息,如果有需求的小伙伴可以自己MD5加密一下,这里第一二段加密实际上是base64,所以大家都可以解密,那问题来了,我们是怎么校验是否授权的呢?我们看第三段

    vVrBFj8AK9i_jytc5wEQbqr0ei7JBYDGu3zKuEZvzcI

    在官网解密出来的是这样的,这个是其实是根据你自己再生成token的时候才能解密,这样我们所以大家是看不到解密后的,那我们是不觉得这个很像对称加密,是的,我们就是用HS256加密的,如果你没有解密密钥,你是解密不了的,这样我们是不是知道授权的逻辑了呢,只要你能解密出第三密文,就证明你token是有效的还有验证时间之类的等等

    四,这个时候我们又有疑问了,那第二段我们不是可以篡改,然后合并成token发过去么?那我们来解释下第三段的校验逻辑是,将第三段解密出来,然后和第一二端匹配,如果匹配是一模一样的表明没有被篡改 ,那我们有不理解了,第一二段那么长,第三段怎么那么段呢?其实,第三段解密出来的是第一二段MD5后的结果,如果能匹配上,就证明是没有篡改

  • 相关阅读:
    使用Ruby On Rails建立一个山寨小说站(一)
    sql server 数据库备份概述
    JVM崩溃的原因及解决!
    C++中的字节对齐
    jqueyr用jsonp跨越,有服务器端代码(.net(C#语言))
    lammps_data文件
    jquery日历插件_时间范围_双日历_多日历
    js 判断所选时间(或者当前时间)是否在某一时间段
    webstorm安装时遇到The JVM could not be started的解决方法
    Webstorm快捷键
  • 原文地址:https://www.cnblogs.com/May-day/p/13703082.html
Copyright © 2011-2022 走看看