一、
hash
演算法
著名的hash
演算法,md5
和sha1
可以說是目前應用最廣泛的
hash
演算法,而它們都是以
md4為基礎設計的。
那麼他們都有什麼用途呢?
雜湊演算法
有如下特性:
1)不可以從
訊息摘要
中復原資訊;
2)兩個不同的訊息不會產生同樣的訊息摘要;
1.1 md5
演算法md5
是rsa
資料安全公司開發的一種
單向雜湊演算法
。md5
全稱是報文摘要
演算法(message-digest algorithm 5
),此演算法對任意長度的資訊逐位進行計算,產生乙個二進位制長度為
128位(十六進製制長度就是
32位)的「指紋
」(或稱
「報文摘要
」),不同的檔案產生相同的報文摘要的可能性是非常非常之小的。
md5演算法常常被用來驗證網路檔案傳輸的完整性,防止檔案被人篡改。
md5sumfilename.zip
"file_md5": "b1f37a708c8ed2dea463d77cce154a8b",
md5
嚴格來說不是加密演算法,因此他產生的資料不能叫「密文
」。但是它經常被歸為「不可逆的加密演算法」,
一般用作資料庫使用者密碼的儲存。
md5
是一種訊息摘要演算法,他產生的資料稱為
「訊息摘要值」,
md5碼可以唯一地代表原資訊的特徵,通常用於密碼的加密儲存,數字簽名,檔案完整性驗證等。
1)用作資料庫使用者密碼的加密
;android
資料庫儲存加密,比如使用者名稱的密碼,密碼通常採用的就是
md5雜湊值,長度固定,只需要固定
32個位元組屬性。
永遠不需要還原明文資訊。
登入比較,
md5(「
明文密碼
」)=資料庫密碼
md5 hash
值。像csdn.net
**過去採用明文儲存密碼是相當愚蠢和危險的。
2)用於檔案的完整性檢驗;比如廣陞
ota公升級包
package.zip
中加入md5
雜湊序列。
3)用於數字簽名。對重要內容生成
md5雜湊序列,再利用非對稱演算法私鑰對
md5雜湊序列加密。
問題:md5sum跟檔案建立時間有關係嗎?跟檔名有關係嗎??
如果「md5sum跟檔案建立時間有關係」的話,「
md5演算法被用來驗證網路檔案傳輸的完整性,防止檔案被人篡改」的意義何在?
大家都知道md5或者sha-1這種hash雜湊演算法,是對檔案內容本身逐位bit 計算。假設「
md5sum跟檔案建立時間」真的有關係,那麼檔案建立、修改、訪問時間的屬性應該是檔案本身的一部分了。
答案顯示不是這樣的.....,
新建 乙個txt文字檔案, 檔案的
建立、修改、訪問時間的屬性均有,檔案顯示為0位元組。用uedit邊切換至十六進製制模式都不可用。很明顯檔案完全是空的。
具體存在**,有興趣自己研究。
1.2
安全雜湊演算法
(secure hash algorithm
)主要適用於
數字簽名標準(
digital signature standard dss
)裡面定義的數字簽名演算法(
digital signature algorithm dsa
)。sha-1:
對於長度小於
2^64
位的訊息
(2,097,152tb)
,sha-1
會產生乙個
160位的
訊息摘要
,因此抗窮舉
(brute-force)
性更好,
當接收到訊息的時候,這個訊息摘要可以用來驗證資料的完整性。在傳輸的過程中,資料很可能會發生變化,那麼這時候就會產生不同的訊息摘要
。sha-1
在許多安全協議中廣為使用,包括
tls和
ssl、
pgp、
ssh、
s/mime
和ipsec
,曾被視為是
md5(更早之前被廣為使用的雜湊函式)的後繼者。
一些黑客
破獲這種密碼的方法是一種被稱為
「跑字典
」的方法。有兩種方法得到字典,一種是日常蒐集的用做密碼的
字串表,另一種是用排列組合方法生成的,先用
md5程式計算出這些字典項的
md5值,然後再用目標的
md5值在這個字典中檢索。
即使假設密碼的最大長度為
8,同時密碼只能是字母和數字,共
26+26+10=62
個字元,排列組合出的字典的項數則是
p(62,1)+p (62,2)….+p(62,8)
,那也已經是乙個很天文的數字了,儲存這個字典就需要
tb級的磁碟組,而且這種方法還有乙個前提,就是能獲得目標賬戶的密碼
md5值的情況下才可以。
三、兩位歷史性重要人物
王小雲ronald l. rivest
ronald rivest:
麻省理工學院教授,主要從事密碼學、計算機和網路安全和演算法的研究。
1991
年,rivest
開發出技術上更為趨近成熟的
md5演算法。他和
adi shamir
和len adleman
一起發明了
rsa公鑰演算法,也是
rsa資料安全公司的聯合創始人。
王小雲:
山東大學,王小雲教授的貢獻在於她找到了一種方法,可以在已知原文的情況下構造出另乙個跟原文
md5值相同的串。並且該計算過程所消耗的時間是有限的、可計算的。其所提的雜湊衝撞
演算法只需少於2的
69次方步驟,少於
生日攻擊法
(birthday attack
)所需的2的
80次方步。同年
8月,王小雲、
姚期智,以及姚期智妻子
姚儲楓聯手於國際密碼討論年會提出
sha-1
雜湊函式雜湊衝撞演算法的改良版。此改良版使破解
sha-1
時間縮短為2的
63次方步。
四 、簽名與加密的核心區別
簽名並不改變主體資訊內容,並不對資訊本身加密。而加密改變了加密物件原有的資料組織形式、內容,使原有內容變得不可讀。
用私鑰對資訊摘要進行加密,這個過程叫簽名;
對生成摘要資訊的原始內容重新生成摘要,並用公鑰對加密的資訊摘要進行解密,兩者比對的過程,叫簽名驗證。
Android資料加密之SHA安全雜湊演算法
對於sha安全雜湊演算法,以前沒怎麼使用過,僅僅是停留在聽說過的階段,今天在看快取框架glide原始碼時發現其快取的key採用的不是md5加密演算法,而是sha 256加密演算法,這才勾起了我的好奇心,所以趁著晚上沒啥事,來學習一下。其他幾種加密方式 sha secure hash algorith...
安全之道 加密與數字簽名
鍾峰 2004年10月 版本 1.0.0 本指南介紹為基於 microsoft 的多層應用程式設計和編寫由應用程式管理的安全和數字簽名的指導原則,主要討論常見的安全任務和方案,並提供相應的資訊幫助您選擇最佳方法和技術。本指南適用於體系結構設計人員和開發人員。本指南假定讀者已經了解 xml web s...
加密技術與數字簽名
加密分對稱與非對稱。對稱常用 des 3des aes 非對稱常用 rsa 加密具有雙向性,即公鑰和私鑰中的任乙個均可用作加密,此時另乙個則用作解密 數字簽名是非對稱金鑰加密技術與數字摘要技術的應用。數字簽名技術是將摘要資訊用傳送者的私鑰加密,與原文一起傳送給接收者。接收者只有用傳送者的公鑰才能解密...