散列函數
:又稱哈希函數
,散列算法
,是一種從任何一種數據中建立小的數字「指紋
」的方法。它使用128
位,32
個字符,16進制
表示。(爲何是32個字符,由於在16進制中一個字符是0.5個字節,二進制是:128 / 8 = 16,那麼十六進制就是:128 / 8 * 2 = 32)算法
好比在 Terminal 中加密密碼:1q2w3e --> 對應的 MD5 是 3fde6bb0541387e4ebdadf7c2ff31123
複製代碼
一下就是在網站去查詢的結果,因此MD5相對再也不安全了。
pwd = (pwd + salt).MD5
複製代碼
這樣仍是隻能相對安全,若是獲取到了你的 salt,那麼仍是會被破譯。
兩次Hash
(兩次散列)key
, Client 保存在本地,後面請求就是用這個key。
key
在何時獲取了,有兩種狀況:
C --> 發送數據: pwd = (pwd + (hmac + salt) + date).md5
S --> 接受到數據:先校驗date
例如:
服務器下發的是 201812091411, 客戶端回傳的時 201812091411,可是如今服務器時間是 201812091412,
那麼時間對不上,該怎麼辦?此時服務器會減去一分鐘(201812091411)再做對比,此時兩個時間是相等的。
服務器就能夠作接下來的處理,若是超過服務器限定的時間,就超時,讓其從新請求。
複製代碼
ECB 安全
openssl enc -aes-128-ecb -K 616263 -nosalt -in msg.txt -out msg.bin
616263: 是key值是abc二進制代碼
複製代碼
CBCbash
openssl enc -aes-256-cbc -iv 010203040506 -K 616263 -nosalt -in msg.txt -out msg.bin
iv: 是初始化向量,例如:時鐘的9點鐘方向等
複製代碼