了解名詞:
消息摘要:
消息摘要采用單向Hash 函數(shù)將需加密的明文"摘要"成一串128bit的密文,這一串密文亦稱為數(shù)字指紋(Finger Print)腮猖,它有固定的長度,且不同的明文摘要成密文赞枕,其結(jié)果總是不同的澈缺,而同樣的明文其摘要必定一致坪创。
摘要算法:
摘要算法是指可以將任意長度的文本,通過一個算法姐赡,得到一個固定長度的文本莱预。這里文本不一定只是文本,可以是字節(jié)數(shù)據(jù)项滑。所以摘要算法可以將很長的內(nèi)容變成一個固定長度的東西依沮。
數(shù)字簽名:
數(shù)字簽名就是非對稱加密和摘要算法兩者結(jié)合。現(xiàn)在假設我們需要傳輸好幾個參數(shù)枪狂,如何確定接口中所傳輸?shù)膮?shù)值是否被篡改過危喉?這時候數(shù)字簽名就可以解決這個問題了
CA證書:
通過數(shù)字簽名實現(xiàn)的數(shù)字化的證書。在一般的證書組成部分中還加入了其他的信息州疾,比如證書有效期辜限,公司組織名稱等,過了有效期需要重新簽發(fā)严蓖。
公鑰/私鑰:
對于一個私鑰薄嫡,有且只有一個與之對應的公鑰。公鑰公開給任何人颗胡,私鑰通常是只有生成者擁有毫深。公/私鑰通常是1024位或者2048位,越長安全系數(shù)越高毒姨,但是解密越困難哑蔫。盡管拿到了公鑰,如果沒有私鑰手素,要想解密那幾乎是不可能的鸳址,至少現(xiàn)在在世界上還沒有人公開出來說成功解密的瘩蚪。非對稱加密算法如此強大可靠泉懦,卻有一個弊端,就是加解密比較耗時疹瘦。
常見的幾種加密
DES加密:
DES加密算法是一種分組密碼崩哩,以64位為分組對數(shù)據(jù)加密,它的密鑰長度是56位言沐,加密解密用同一算法邓嘹。DES加密算法是對密鑰進行保密,而公開算法险胰,包括加密和解密算法汹押。這樣,只有掌握了和發(fā)送方相同密鑰的人才能解讀由DES加密算法加密的密文數(shù)據(jù)起便。因此棚贾,破譯DES加密算法實際上就是搜索密鑰的編碼窖维。對于56位長度的密鑰來說,如果用窮舉法來進行搜索的話妙痹,其運算次數(shù)為256铸史。?
AES加密算法:
AES加密算法是密碼學中的高級加密標準,該加密算法采用對稱分組密碼體制怯伊,密鑰長度的最少支持為128琳轿、192、256耿芹,分組長度128位蛋哭,算法應易于 各種硬件和軟件實現(xiàn)。這種加密算法是美國聯(lián)邦政府采用的區(qū)塊加密標準移怯,這個標準用來替代原先的DES兆蕉,已經(jīng)被多方分析且廣為全世界所使用
RSA加密算法:
RSA加密算法是目前最有影響力的公鑰加密算 法,并且被普遍認為是目前最優(yōu)秀的公鑰方案之一寇甸。RSA是第一個能同時用于加密和數(shù)宇簽名的算法塘偎,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推 薦為公鑰數(shù)據(jù)加密標準拿霉。RSA加密算法基于一個十分簡單的數(shù)論事實:將兩個大素數(shù)相乘十分容易吟秩,但想要對其乘積進行因式分解卻極其困難, 因此可以將乘積公開作為加密密鑰绽淘。
Base64加密算法:
Base64加密算法是網(wǎng)絡上最常見的用于傳輸8bit字節(jié)代碼的編碼方式之一涵防,Base64編碼可用于在HTTP環(huán)境下傳遞較長的標識信息。例如沪铭,在 JAVAPERSISTENCE系統(tǒng)HIBEMATE中壮池,采用了Base64來將一個較長的唯一標識符編碼為一個字符串,用作HTTP表單和 HTTPGETURL中的參數(shù)杀怠。在其他應用程序中椰憋,也常常需要把二進制數(shù)據(jù)編碼為適合放在URL(包括隱藏表單域)中的形式。此時赔退,采用Base64編碼 不僅比較簡短橙依,同時也具有不可讀性,即所編碼的數(shù)據(jù)不會被人用肉眼所直接看到?
MD5加密算法:
MD5為計算機安全領域廣泛使用的一種散列函數(shù)硕旗,用以提供消息的完整性保護窗骑。對MD5加密算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組漆枚,經(jīng)過了一系列的處理后创译,算法的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成—個128位散列值墙基。
MD5被廣泛用于各種軟件的密碼認證和鑰匙識別上软族。MD5用的是哈希函數(shù)辛藻,它的典型應用是對一段信息產(chǎn)生信息摘要,以防止被篡改互订。MD5的典型應用是對一 段Message產(chǎn)生fingerprin指紋吱肌,以防止被“篡改”。如果再有—個第三方的認證機構(gòu)仰禽,用MD5還可以防止文件作者的“抵賴”氮墨,這就是所謂的數(shù)字簽名應用。MD5還廣泛用于操作系統(tǒng)的登陸認證上吐葵,如UNIX规揪、各類BSD系統(tǒng)登錄密碼、數(shù)字簽名等諸多方温峭。
MD5算法主要用在用戶注冊口令的加密猛铅,對于普通強度的口令加密,可以通過以下三種方式進行破解:
(1)在線查詢密碼凤藏。一些在線的MD5值查詢網(wǎng)站提供MD5密碼值的查詢奸忽,輸入MD5密碼值后,如果在數(shù)據(jù)庫中存在揖庄,那么可以很快獲取其密碼值栗菜。
(2)使用MD5破解工具。網(wǎng)絡上有許多針對MD5破解的專用軟件蹄梢,通過設置字典來進行破解疙筹。
(3)通過社會工程學來獲取或者重新設置用戶的口令。
因此簡單的MD5加密是沒有辦法達到絕對的安全的禁炒,因為普通的MD5加密有多種暴力破解方式而咆,因此如果想要保證信息系統(tǒng)或者網(wǎng)站的安全,需要對MD5進行改造幕袱,增強其安全性.
SHA1加密算法:
SHA1是和MD5一樣流行的消息摘要算法暴备。SHA加密算法模仿MD4加密算法。SHA1設計為和數(shù)字簽名算法(DSA)一起使用凹蜂。
SHA1主要適用于數(shù)字簽名標準里面定義的數(shù)字簽名算法馍驯。對于長度小于2“64位的消息,SHA1會產(chǎn)生一個160位的消息摘要玛痊。當接收到消息的時候,這 個消息摘要可以用來驗證數(shù)據(jù)的完整性狂打。在傳輸?shù)倪^程中擂煞,數(shù)據(jù)很可能會發(fā)生變化,那么這時候就會產(chǎn)生不同的消息摘要趴乡。SHA1不可以從消息摘要中復原信息对省, 而兩個不同的消息不會產(chǎn)生同樣的消息摘要蝗拿。這樣,SHA1就可以驗證數(shù)據(jù)的完整性蒿涎,所以說SHA1是為了保證文件完整性的技術(shù)哀托。
SHA1加密算法可以采用不超過264位的數(shù)據(jù)輸入,并產(chǎn)生一個160位的摘要劳秋。輸入被劃分為512位的塊仓手,并單獨處理。160位緩沖器用來保存散列函數(shù) 的中間和最后結(jié)果玻淑。緩沖器可以由5個32位寄存器(A嗽冒、B、C补履、D和E)來表示添坊。SHA1是一種比MD5的安全性強的算法,理論上箫锤,凡是采取“消息摘要” 方式的數(shù)字驗證算法都是有“碰撞”的——也就是兩個不同的東西算出的消息摘要相同贬蛙,互通作弊圖就是如此。但是安全性高的算法要找到指定數(shù)據(jù)的“碰撞”很困 難谚攒,而利用公式來計算“碰撞”就更困難一目前為止通用安全算法中僅有MD5被破解速客。
附:https://gitee.com/xslspring/encrypt.git(iOS常見的加解密代碼鏈接)
轉(zhuǎn)自鏈接:https://blog.csdn.net/woaifen3344/article/details/50330439
轉(zhuǎn)自鏈接:https://blog.csdn.net/qq_31946323/article/details/79241488