【雜湊(雜湊函式)】
md5
sha1
sha256(512)
【對稱加密演算法】
des
3des
aes(高階密碼標準,美國****局使用的加密演算法)
ps:蘋果內部的鑰匙串訪問用的就算aes。
【非對稱加密演算法 】
rsa1、資料不可反算(不可逆運算)。
2、演算法公開。
3、對相同的資料加密,得到的結果是一樣的。
4、對不同的資料加密得到的結果是定長。 (md5 -> 32個字元。10g電影->32個字元)
5、資訊摘要,資訊「指紋」。
伺服器的邏輯:
1、伺服器只會儲存使用者加密之後的32位的字串!!
2、伺服器在使用者註冊的那一刻就儲存了明文密碼加密之後的字串!!
如果伺服器儲存的原始密碼,請啪啪打臉你們的後台。
方法一:直接md5加密
**進行加密
終端進行加密
pwd = pwd.md5string
24萬億條資料來給你對比。
方法二:加鹽
早期的一種方式。
鹽要足夠複雜。(shift+數字鍵盤,胡亂的拍~)
拼接字串加鹽,然後md5,就相對比較安全。
static nsstring * salt = @"lkajsd;flj)(*@$!#(*&ojkd(*&)291iojpoihoids@#$u(*)_q#r()ijd*(f_u";
但是有個問題哈,如果某一天這個程式設計師搞事情,有矛盾,這哥們把鹽洩露了。就gg了。
那你說,離職了改鹽啊,那你低版本的使用者請問如何登入?
強制使用者都重置密碼啊!
那你就666了。
所以說鹽一旦寫死,就不可更改了。
方式三:hmac加密
目前非常流行,而且很多大公司在用。
使用乙個金鑰加密,做兩次雜湊!
pwd = [pwd hmacmd5stringwithkey:@"key"];
在真實的開發中,這個key從伺服器獲取。
啥時候獲取?
獲取驗證碼返回或者登入前多做一次網路請求啊,根據需求來搞。
【使用hmac加密的流程】
註冊:
1、傳送賬號給伺服器。
2、然後伺服器隨機生成乙個金鑰key返回給客戶端。
3、客戶端把這個key儲存在本地。(推薦鑰匙串)
4、輸入密碼 hmac加密,伺服器儲存乙個密碼。
換了手機後:
1、先判斷本地有沒有金鑰。
2、沒有金鑰,伺服器返回金鑰
那麼就會出現個問題,我每次拿個新手機,登入下別的手機號,你就把金鑰給我豈不是不安全?然後我再拼拼湊湊密碼,試一試,搞一搞。
所以,類似於裝置鎖的東西就出來了。
裝置鎖的問題:
用了新手機,伺服器向老裝置傳送請求,是否同意新手機登入,同意了,後台給新裝置傳送key。這樣就可以大部分的避免胡亂下發key。
如果沒有類似裝置鎖的東西,可以通過手機驗證碼,郵箱等等,確定是否傳送key給新裝置。
總之,下面驗證這步,要盡量安全就可以了。
【有些黑客是攔截網路請求,不需要知道你的real pwd,而是模擬登入進行操作。】
我們的目標:每次登入的請求的字串都不一樣!!!
//密碼hmac + 時間 ,然後md5
(密碼.hmac + "201703182138" ).md5
請求的時候,一般都是返回伺服器的時間戳。避免使用者手機時間不對。
在合適的地方網路請求得到伺服器的時間。
伺服器儲存的是密碼.hmac
,
然後後台對比現在的時間,然後.md5
,
如果現在對比不成功,繼續對比上一次的時間 然後.md5
。
對比兩次是留下網路延遲的時間。
兩次驗證都不成功,則失敗。
黑客一般都是獲取了大量的使用者資料後,統一進行破解操作,所以加個時間限制,更安全。
在使用搜尋引擎的時候,幾個關鍵字不管我們如何顛倒關鍵字,得到的搜尋的結果都是一致的。
原理:
比方說,搜尋的時候,有兩個關鍵字 a & b。
不管a和b的位置如何,只要a 的md5值 和b的md5值 相加,和是一樣的,搜尋出來的結果就是一樣的。
a + b = b + a = result
雖然二者看起來差不多,肉眼不那麼容易識別,但是正版a和盜版b的md5值是完全不同的。(和檔名無關、和字尾名無關)
md5是根據檔案內容的二進位制進行加密的,但是檔案內容稍微有些不同,md5後的結果也是非常大的。所以通過md5後的結果很容易看出來哪個是假的。
但是如果是複製,把磁碟的二進位制進行複製,得到的內容是一致的,這個時候就判斷不出來了。但是我們市面看的都是作者原始檔進行更改後發布的,原始檔是進行備案的,所以原始檔只有作者知道。只要對比md5,和備案的一匹配結果就出來了。
tips:
檔案壓縮後,md5的值是不一樣的。
解壓縮後,md5的值和原始檔是一樣的。
原理:
對比檔案的md5值!!只要二者檔案的md5值相同,就會秒傳。
如何更改檔案的md5值呢?
方法1、壓縮一下。你的md5值就變了。
方法2、採取一種編碼方式改變md5。
推薦用base64(base64是可以反算的)。
base64 皮卡丘.png -o 羋月傳.txt
base64 羋月傳.txt -o 皮卡丘.png -d
如果我們想儲存我們個人比較安全的資料,我們可以自定義個演算法,修改這個羋月傳.txt
裡面的內容,然後儲存。
取出的時候,運用這個演算法,得到正確的羋月傳.txt
內容,然後base64回來原來的皮卡丘.png
.
檢視檔案的md5值。
wiks-air
:desktop
wiki
/desktop/ios新技術.png) = 7e2c1e5a0f19a301902465cf2f362716
wiks-air
:desktop
wiki
$ md5 ios新技術.png
md5 (ios新技術.png) = 7e2c1e5a0f19a301902465cf2f362716
閒談:是否可以用指紋登陸?
當然不可以啦!
指紋:判斷這個人是否是手機的主人
密碼:判斷這個人是否是賬號的主人
雜湊函式密碼學
鏈客,有問必答!雜湊函式是密碼學中的乙個重要分支,該函式是一類數學函式,它可以在有限的合理時間內,將任意長度的訊息變換成固定長度的二進位制串,且不可逆,這個輸出值就是雜湊值,也叫雜湊值或訊息摘要。以hash函式為基礎的hash演算法,在數字簽名,實現資料完整性,merkle樹資料儲存和檢索等方面有著...
雜湊函式密碼學
鏈客,有問必答!雜湊函式是密碼學中的乙個重要分支,該函式是一類數學函式,它可以在有限的合理時間內,將任意長度的訊息變換成固定長度的二進位制串,且不可逆,這個輸出值就是雜湊值,也叫雜湊值或訊息摘要。以hash函式為基礎的hash演算法,在數字簽名,實現資料完整性,merkle樹資料儲存和檢索等方面有著...
密碼學 雜湊演算法
在日常生活中,每個人去銀行 坐火車都需要身份證證明自己的身份。身份證存在的目的就是要證明我真的是我。同樣在網路中,乙個檔案是否被改過 更改之後就是新的檔案 需要乙個 身份證 證明,這裡就需要了 hash 演算法了。為了滿足上述要求,需要 hash 演算法滿足如下特點 1 md5,即 message ...