對稱 非對稱金鑰 加密演算法

2021-05-23 14:56:23 字數 3212 閱讀 7132

由於"摘要"演算法加密的資料僅僅能作為一種身份驗證的憑據使用,如果我們要對整個文件資料進行加密,則不能採用這種"不可逆"的演算法,因此"金鑰"演算法(key encoding)的概念被提出。此類演算法通過乙個被稱為"金鑰"的憑據進行資料加密處理,接收方通過加密時使用的"金鑰"字串進行解密,即雙方持有的"金鑰"相同(對稱)。如果接收方不能提供正確的"金鑰",則解密出來的就不是原來的資料。

以上是"對稱金鑰"的概念,"非對稱金鑰"就是加密和解密檔案的金鑰不一樣。用於加密的是"公鑰"(public key),而用於解密的是"私鑰"(private key),公鑰是可以公開的,而私鑰則不能公開。這種演算法規定,對方給你傳送資料前,可以用你的"公鑰"加密後再發給你,但是這個"公鑰"也無法解開它自己加密的資料,即加密過程是單向的,這樣即使資料被中途攔截,入侵者也無法對其進行破解。當檔案到達自己的計算機後,可以用自己的"私鑰"解密,而且只有對應的私鑰才可以解密用相應使用者的公鑰加密的檔案。這就是"非對稱金鑰"加密演算法,也稱為"公共金鑰演算法",這兩者均建立在pki驗證體系結構上。

基於"對稱金鑰"的加密演算法有des、tripledes、rc2、rc4、rc5和blowfish等;基於"非對稱金鑰"的加密演算法有rsa、diffie-hellman等。

1.des演算法

des(data encryption standard,資料加密標準)是最早、最著名的保密金鑰或對稱金鑰加密演算法。它是由ibm公司在20世紀70年代發展起來的,美國國家標準局於2023年公布把它作為非機要部門使用的資料加密標準。30多年來,它一直活躍在國際保密通訊的舞台上,扮演了十分重要的角色。

目前在國內,隨著三金工程尤其是金卡工程的啟動,des演算法在pos、atm、磁卡及智慧卡(ic卡)、加油站、高速公路收費站等領域被廣泛應用,以此來實現關鍵資料的保密,如信用卡持卡人的pin的加密傳輸、ic卡與pos間的雙向認證、金融交易資料報的mac校驗等,均用到des演算法。

des是乙個分組加密演算法,它以64位為分組對資料加密。同時des也是乙個對稱演算法:加密和解密用的是同乙個演算法。它的密匙長度是56位(因為每個位元組的第8位都用作奇偶校驗),金鑰可以是任意的56位的數,而且可以任意時候改變。其中有極少量的數被認為是弱金鑰,但是很容易避開他們,所以其保密性依賴於金鑰。

des演算法具有極高的安全性,到目前為止,除了用窮舉搜尋法對des演算法進行攻擊外,還沒有發現更有效的辦法。而56位長的金鑰的窮舉空間為256,這意味著如果一台計算機的速度是每秒鐘檢測一百萬個金鑰,則它搜尋完全部金鑰就需要將近2023年的時間,可見這是難以實現的。當然,隨著科學技術的發展,當出現超高速計算機後,還可以考慮把des金鑰的長度再增長一些,以此來達到更高的保密程度。

des演算法的入口引數有3個:key、data、mode。其中key為8個位元組,共64位,是des演算法的工作金鑰;data也為8個位元組,64位,是要被加密或被解密的資料;mode為des的工作方式,有兩種:加密或解密。如mode為加密,則用key 去對資料data進行加密,生成data的密碼形式(64位)作為des的輸出結果;如mode為解密,則用key去把密碼形式的資料data解密,還原為data的明碼形式(64位)作為des的輸出結果。在通訊網路的兩端,雙方約定一致的key,在通訊的源點用key對核心資料進行des加密,然後以密碼形式在公共通訊網(如**網)中傳輸到通訊網路的終點,資料到達目的地後,用同樣的key對密碼資料進行解密,便再現了明碼形式的核心資料。這樣,便保證了核心資料在公共通訊網中傳輸的安全性和可靠性。通過定期在通訊網路的源端和目的端同時改用新的key,便能更進一步提高資料的保密性,這正是現在金融交易網路的流行做法。

des演算法的工作原理為:des對64位的明文分組進行操作,通過乙個初始置換將明文分成左半部分和右半部分,然後進行16輪完全相同的運算,最後經過乙個末置換便得到64位密文。每一輪的運算包含擴充套件置換、s盒代換、p盒置換和兩次異或運算,另外每一輪中還有乙個輪金鑰(子金鑰)。具體過程如下:des對乙個64位的明文分組(m)進行加密操作,m經過乙個初始的p置換成m0,將m0明文分成左半部分和右半部分m0=(l0,r0),各32位長。然後進行16輪完全相同的運算,這些運算被稱為函式f,在運算過程中資料與密匙結合。在每一輪中,密匙位移位,然後再從密匙的56位中選出48位。通過乙個擴充套件置換將資料的右半部分擴充套件成48位,並通過乙個異或操作替代成新的32位資料。這4步運算構成了函式f。然後,通過另乙個異或運算,函式f的輸出與左半部分結合,其結果成為新的右半部分,原來的右半部分成為新的左半部分,這就是s盒代換。經過16輪這樣的轉換後,左、右半部分再合在一起經過乙個末置換,這樣就完成了整個加密過程。

des加密和解密唯一的不同是密匙的次序相反。如果各輪加密密匙分別是k1、k2、k3…k16,那麼解密密匙就是k16、k15、k14…k1。

目前在des演算法中,採用最多的還是更複雜、更安全的3des(tripledes),是des加密演算法的一種模式。3des使用3條64位的金鑰對資料進行3次加密,密碼強度是168位(3×56)。3des是des向aes過渡的加密演算法(2023年,nist將3des指定為過渡的加密標準)。它以des為基本模組,通過組合分組方法設計出分組加密演算法。

2.rc演算法

rc系列演算法是由大名鼎鼎的rsa三人組設計的金鑰長度可變的流加密演算法,其中最流行的是rc4演算法。rc系列演算法可以使用2048位的金鑰,但該演算法的速度卻可以達到des加密的10倍左右,所以受到使用者的廣泛歡迎和普遍採用。

rc4演算法的原理包括初始化演算法和偽隨機子密碼生成演算法兩大部分。在初始化的過程中,金鑰的主要功能是將乙個256位元組的初始數簇進行隨機攪亂,不同的數簇在經過偽隨機子密碼生成演算法的處理後可以得到不同的子金鑰序列,得到的子金鑰序列和明文進行異或運算(xor)後,得到密文。

由於rc4演算法加密採用的是異或,所以一旦子金鑰序列出現了重複,密文就有可能被破解。

3.rsa演算法

rsa演算法也是rsa三人設計組設計的,是目前最流行的公鑰密碼演算法。它使用長度可以變化的金鑰,是第乙個既能用於資料加密,也能用於數字簽名的演算法。

rsa演算法的原理如下:

(1)隨機選擇兩個大質數p和q,p不等於q,計算n=pq。

(2)選擇乙個大於1、小於n的自然數e,e必須與(p-1)(q-1)互素。

(3)用公式d×e = 1(mod(p-1)(q-1))計算出d。

(4)銷毀p和q。

最終得到的n就是"公鑰",d就是"私鑰",傳送方使用n去加密資料,接收方只有使用d才能解開資料內容。

rsa的安全性依賴於大數分解,小於1024位的n已經被證明是不安全的。而且由於rsa演算法進行的都是大數計算,使得rsa最快的情況也比des慢一倍以上,這是rsa最大的缺陷。因此,通常只能用於加密少量資料或者加密金鑰,但rsa仍然不失為一種高強度的演算法。

mysql 非對稱金鑰 RSA非對稱加密演算法

首先要理解的是公鑰加密後私鑰是可以解密的。私鑰加密後公鑰也是可以解密的。公鑰和私鑰是成對出現的。一般都是公鑰加密,私鑰解密。公鑰私鑰原理 張三有兩把鑰匙,一把是公鑰,另一把是私鑰 張三把公鑰送給他的朋友們 李 四 王五 趙六 每人一把 李四要給張三寫一封保密的信。她寫完後用張三的公鑰加密,就可以達到...

對稱加密演算法 非對稱加密演算法

對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文 原始資料 和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文...

對稱加密演算法 非對稱加密算

對稱加密演算法des,3des,aes 非對稱加密演算法rsa,dsa,ecc aes data encryption standard 資料加密標準,速度較快,適用於加密大量資料的場合。3des triple des 是基於des,對一塊資料用三個不同的金鑰進行三次加密,強度更高。非對稱加密演算法...