日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为什么要在密码里加点“盐”

發布時間:2023/11/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么要在密码里加点“盐” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鹽(Salt)

在密碼學中,是指通過在密碼任意固定位置插入特定的字符串,讓散列后的結果和使用原始密碼的散列結果不相符,這種過程稱之為“加鹽”。

以上這句話是維基百科上對于 Salt 的定義,但是僅憑這句話還是很難理解什么叫 Salt,以及它究竟起到什么作用。

第一代密碼

早期的軟件系統或者互聯網應用,數據庫中設計用戶表的時候,大致是這樣的結構:

mysql> desc User; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | UserName | varchar(50) | NO | | | | | PassWord | varchar(150) | NO | | | | +----------+--------------+------+-----+---------+-------+

數據存儲形式如下:

mysql> select * from User; +----------+----------+ | UserName | PassWord | +----------+----------+ | lichao | 123 | | akasuna | 456 | +----------+----------+

主要的關鍵字段就是這么兩個,一個是登陸時的用戶名,對應的一個密碼,而且那個時候的用戶名是明文存儲的,如果你登陸時用戶名是 123,那么數據庫里存的就是 123。這種設計思路非常簡單,但是缺陷也非常明顯,數據庫一旦泄露,那么所有用戶名和密碼都會泄露,后果非常嚴重。參見 《CSDN 詳解 600 萬用戶密碼泄露始末》。

第二代密碼

為了規避第一代密碼設計的缺陷,聰明的人在數據庫中不在存儲明文密碼,轉而存儲加密后的密碼,典型的加密算法是 MD5 和 SHA1,其數據表大致是這樣設計的:

mysql> desc User; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | UserName | varchar(50) | NO | | | | | PwdHash | char(32) | NO | | | | +----------+--------------+------+-----+---------+-------+

數據存儲形式如下:

mysql> select * from User; +----------+----------------------------------+ | UserName | PwdHash | +----------+----------------------------------+ | lichao | 202cb962ac59075b964b07152d234b70 | | akasuna | 250cf8b51c773f3f8dc8b4be867a9a02 | +----------+----------------------------------+

假如你設置的密碼是 123,那么數據庫中存儲的就是 202cb962ac59075b964b07152d234b70 或 40bd001563085fc35165329ea1ff5c5ecbdbbeef。當用戶登陸的時候,會把用戶輸入的密碼執行 MD5(或者 SHA1)后再和數據庫就行對比,判斷用戶身份是否合法,這種加密算法稱為散列

嚴格地說,這種算法不能算是加密,因為理論上來說,它不能被解密。所以即使數據庫丟失了,但是由于數據庫里的密碼都是密文,根本無法判斷用戶的原始密碼,所以后果也不算太嚴重。

第三代密碼

本來第二代密碼設計方法已經很不錯了,只要你密碼設置得稍微復雜一點,就幾乎沒有被破解的可能性。但是如果你的密碼設置得不夠復雜,被破解出來的可能性還是比較大的。

好事者收集常用的密碼,然后對他們執行 MD5 或者 SHA1,然后做成一個數據量非常龐大的數據字典,然后對泄露的數據庫中的密碼就行對比,如果你的原始密碼很不幸的被包含在這個數據字典中,那么花不了多長時間就能把你的原始密碼匹配出來。這個數據字典很容易收集,CSDN 泄露的那 600w 個密碼,就是很好的原始素材。

于是,第三代密碼設計方法誕生,用戶表中多了一個字段:

mysql> desc User; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | UserName | varchar(50) | NO | | | | | Salt | char(50) | NO | | | | | PwdHash | char(32) | NO | | | | +----------+-------------+------+-----+---------+-------+

數據存儲形式如下:

mysql> select * from User; +----------+----------------------------+----------------------------------+ | UserName | Salt | PwdHash | +----------+----------------------------+----------------------------------+ | lichao | 1ck12b13k1jmjxrg1h0129h2lj | 6c22ef52be70e11b6f3bcf0f672c96ce | | akasuna | 1h029kh2lj11jmjxrg13k1c12b | 7128f587d88d6686974d6ef57c193628 | +----------+----------------------------+----------------------------------+

Salt 可以是任意字母、數字、或是字母或數字的組合,但必須是隨機產生的,每個用戶的 Salt 都不一樣,用戶注冊的時候,數據庫中存入的不是明文密碼,也不是簡單的對明文密碼進行散列,而是 MD5( 明文密碼 + Salt),也就是說:

MD5('123' + '1ck12b13k1jmjxrg1h0129h2lj') = '6c22ef52be70e11b6f3bcf0f672c96ce' MD5('456' + '1h029kh2lj11jmjxrg13k1c12b') = '7128f587d88d6686974d6ef57c193628'

當用戶登陸的時候,同樣用這種算法就行驗證。

由于加了 Salt,即便數據庫泄露了,但是由于密碼都是加了 Salt 之后的散列,壞人們的數據字典已經無法直接匹配,明文密碼被破解出來的概率也大大降低。

是不是加了 Salt 之后就絕對安全了呢?淡然沒有!壞人們還是可以他們數據字典中的密碼,加上我們泄露數據庫中的 Salt,然后散列,然后再匹配。但是由于我們的 Salt 是隨機產生的,假如我們的用戶數據表中有 30w 條數據,數據字典中有 600w 條數據,壞人們如果想要完全覆蓋的壞,他們加上 Salt 后再散列的數據字典數據量就應該是 300000* 6000000 = 1800000000000,一萬八千億啊,干壞事的成本太高了吧。但是如果只是想破解某個用戶的密碼的話,只需為這 600w 條數據加上 Salt,然后散列匹配。可見 Salt 雖然大大提高了安全系數,但也并非絕對安全。

實際項目中,Salt 不一定要加在最前面或最后面,也可以插在中間嘛,也可以分開插入,也可以倒序,程序設計時可以靈活調整,都可以使破解的難度指數級增長。

PS,文中所謂第一、二、三代密碼的稱呼,是我自己 YY 的。

總結

以上是生活随笔為你收集整理的为什么要在密码里加点“盐”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产精品久久精品怡红院 | 国产精品毛片va一区二区三区 | 妻色成人网 | 国产精品极品白嫩在线 | 亚洲在线观看免费 | 人人干人人爱 | 超碰人人在线 | 夜夜嗨av禁果av粉嫩avhd | 少妇一边呻吟一边说使劲视频 | 光棍影院av| 成人一区视频 | 四虎国产精品永久免费观看视频 | 亚洲911精品成人18网站 | 激情六月色 | www.中文字幕.com | 性午夜 | 东北熟女一区二区三区 | 最新中文字幕在线 | jizz在线观看视频 | 午夜av一区二区三区 | 国产一级爽片 | 91免费视频 | 先锋成人 | 国产经典一区二区三区 | 日韩成人av一区二区 | 色哟哟无码精品一区二区三区 | 亚洲一区二区三区高清视频 | 草比网站 | 国产做受麻豆动漫 | 日本成人免费在线视频 | 国产v亚洲v天堂无码久久久 | 国产精品美女久久久久av超清 | 奴性白洁会所调教 | 在线免费观看污网站 | 国产精品91av | 三级黄色片免费观看 | 韩国日本在线观看 | 国产成人在线一区 | 久久97久久97精品免视看 | 亚洲视频手机在线观看 | 国产一区二区三区播放 | 国产在线拍揄自揄拍 | 日韩无码精品一区二区 | 国产午夜激情 | 亚洲图片在线播放 | 美女天天干 | 日韩中文在线一区 | 善良的公与媳hd中文字 | 久久久69 | 91在线公开视频 | 性猛交富婆╳xxx乱大交麻豆 | 免费成人91 | 91九色丨porny丨国产jk | 国产亚洲欧美日韩精品 | 亚洲欧美制服丝袜 | 国产激情视频在线观看 | 日本女教师电影 | 午夜蜜桃视频 | 亚洲国产精品一区 | 伊人久久大香线蕉综合75 | 成人网免费看 | 韩国av在线播放 | 日韩精品成人在线 | 欧美在线播放一区二区 | 精品123区| av午夜天堂| 冲田杏梨一区二区三区 | 成人免费毛片日本片视频 | 天天插插插 | 欧美午夜精品久久久久免费视 | 国产精品亚洲一区二区三区 | 久久成人毛片 | 99情趣网| 成人午夜福利视频 | 日日cao | 国产人成视频在线观看 | 久久久久一级 | 国产午夜麻豆影院在线观看 | 先锋av在线资源 | 一区三区视频在线观看 | 亚洲男人第一天堂 | 欧美三级小说 | 高h奶汁双性受1v1 | 国产一级全黄 | 国产成人无码www免费视频播放 | 成人做爰66片免费看网站 | 日韩av免费在线观看 | 都市激情中文字幕 | 性视频黄色| 影音先锋中文字幕一区二区 | 国产亚洲久久 | 爱臀av| 国产a级黄色 | 麻豆91在线播放 | 欧洲av一区二区 | 国产麻豆天美果冻无码视频 | 色婷婷丁香 | 欧美成人午夜电影 | 欧美嫩草影院 |