系統開發中,為了系統資料安全,資料加密不可缺少,開發人員需要掌握常見的加密策略。
一、數字摘要
數字摘要也稱為訊息摘要,它是乙個唯一對應乙個訊息或文字的固定長度的值,它由乙個單向hash函式對訊息進行計算而產生。如果訊息在傳遞的途中改變了,接收者通過對收到訊息採用相同的hash重新計算,新產生的摘要與原摘要進行比較,就可知道訊息是否被篡改了,因此訊息摘要能夠驗證訊息的完整性。訊息摘要採用單向hash函式將需要計算的內容"摘要"成固定長度的串,這個串亦稱為數字指紋。這個串有固定的長度,且不同的明文摘要成密文,其結果總是不同的(相對的),而同樣的明文其摘要必定一致。這樣這串摘要便可成為驗證明文是否是"真身"的"指紋"了。
md5md5即message digestalgorithm 5(資訊摘要演算法5),是數字摘要演算法一種實現,用於確保資訊傳輸完整性和一致性,摘要長度為128位。md5由md4、md3、md2改進而來,主要增強演算法複雜度和不可逆性,該演算法因其普遍、穩定、快速的特點,在產業界得到了極為廣泛的使用,目前主流的程式語言普遍都已有md5演算法實現。
shasha的全稱是secure hashalgorithm,即安全雜湊演算法。2023年,安全雜湊演算法(sha)由美國國家標準和技術協會(nist)提出,並作為聯邦資訊處理標準(fips pub 180)公布,2023年又發布了乙個修訂版fips pub 180-1,通常稱之為sha-1。sha-1是基於md4演算法的,現在已成為公認的最安全的雜湊演算法之一,並被廣泛使用。 sha-1演算法生成的摘要資訊的長度為160位,由於生成的摘要資訊更長,運算的過程更加複雜, 在相同的硬體上,sha-1的執行速度比md5更慢,但是也更為安全。
二、對稱加密
對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料傳送方將明文(原始資料)和加密金鑰一起經過特殊加密演算法處理後,生成複雜的加密密文進行傳送,資料接收方收到密文後,若想讀取原文,則需要使用加密使用的金鑰及相同演算法的逆演算法對加密的密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的金鑰只有乙個,傳送和接收雙方都使用這個金鑰對資料進行加密和解密,這就要求加密和解密方事先都必須知道加密的金鑰。
desdes演算法屬於對稱加密演算法,明文按64位進行分組,金鑰長64位,但事實上只有56位參與des運算(第8、16、24、32、40、48、56、64位是校驗位,使得每個金鑰都有奇數個1),分組後的明文和56位的金鑰按位替代或交換的方法形成密文。由於計算機運算能力的增強,原版des密碼的金鑰長度變得容易被暴力破解,因此演變出了3des演算法。3des是des向aes過渡的加密演算法,它使用3條56位的金鑰對資料進行三次加密,是des的乙個更安全的變形。
aesaes的全稱是advancedencryption standard,即高階加密標準,該演算法由比利時密碼學家joan daemen和vincent rijmen所設計,結合兩位作者的名字,又稱rijndael加密演算法, 是美國聯邦**採用的一種對稱加密標準,這個標準用來替代原先的des演算法,已經廣為全世界所使用,已然成為對稱加密演算法中最流行的演算法之一。aes演算法作為新一代的資料加密標準匯聚了強安全性、高效能、高效率、易用和靈活等優點,設計有三個金鑰長度:128,192,256位,比des演算法的加密強度更高,更為安全。
三、非對稱加密
非對稱加密演算法又稱為公開金鑰加密演算法,它需要兩個金鑰,乙個稱為公開金鑰(public key), 即公鑰,另乙個稱為私有金鑰(private key),即私鑰。公鑰與私鑰需要配對使用,如果用公鑰對資料進行加密,只有用對應的私鑰才能進行解密,而如果使用私鑰對資料進行加密,那麼只有用對應的公鑰才能進行解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法稱為非對稱加密演算法。非對稱加密演算法實現機密資訊交換的基本過程是:甲方生成一對金鑰並將其中的一把作為公鑰向其它人公開,得到該公鑰的乙方使用該金鑰對機密資訊進行加密後再傳送給甲方,甲方再使用自己儲存的另一把專用金鑰,即私鑰,對加密後的資訊進行解密。
rsarsa非對稱加密演算法是2023年由ron rivest、adi shamirh和lenadleman開發的,rsa取名來自開發他們三者的名字。rsa是目前最有影響力的非對稱加密演算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被iso推薦為公鑰資料加密標準。rsa演算法基於乙個十分簡單的數論事實:將兩個大素數相乘十分容易,但反過來想要對其乘積進行因式分解卻極其困難, 因此可以將乘積公開作為加密金鑰。
四、數字簽名
簽名認證是對非對稱加密技術與數字摘要技術的綜合運用,指的是將通訊內容的摘要資訊使用傳送者的私鑰進行加密,然後將密文與原文一起傳輸給資訊的接收者,接收者通過傳送者的公鑰解密被加密的摘要資訊,然後使用與傳送者相同的摘要演算法,對接收到的內容採用相同的方式產生摘要串,與解密的摘要串進行對比,如果相同,則說明接收到的內容是完整的,在傳輸過程中沒有受到第三方篡改,否則則說明通訊內容已被第三方修改。
每個人都有其特有的私鑰且都是對外界保密的,而通過私鑰加密的的資訊,只能通過其對應的公鑰才能解密,因此,私鑰可以代表私鑰持有者的身份,可以通過私鑰對應的公鑰來對私鑰擁有者的身份進行校驗。通過數字簽名,能夠確認訊息是由資訊傳送方簽名並傳送出來的, 因為其他人根本假冒不了訊息傳送方的簽名,他們沒有訊息傳送者的私鑰。而不同的內容, 摘要資訊千差萬別,通過數字摘要演算法,可以確保傳輸內容的完整性,如果傳輸內容中途被篡改,對應的數字簽名的值也將發生改變。
只有資訊的傳送者才能產生別人無法偽造的數字簽名串,這個串能對資訊傳送者所傳送的內容完整性以及傳送者的身份進行校驗和鑑別。
通訊正文經過相應的摘要演算法生成摘要後,使用訊息傳送者的私鑰進行加密,生成數字簽名。
五、數字證書
我們每個人都有很多形式的身份證明,如身份證、駕駛證、護照等等,這些證件都是由相應的簽發機構蓋章認證,可信程度較高,很難進行偽造,並且,隨著科技的發展,還可以通過指紋、視網膜等生物特徵進行身份的認證。數字證書(digital certificate),也稱為電子證書,類似於日常生活中的身份證,也是一種形式的身份認證,用於標識網路中的使用者身份。數字證書集合了多種密碼學的加密演算法,證書自身帶有公鑰資訊,可以完成相應的加密、解密操作,同時,還擁有自身資訊的數字簽名,可以鑑別證書的頒發機構,以及證書內容的完整性。由於證書本身含有使用者的認證資訊,因此可以作為使用者身份識別的依據。
通常數字證書會包含如下內容:
物件的名稱(人,伺服器,組織)
證書的過期時間
證書的頒發機構(誰為證書擔保)
證書頒發機構對證書資訊的數字簽名
簽名演算法
物件的公鑰
C 開發中常用加密解密方法解析
因為最近的做的東西要用到一些關於加密的技術,所以就把一些常用的加密方法給給總結了一下。好了廢話不多說,還是按照以往的慣例,我會通過乙個個的例項,逐一的把常用演算法給大家講解一下。一 md5加密演算法 我想這是大家都常聽過的演算法,可能也用的比較多。那麼什麼是md5演算法呢?md5全稱是message...
C 開發中常用加密解密方法解析
一 md5加密演算法 我想這是大家都常聽過的演算法,可能也用的比較多。那麼什麼是md5演算法呢?md5全稱是message digest algorithm 5,簡單的說就是單向的加密,即是說無法根據密文推導出明文。md5主要用途 1 對一段資訊生成資訊摘要,該摘要對該資訊具有唯一性,可以作為數字簽...
C 開發中常用加密解密方法解析
一 md5加密演算法 我想這是大家都常聽過的演算法,可能也用的比較多。那麼什麼是md5演算法呢?md5全稱是message digest algorithm 5,簡單的說就是單向的加密,即是說無法根據密文推導出明文。md5主要用途 1 對一段資訊生成資訊摘要,該摘要對該資訊具有唯一性,可以作為數字簽...