对于AES和RSA算法的结合使用以及MD5加盐注册登录时的密码加密
RSA和AES結合使用
接上篇的RSA和AES算法加密之后,AES對稱算法對數據量大的加密比較快,而RSA公私鑰加密的話會影響加密效率,但是AES的加密與解密的密鑰是一致的,導致密鑰不能外泄,密鑰在網絡傳輸過程中,很有可能會導致密鑰外泄。
 由此可以將RSA和AES兩種結合起來,讓RSA來加密AES密鑰,AES加密內容,這樣效率和安全性都能得到保障。
以下是一個流程圖和流程說明。
 
 1.服務端產生RSA密鑰對,把公鑰發給客戶端
 2.客戶端的明文文用AES密鑰加密生成密文,然后通過RSA公鑰加密AES密鑰,就生成了key和info
 3.把這兩個發送給服務端,用RSA私鑰解密得到AES密鑰
 4.再用AES密鑰去解密密文,得到明文
注冊登錄時的密碼加密
MD5加鹽
這是一篇比較詳細的關于MD5的原文鏈接:https://blog.csdn.net/china_jeffery/article/details/78789108
MD5是MD5消息摘要算法的簡稱(英語:MD5 Message-Digest Algorithm),是一種廣泛使用的密碼散列函數,可以產生出一個128位(16字節)的散列值(即哈希值),用于確保信息傳輸的完整性。MD5由羅納德·李維斯特設計,于1992年公開,用以取代MD4算法。這套算法的程序在RFC 1321 中被加以規范。
 將數據(如一段文字)運算變為另一固定長度值,是散列算法的基礎原理。
 MD5已經被證實可以被碰撞破解。對于需要高度安全性的數據,專家一般建議改用其他算法,如SHA-2。
只要明文相同,那么MD5加密后的密文就相同,于是攻擊者就可以通過撞庫的方式來破解出明文。 https://www.cmd5.com/ 這是一個破解MD5的網站,是收集了大量的MD5密文和明文的一個庫,所以現在的MD5并不安全。
這是我構想的一個密碼傳輸的流程:(如果有哪里不對或者有更好的歡迎交流)
 
這時候就需要加點佐料,讓它變變味兒啦。
加鹽的算法有很多,考慮到加鹽的目的(防止擁有系統底層權限的人員),想做到絕對不可反查是很困難的,需要有其他軟件或者硬件的協助,在很多場景下的實用性比較差。如果只是想增加反查的難度,倒是有很多方法可以選擇,一種便利的方法是md5(Password+UserName),即將用戶名和密碼字符串相加再MD5,這樣的MD5摘要基本上不可反查。但有時候用戶名可能會發生變化,發生變化后密碼即不可用了(驗證密碼實際上就是再次計算摘要的過程)。
所以要MD5加鹽了,“鹽”指的是計算機動態生成的隨機碼,這個隨機碼會與密碼一起被MD5進行散列計算,再與生成序列一同存進數據庫。再次進行登錄驗證密碼時,由于經過散列計算處理的數據不可逆向恢復,所以需通過對輸入密碼結合隨機碼進行散列計算,將得到的值再去數據庫進行匹配
MD5是不可逆的,所以就算是管理員打開數據庫中的數據時也是經過加密的,這樣更保障了數據的安全性,在我們日常中需要忘記密碼了,也是只能改密碼并不能獲取到原來的密碼。
因此我們做了一個非常簡單的算法,每次保存密碼到數據庫時,都生成一個隨機16位數字,將這16位數字和密碼相加再求MD5摘要,然后在摘要中再將這16位數字按規則摻入形成一個48位的字符串。在驗證密碼時再從48位字符串中按規則提取16位數字,和用戶輸入的密碼相加再MD5。按照這種方法形成的結果肯定是不可直接反查的,且同一個密碼每次保存時形成的摘要也都是不同的。
或者 可以往密碼中加鹽的時候,固定加的位置,比如說從第三位到第六位是鹽等等,使得其他人獲取不到真正的密碼。
總結
以上是生活随笔為你收集整理的对于AES和RSA算法的结合使用以及MD5加盐注册登录时的密码加密的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: php原生态三级联动_ajax php实
- 下一篇: linux putty 字体,putty
