這里是修真院后端小課堂,每篇分享文從
【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】
八個方面深度解析后端知識/技能,本篇分享的是:
【什么叫明文,什么叫密文,為什么不允許在數據庫里明文保存密碼?】
大家好,我是IT修真院深圳分院第10期的JAVA學員,一枚正直純潔善良的java程序員。
今天給大家分享一下,修真院官網Java任務5,深度思考中的知識點—什么叫明文,什么叫密文,為什么不允許在數據庫里明文保存密碼?
1.背景介紹
1.1 什么叫密碼
密碼是一種用來混淆的技術,使用者希望將正常的(可識別的)信息轉變為無法識別的信息。但這種無法識別的信息部分是可以再加工並恢復和破解的。密碼在中文里是“口令”(password)的通稱。
2.知識剖析
2.1 什么是明文密碼?
“明文密碼”(Cleartext Password),即傳輸或保存為明文的密碼。具體是指保存密碼或網絡傳送密碼的時候,用的是沒有隱藏、直接顯示的明文字符,而不是經過加密后的密文。如密碼為123,那么密文密碼是***,明文密碼則是123。從信息安全的角度出發,任何網絡服務都不應該保存或發送明文密碼。
2.2 什么是密文密碼? ?
密文是加了密的的文字,明文是加密之前的文字。密文是對明文進行加密后的報文。
2.3 為什么不允許在數據庫里明文保存密碼?
用明文保存密碼有很大的信息安全隱患。
一般數據庫里還存有用戶的姓名、手機號、用戶名等信息,一旦數據庫發生泄漏,再加上用戶的明文密碼,攻擊者就可以用用戶名和密碼去其他網站嘗試登陸(因為往往用戶會將多個網站的密碼根據習慣設成一樣的),一旦登陸成功,就會造成很嚴重的后果。
2.4 一般使用的加密方式有哪些?:
2.4.1.MD5加密(1)
MD5的典型應用是對一段Message(字節串)產生fingerprint(指紋),以防止被“篡改”。舉個例子,你將一段話寫在一個叫 readme.txt文件中,
並對這個readme.txt產生一個MD5的值並記錄在案,然后你可以傳播這個文件給別人,別人如果修改了文件中的任何內容,你對這個文件重新
計算MD5時就會發現(兩個MD5值不相同)。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的“抵賴”,這就是所謂的數字簽名應用。
2.4.一般使用的加密方式有哪些?
2.4.1.MD5加密(2)
MD5算法具有以下特點:
1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
2、容易計算:從原數據計算出MD5值很容易。
3、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
4、強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
2.4.一般使用的加密方式有哪些?
2.4.2.DES加密
DES設計中使用了分組密碼設計的兩個原則:混淆(confusion)和擴散(diffusion),其目的是抗擊敵手對密碼系統的統計分析。混淆是使密文的
統計特性與密鑰的取值之間的關系盡可能復雜化,以使密鑰和明文以及密文之間的依賴性對密碼分析者來說是無法利用的。擴散的作用就是將
每一位明文的影響盡可能迅速地作用到較多的輸出密文位中,以便在大量的密文中消除明文的統計結構,並且使每一位密鑰的影響盡可能迅速
地擴展到較多的密文位中,以防對密鑰進行逐段破譯。
2.4.一般使用的加密方式有哪些?
2.4.3.RSA加密
它通常是先生成一對RSA 密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網絡服務器中注冊。為提高保密強度,
RSA密鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送信息時,常采用傳統加密方法與公開密鑰加密方法
相結合的方式,即信息采用改進的DES或IDEA密鑰加密,然后使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息后,用不同的密鑰解密並可核對信息
摘要。RSA算法是第一個能同時用於加密和數字簽名的算法,也易於理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現今的三十多年里,
經歷了各種攻擊的考驗,逐漸為人們接受,截止2017年被普遍認為是最優秀的公鑰方案之一。
2.4.一般使用的加密方式有哪些?
2.4.4.對稱加密算法
加密者和解密者使用相同的密碼,這種方式的優點是加解密效率高,缺點是安全系統偏低,因為中除需要傳遞密鑰,所以有被截獲的風險。
傳遞密鑰的過程常需要和對稱加密方式配合使用,如上所述。
常見的這種方式有 DES,AES.
優點:算法公開、計算量小、加密速度快、加密效率高、可逆
缺點:雙方使用相同鑰匙,安全性得不到保證
現狀:對稱加密的速度比公鑰加密快很多,在很多場合都需要對稱加密
2.4.一般使用的加密方式有哪些?
2.4.5.RSA加密(非對稱加密算法)(1)
非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)
非對稱加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。
公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,
那么只有用對應的公開密鑰才能解密
2.4.一般使用的加密方式有哪些?
2.4.5.RSA加密(非對稱加密算法)(2)
特點:
非對稱密碼體制的特點:算法強度復雜、安全性依賴於算法與密鑰但是由於其算法復雜,而使得加密解密速度沒有對稱加密解密的速度快
對稱密碼體制中只有一種密鑰,並且是非公開的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,
而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了
2.5.MD5加密的弊端?如何解決?
由之前MD5的實現方法可知,任何一個相同文件、字符串生成的MD5值都是一樣的。比如"123456"的MD5值任何時候生成的都是
"e10adc3949ba59abbe56e057f20f883e"並且,隨着現在計算機技術的不斷發展,可以通過MD5值去逆推到原來的明文密碼。因此
就需要在加密時在給它一個隨機生成的值,摻到原密碼中進行加密。這個值就叫鹽值。
3.常見問題
如何對密碼進行MD5加鹽加密
4.解決方案
見編碼實戰
5.編碼實戰
6.擴展思考
6.1 明文密碼泄露的危害?
可能會被不法分子通過撞庫的方式去其他網站獲取更多的個人信息。
2014年12月25日,12306網站用戶信息在互聯網上瘋傳。對此,12306官方網站稱,網上泄露的用戶信息系經其他網站或渠道流出。據悉,此次泄露的用戶數據不少於131,653條。該批數據基本確認為黑客通過“撞庫攻擊”所獲得。
6.2 如何避免出現這種情況?
一方面,網站運營者要保護好自己的數據庫,並且在保存用戶關鍵信息時要進行加密保存。
另一方面,我們在注冊不同網站時注意設置不同的密碼,盡量不要出現一個賬號密碼就能登錄所注冊的所有網站的情況。
6.3.密碼為什么不能用Hash存儲?
單向Hash算法(MD5, SHA1, SHA256等)可以保證管理員幾乎不能恢復原始密碼。但它有兩個特點:
1)從同一個密碼進行單向哈希,得到的總是唯一確定的摘要。
2)計算速度快。隨着技術進步,尤其是顯卡在高性能計算中的普及,一秒鍾能夠完成數十億次單向哈希計算。
7.參考文獻
CSDN
百度百科
8.更多討論
8.1 明文密碼泄露的危害?
可能會被不法分子通過撞庫的方式去其他網站獲取更多的個人信息。
2014年12月25日,12306網站用戶信息在互聯網上瘋傳。對此,12306官方網站稱,網上泄露的用戶信息系經其他網站或渠道流出。據悉,此次泄露的用戶數據不少於131,653條。該批數據基本確認為黑客通過“撞庫攻擊”所獲得。
8.2 如何避免出現這種情況?
一方面,網站運營者要保護好自己的數據庫,並且在保存用戶關鍵信息時要進行加密保存。
另一方面,我們在注冊不同網站時注意設置不同的密碼,盡量不要出現一個賬號密碼就能登錄所注冊的所有網站的情況。
8.3.密碼為什么不能用Hash存儲?
單向Hash算法(MD5, SHA1, SHA256等)可以保證管理員幾乎不能恢復原始密碼。但它有兩個特點:
1)從同一個密碼進行單向哈希,得到的總是唯一確定的摘要。
2)計算速度快。隨着技術進步,尤其是顯卡在高性能計算中的普及,一秒鍾能夠完成數十億次單向哈希計算。
今天的分享就到這里啦,歡迎大家提問和探討!
技能樹.IT修真院“我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節奏,學習的路上不再迷茫”。
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧~我的邀請碼:23656198,或者你可以直接點擊此鏈接:http://www.jnshu.com/login/1/23656198
更多內容,可以加入IT交流群565734203與大家一起討論交流
這里是技能樹·IT修真院:https://www.jnshu.com,初學者轉行到互聯網的聚集地