項目中密文傳輸技巧

項目開發(fā)過程中我們一定要考慮的問題,就是用戶敏感數(shù)據(jù)的安全性,本文主要針對http通信進(jìn)行分析,以下是個人總結(jié)的一些方案(用于服務(wù)器與客戶端之間的一些密文傳輸),至于HTTPS可以做加密處理也可不做,因為HTTPS相對安全很多。

  • 加密主要分為對稱加密,非對稱加密,hash加密
  • 1.對稱加密:它的特點是文件加密和解密使用相同的密鑰加密。常見算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES 。
    優(yōu)點:對稱加密算法使用起來簡單快捷,密鑰較短,且破譯困難。
    缺點:一旦秘鑰泄露或無意間更改,則會出現(xiàn)很多問題。

  • 2.非對稱加密:與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。常用算法:RSA、ECC(移動設(shè)備用)、Diffie-Hellman、El Gamal、DSA(數(shù)字簽名用)。
    優(yōu)點:公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進(jìn)行加密,只有用對應(yīng)的私有密鑰才能解密;如果用私有密鑰對數(shù)據(jù)進(jìn)行加密,那么只有用對應(yīng)的公開密鑰才能解密。
    缺點:使用起來相對復(fù)雜。

  • 3.Hash加密:典型代表(MD5),因為它是不可逆的32位加密方式。但是有一個網(wǎng)站可以直接查詢MD5字符串(http://www.cmd5.com),然后得到明文,所以純粹的一次MD5也是不可靠的,那么問題來了,怎樣處理才能讓別人沒辦法破解你的密文呢?

https://pan.baidu.com/s/1oZP7BIdXlkmFw25rJQxPFw 密碼:sstt ,這個是幾種加密算法的代碼,在本文中咱們主要講解MD5的一些使用,只講思想,若要看代碼請到上面鏈接下載。

下面咱們來模擬登陸操作

  • 1、對密碼進(jìn)行多次MD5——雖然這種方式避免了別人破解你的密碼,但是人家可以通過抓包,抓到你的密文,然后再抓到你的請求地址,模擬你的登陸操作,這樣你的賬號就成功的被黑客登陸了。
  • 2、對密碼進(jìn)行一次MD5,然后再進(jìn)行加鹽操作(即在密文后加一個隨意字符串,這個字符串只有你和后臺知道)——缺點和上面一點一樣。
  • 3、對密碼進(jìn)行一次加密,然后加一個時間字符串(具體到分:2017-1108-08:38,格式可以自己定),然后再對整體字符串進(jìn)行兩次Md5加密(這一步是為了讓黑客看不到明文的時間字符串,他就推不出我們的加密方式);有人會問了,這樣黑客也可以抓包,然后模擬登陸操作啊,可是,我們得密文是不是每分鐘都在變呢,這樣,黑客拿到密文也只有一分鐘時間,在一分鐘時間內(nèi),他還要破解我們的請求地址等一系列操作,一般的黑客都是批量操作,所以就算他拿到我們上一分鐘的密文,當(dāng)他進(jìn)行黑客攻擊時,這個密文已經(jīng)失效了,這樣我們就盡可能的降低了被攻擊的可能性。
那么問題來了,服務(wù)器怎么操作才能保證用戶的登錄操作成功呢??

服務(wù)器在用戶注冊時,肯定保存了用戶的密碼,然后服務(wù)器需要做的也是跟客戶端一樣,先進(jìn)行一次MD5,然后加一個時間字符串,然后再進(jìn)行兩次MD5加密。(唯一不同的是,服務(wù)器需要加兩次不同的時間字符串對比兩次,第一次對當(dāng)前分鐘,第二次往前推一分鐘,這樣做是為了防止,用戶登錄請求時,恰好是在上一分鐘的最后一秒,然而請求到達(dá)服務(wù)器時已是下一分鐘)。

其實這個還是存在一個小問題,假如服務(wù)器時間與客服端時間不同步,怎么辦??很簡單:在客服端程序啟動時就先同步兩端時間,將兩端時間差值計算出,然后在每次登陸請求時,客服端加的時間字符串加上差值再進(jìn)行加密傳輸。這樣不就避免了這個問題嗎。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容