国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)存儲中的加鹽到底是什么?

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)存儲中的加鹽到底是什么?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

鹽(Salt)

在密碼學(xué)中,是指通過在密碼任意固定位置插入特定的字符串,讓散列后的結(jié)果和使用原始密碼的散列結(jié)果不相符,這種過程稱之為“加鹽”。(看不懂沒關(guān)系,接著往下看)

第一代密碼

早期的軟件系統(tǒng)或者互聯(lián)網(wǎng)應(yīng)用,數(shù)據(jù)庫中設(shè)計用戶表的時候,大致是這樣的結(jié)構(gòu):

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

數(shù)據(jù)存儲形式如下:

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

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

第二代密碼

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

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

數(shù)據(jù)存儲形式如下:

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

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

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

第三代密碼

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

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

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

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

數(shù)據(jù)存儲形式如下:

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

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

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

?文章來源地址http://www.zghlxwxcb.cn/news/detail-465663.html

“鹽值”是一組隨機的字符串,被稱為Salt,由系統(tǒng)隨機生成。Salt可以插在最前面、最后面,也可以插在中間,可分開插入也可倒序。

數(shù)據(jù)存儲中的加鹽到底是什么?

?

用戶注冊時:

  1. 用戶在網(wǎng)站注冊時提供ID與密碼;
  2. 系統(tǒng)為用戶分配鹽值;
  3. 鹽值插入密碼后進行HASH;
  4. 將ID,HASH值與鹽值一起存入數(shù)據(jù)庫。

數(shù)據(jù)存儲中的加鹽到底是什么?

身份驗證時:

  1. 用戶提供ID與密碼;
  2. 系統(tǒng)在數(shù)據(jù)庫中通過用戶提供的ID查找HASH值與鹽值;
  3. 將鹽值插入用戶提供的密碼后進行HASH;
  4. 將HASH值與數(shù)據(jù)庫中的HASH值比較,相等則驗證成功,反之則驗證失敗。

?

到了這里,關(guān)于數(shù)據(jù)存儲中的加鹽到底是什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 深入了解PBKDF2:密碼學(xué)中的關(guān)鍵推導(dǎo)函數(shù)

    深入了解PBKDF2:密碼學(xué)中的關(guān)鍵推導(dǎo)函數(shù)

    title: 深入了解PBKDF2:密碼學(xué)中的關(guān)鍵推導(dǎo)函數(shù) date: 2024/4/20 20:37:35 updated: 2024/4/20 20:37:35 tags: 密碼學(xué) 對稱加密 哈希函數(shù) KDF PBKDF2 安全 密鑰派生 對稱加密和哈希函數(shù) 對稱加密 :對稱加密是一種加密技術(shù),使用相同的密鑰進行加密和解密。常見的對稱加密算法有AES、DES等。發(fā)送

    2024年04月22日
    瀏覽(23)
  • 怎么防止數(shù)據(jù)重放攻擊——CBC模式【密碼學(xué)】(7)

    怎么防止數(shù)據(jù)重放攻擊——CBC模式【密碼學(xué)】(7)

    目錄 一、什么是CBC模式? 二、初始化向量 三、異或運算? 四、密鑰少一位會有影響嗎? CBC模式中,明文分組在加密前,要與前一組的密文分組進行異或運算,異或運算的結(jié)果參與加密函數(shù)的運算。 每一個密文分組,都依賴于前面所有的明文分組,包括初始化向量。 ? ? 加密

    2024年02月09日
    瀏覽(19)
  • [Android Studio]Android 數(shù)據(jù)存儲-文件存儲學(xué)習(xí)筆記-結(jié)合保存QQ賬戶與密碼存儲到指定文件中的演練

    [Android Studio]Android 數(shù)據(jù)存儲-文件存儲學(xué)習(xí)筆記-結(jié)合保存QQ賬戶與密碼存儲到指定文件中的演練

    ??????????? Android Debug ?????????? Topic ? 發(fā)布安卓學(xué)習(xí)過程中遇到問題解決過程,希望我的解決方案可以對小伙伴們有幫助。 ??文件存儲 ??內(nèi)部存儲 ??存儲數(shù)據(jù)到文件 ??從文件中讀取數(shù)據(jù) ??實戰(zhàn)演練--保存QQ賬號與密碼 ??acticity_main.xml布局文件? ???FileSave

    2023年04月14日
    瀏覽(21)
  • 矩陣分解是計算機科學(xué)中的一個重要研究領(lǐng)域,涉及到向量空間理論、線性代數(shù)、密碼學(xué)等領(lǐng)域。以下是100篇熱門博客文

    作者:禪與計算機程序設(shè)計藝術(shù) 矩陣分解是計算機科學(xué)中的一個重要研究領(lǐng)域,涉及到向量空間理論、線性代數(shù)、密碼學(xué)等領(lǐng)域。在機器學(xué)習(xí)和深度學(xué)習(xí)等領(lǐng)域中,矩陣分解被廣泛應(yīng)用。本文將介紹矩陣分解的相關(guān)原理、實現(xiàn)步驟以及應(yīng)用示例。 2.1 基本概念解釋 矩陣分解是

    2024年02月15日
    瀏覽(49)
  • 密碼加鹽原理及其實現(xiàn)

    密碼加鹽原理及其實現(xiàn)

    目錄 1. 背景介紹 2. MD5加密算法 2.1 MD5算法的介紹 2.2 MD5算法的缺點 ?3. 加鹽算法 3.1 什么是加鹽算法 3.2 加鹽算法的演示 4. 總結(jié) 加密密碼是現(xiàn)代計算機系統(tǒng)中非常重要的一環(huán),其 主要目的是保護用戶的隱私和數(shù)據(jù)安全 。在不加密密碼的情況下, 用戶的賬戶和密碼等信息會以

    2024年02月14日
    瀏覽(17)
  • 密碼加密——加鹽算法(兩種方式)

    密碼加密——加鹽算法(兩種方式)

    密碼安全是一件很重要的事情,所以一定要謹慎對待 常見的主要是3種方式 明文 MD5加密 加鹽算法 首先明文肯定是不可取的,在數(shù)據(jù)庫中明文存儲密碼風(fēng)險實在是太大了 簡單來說,使用MD5就是將一串字符串通過某特定的算法來將其變成另一種形式,這樣子就在外觀上起到了加

    2023年04月12日
    瀏覽(19)
  • 聊一聊 C# 的線程本地存儲TLS到底是什么

    聊一聊 C# 的線程本地存儲TLS到底是什么

    有朋友在后臺留言讓我說一下C#的 ThreadStatic 線程本地存儲是怎么玩的?這么說吧,C#的ThreadStatic是假的,因為C#完全是由CLR(C++)承載的,言外之意C#的線程本地存儲,用的就是用C++運行時提供的 __declspec(thread) 或 __thread 來虛構(gòu)的一套玩法,這一篇我們就來簡單聊一聊。 在

    2024年02月03日
    瀏覽(20)
  • Spring Security BCryptPasswordEncoder 密碼加鹽

    測試類 上面的運行結(jié)果 可以發(fā)現(xiàn)對密碼加密, 每次都是不一樣的密文, 但是任意的一個結(jié)果密文和原文match , 得到的都是true, 這到底是是怎么回事尼? 先說結(jié)論 BCryptPasswordEncoder的 encode 方法對 原文加密, 是會產(chǎn)生隨機數(shù)的 鹽 salt, 所以每次加密得到的密文都是不同的

    2024年02月11日
    瀏覽(20)
  • 聯(lián)邦學(xué)習(xí):密碼學(xué) + 機器學(xué)習(xí) + 分布式 實現(xiàn)隱私計算,破解醫(yī)學(xué)界數(shù)據(jù)孤島的長期難題

    聯(lián)邦學(xué)習(xí):密碼學(xué) + 機器學(xué)習(xí) + 分布式 實現(xiàn)隱私計算,破解醫(yī)學(xué)界數(shù)據(jù)孤島的長期難題

    ? 這聯(lián)邦學(xué)習(xí)呢,就是讓不同的地方一起弄一個學(xué)習(xí)的模型,但重要的是,大家的數(shù)據(jù)都是自己家的,不用給別人。 這樣一來,人家的秘密就不會到處亂跑(數(shù)據(jù)不出本地),又能合力干大事。 ? <沒有聯(lián)邦學(xué)習(xí)的情況> 在沒有聯(lián)邦學(xué)習(xí)的情況下,醫(yī)院面臨的一個主要問題

    2024年01月23日
    瀏覽(17)
  • 密碼如何“加鹽加密”處理?程序員一定要掌握的知識

    密碼如何“加鹽加密”處理?程序員一定要掌握的知識

    目錄 前言 一、手寫加鹽算法 1.1、加密 1.1.1、加密思路 1.1.2、加密簡圖 1.1.3、代碼實現(xiàn) 1.2、解密 1.2.1、解密思路 1.2.2、解密代碼 1.3、驗證 二、使用?Spring Security 框架實現(xiàn)加鹽算法 為什么要使用加鹽的方式對密碼進行加密?我們知道傳統(tǒng)的 md5 加密方式是可以通過 “彩虹表”

    2024年02月16日
    瀏覽(87)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包