.netcore之jwt加密token理解和原理


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

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ0ZXN0IjoidGVzdCIsInVpZCI6IjEiLCJuYmYiOjE2MDA2MTU1NjUsImV4cCI6MTYwMDYxNjQ2NSwiaWF0IjoxNjAwNjE1NTY1LCJpc3MiOiJ0ZXN0IiwiYXVkIjoiVGVzdEF1ZGllbmNlIn0.
vVrBFj8AK9i_jytc5wEQbqr0ei7JBYDGu3zKuEZvzcI

二,根據逗號,我們可以分割成三段,我們分別解釋下生成原理吧,打開https://jwt.io/#debugger-io,官網,把我們的原文解密下,可得如下信息

 

 

三,這個時候我們小伙伴是不是很疑惑,這樣大家都可以解密了,信息不是不安全了么,慢慢解釋下,這里其實解密出來的對於我們前兩段信息,這些一般我們都是存一些不敏感的信息,如果有需求的小伙伴可以自己MD5加密一下,這里第一二段加密實際上是base64,所以大家都可以解密,那問題來了,我們是怎么校驗是否授權的呢?我們看第三段

vVrBFj8AK9i_jytc5wEQbqr0ei7JBYDGu3zKuEZvzcI

在官網解密出來的是這樣的,這個是其實是根據你自己再生成token的時候才能解密,這樣我們所以大家是看不到解密后的,那我們是不覺得這個很像對稱加密,是的,我們就是用HS256加密的,如果你沒有解密密鑰,你是解密不了的,這樣我們是不是知道授權的邏輯了呢,只要你能解密出第三密文,就證明你token是有效的還有驗證時間之類的等等

四,這個時候我們又有疑問了,那第二段我們不是可以篡改,然后合並成token發過去么?那我們來解釋下第三段的校驗邏輯是,將第三段解密出來,然后和第一二端匹配,如果匹配是一模一樣的表明沒有被篡改 ,那我們有不理解了,第一二段那么長,第三段怎么那么段呢?其實,第三段解密出來的是第一二段MD5后的結果,如果能匹配上,就證明是沒有篡改

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM