亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

給你的密碼加鹽

Y3G / 2058人閱讀

摘要:第三階段這種方式是在實(shí)習(xí)中學(xué)習(xí)到的,也就是對(duì)密碼來進(jìn)行加鹽。什么是加鹽在密碼學(xué)中,是指通過在密碼任意固定位置插入特定的字符串,讓散列后的結(jié)果和使用原始密碼的散列結(jié)果不相符,這種過程稱之為加鹽。

寫在前面

本文描述了本人,對(duì)于數(shù)據(jù)庫中如何保存密碼的認(rèn)識(shí)過程。從最簡(jiǎn)單的明文保存到密碼加鹽保存,下面與大家分享下:

第一階段

最開始接觸web開發(fā)時(shí),對(duì)于用戶表的密碼基本是明文保存,如:

username | password
---------|----------
zp1996   |123456
zpy      |123456789

這種方式可以說很不安全,一旦數(shù)據(jù)庫泄漏,那么所以得用戶信息就會(huì)被泄漏。之前,國(guó)內(nèi)普遍采用這種方式,造成了很多的事故,如csdn600萬用戶信息泄漏、12306用戶信息泄漏等。

第二階段

本人大學(xué)做過的所有的項(xiàng)目基本采用的都是這種方式來保存用戶密碼,就是對(duì)密碼進(jìn)行md5加密,在phpmd5即可,在node中利用crypto模塊就好:

const encrypt = (text) => {
    return crypto.createHash("md5").update(String(text)).digest("hex");
};

作為初學(xué)者的我,認(rèn)為這種方式是很安全的,因?yàn)?b>md5不可逆(指攻擊者不能從哈希值h(x)中逆推出x)而且碰撞幾率低(指攻擊值不能找到兩個(gè)值x、x"具有相同的哈希值);然而這種方式也是不安全的,只要枚舉出所有的常用密碼,做成一個(gè)索引表,就可以推出來原始密碼,這張索引表也被叫做“彩虹表”(之前csdn600萬用戶明文密碼就是一個(gè)很好的素材)。

第三階段

這種方式是在實(shí)習(xí)中學(xué)習(xí)到的,也就是對(duì)密碼來進(jìn)行加鹽。

什么是加鹽?

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

加鹽很好理解,就是給原始密碼加上特定的字符串,這樣給攻擊者增加攻擊的成本,加鹽的關(guān)鍵在于如何選擇鹽:

固定字符串

采用固定的字符串作為鹽,如下面這樣:

const encrypt = (text) => {
    text = text + "zp";
    return crypto.createHash("md5").update(text).digest("hex");
};

這種加鹽方式與多進(jìn)行幾次md5一樣的,沒有任何意義,攻擊者都可以拿到數(shù)據(jù)庫,難道拿不到源代碼嗎,根據(jù)源代碼攻擊者很輕松的就可以構(gòu)造新的彩虹表出來逆推密碼。

隨機(jī)字符串

鹽一般要求是固定長(zhǎng)度的隨機(jī)字符串,且每個(gè)用戶的鹽不同,比如10位,數(shù)據(jù)庫可以這樣存儲(chǔ):

username | password                         |salt  
---------|---------—------------------------|----------
zp1996   |2636fd8789595482abf3423833901f6e  |63UrCwJhTH   
zpy      |659ec972c3ed72d04fac7a2147b5827b  |84GljVnhDT

采用的加密方式為:

md5(md5(password) + salt)

將其轉(zhuǎn)化為node代碼:

/*
 * 10位鹽
 * 時(shí)間戳(2)+隨機(jī)字母(8)
 */
const salt = () => {
    var time = Date.now() % 100,
        str = "";
    time = time === 0 ? "00" : String(time);
    for (let i = 0; i < 8; i++) {
        const base = Math.random() < 0.5 ? 65 : 97;
        str += String.fromCharCode(
            base + 
            Math.floor(
                Math.random() * 26 
            )
        );
    }
    return time + str;
};
const md5 = (text) => {
    return crypto.createHash("md5").update(String(text)).digest("hex");
};
const encrypt = (password) => {
    return md5(md5(password) + salt());
};
寫在最后

以隨機(jī)字符串作為鹽對(duì)密碼進(jìn)行加鹽僅僅是增加破解密碼的難度,假如目前有30w的用戶數(shù)據(jù),那么就會(huì)有30w個(gè)鹽,利用600w的索引表去比對(duì)的話,需要?jiǎng)?chuàng)造出30w*600w的數(shù)據(jù)來一一比對(duì),這樣會(huì)增加攻擊者的成本。以上內(nèi)容,如有錯(cuò)誤,歡迎大家指出。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/88113.html

相關(guān)文章

  • [轉(zhuǎn)]MD5(1)-安全性與原理

    摘要:沒錯(cuò),年的破解就是證明了在碰撞上面不可靠,也就是可以通過某種方式快速的找到具有相同散列值的另一個(gè)信息。好,第二個(gè)不安全的誤區(qū)來了上述破解過程對(duì)于絕大多數(shù)散列函數(shù)來說,基本上都是一個(gè)道理。 轉(zhuǎn)載請(qǐng)注明出處 http://www.paraller.com 原文排版地址 點(diǎn)擊獲取更好閱讀體驗(yàn) 轉(zhuǎn)載: http://blog.sina.com.cn/s/blog_77e8d1350100w...

    ideaa 評(píng)論0 收藏0
  • 漫話密碼存儲(chǔ)

    摘要:通俗一點(diǎn)說就是彩虹表犧牲了一點(diǎn)計(jì)算速度,換來的好處是較少的空間存儲(chǔ)更多的密碼數(shù)據(jù)。關(guān)于鹽的使用有一點(diǎn)需要說明加鹽的目的是為了增加提前構(gòu)造字典和彩虹表的代價(jià),并不是為了加密或增加密碼的計(jì)算復(fù)雜性。 背景 密碼是用來進(jìn)行鑒權(quán)(身份認(rèn)證)一種手段,說白了就是證明你是誰。一般鑒權(quán)都可以總結(jié)為下面3種形式: 你知道什么? (如密碼,密碼提示問題等) 你有什么? (如信用卡,token卡等) 你...

    Godtoy 評(píng)論0 收藏0
  • nodejs-md5加鹽到解密比對(duì)

    摘要:加密工具模塊提供了加密功能,包括對(duì)的哈希加密解密簽名以及驗(yàn)證功能的一整套封裝。當(dāng)然也是優(yōu)缺點(diǎn)的加密相同的字符是結(jié)果都是相同的碼,會(huì)出現(xiàn)撞庫的風(fēng)險(xiǎn)。 nodejs-crypto 加密工具 crypto 模塊提供了加密功能,包括對(duì) OpenSSL 的哈希、MD5、HMAC、加密、解密、簽名、以及驗(yàn)證功能的一整套封裝。 crypto 常用的MD5 MD5 是一種不可逆的加密算法,目前是最牢靠...

    MasonEast 評(píng)論0 收藏0
  • Python中MD5加密

    摘要:的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被壓縮成一種保密的格式就是把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的十六進(jìn)制數(shù)字串。獲取由位隨機(jī)大小寫字母數(shù)字組成的值每次從中隨機(jī)取一位獲取原始密碼的值原始密碼隨機(jī)生成位加密后的密碼 MD5是什么 下面的概念是百度百科的: Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列...

    chadLi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<