DES的加密運演算法則是一種對稱加密演算法。以下是關於DES加密運演算法則的簡述:
對稱加密特性:
廣泛應用:
加密過程:
綜上所述,DES的加密運演算法則以其對稱加密的特性、廣泛的應用場景以及復雜的加密過程,在金融數據保護等領域發揮著重要作用。
⑵ .NET中的DES對稱加密
DES是一種對稱加密(Data Encryption Standard)演算法 於 年得到美國 *** 的正式許可 是一種用 位密鑰來加密 位數據的方法 一般密碼長度為 個位元組 其中 位加密密鑰 每個第 位都用作奇偶校驗
DES演算法一般有兩個關鍵點 第一個是加密模式 第二個是數據補位 加密模式的主要意義就是 加密演算法是按塊進行加密的 例如 DES 是 Bit 一個塊的進行加密 就是每次加密 個位元組 因此每次輸入八個位元組的明文輸出八個位元組密文 如果是 個位元組 那麼分成兩個塊依次進行加密 問題就出現在這里 如果明文是 分塊分別進行加密 那麼加密的結果類似 C C C C C C 可以看出明文的規律 這就是 ECB 加密模式 密文可以看出明文的規律 為了解決這個問題 有了其他的加密模式 CBC 加密模式(密碼分組連接) CFB加密模式(密碼反饋模式) OFB加密模式(輸出反饋模式)CBC 是要求給一個初始化的向量 然後將每個輸出與該向量作運算 並將運算的結果作為下一個加密塊的初始化向量 CFB 和 OFB 則不需要提供初始化向量 直接將密碼或者輸出作為初始化向量進行運算 這樣就避免了明文的規律出現在密文中 當然缺點是解密時需要保證密文的正確性 如果網路傳輸時發生了一部分錯誤 則後面的解密結果就可能是錯誤的 (ECB模式僅影響傳輸錯誤的那個塊 密碼演算法基本上都是分組(按快)進行加密的 如果密文長度不是剛剛好可以進行分組 怎麼辦?只能進行填充
加密演算法常見的有ECB模式和CBC模式
第一種電子密本方式(ECB)
ECB模式 電子密本方式 就是將數據按照 個位元組一段進行DES加密或解密得到一段 個位元組的密文或者明文 最後一段不足 個位元組 則補足 個位元組(注意 這里就涉及到數據補位了)進行計算 之後按照順序將計算所得的數據連在一起即可 各段數據之間互不影響 將明文分成n個 比特分組 如果明文長度不是 比特的倍數 則在明文末尾填充適當數目的規定符號 對明文組用給定的密鑰分別進行加密 行密文C=(C C …… Cn )其中Ci=DES(K xi) i= …… n 這是Java封裝的DES演算法的默認模式
第二種密文分組鏈接方式(CBC)
密文分組鏈接方式 在CBC方式下 每個明文組xi在加密前與先一組密文按位模二加後 再送到DES加密 CBC方式克服了ECB方式報內組重的缺點 但由於明文組加密前與一組密文有關 因此前一組密文的錯誤會傳播到下一組 這是 NET封裝的DES演算法的默認模式 它比較麻煩 加密步驟如下
首先將數據按照 個位元組一組進行分組得到D D ……Dn(若數據不是 的整數倍 就涉及到數據補位了)
第一組數據D 與向量I異或後的結果進行DES加密得到第一組密文C (注意 這里有向量I的說法 ECB模式下沒有使用向量I)
第二組數據D 與第一組的加密結果C 異或以後的結果進行DES加密 得到第二組密文C
之後的數據以此類推 得到Cn
按順序連為C C C ……Cn即為加密結果
第三種密文反饋方式(CFB) 可用於序列密碼
明文X=(x x …… xn ) 其中xi由t個比特組成 第四種輸出反饋方式(OFB) 可用於序列密碼
與CFB唯一不同的是OFB是直接取DES輸出的t個比特 而不是取密文的t個比特 其餘都與CFB相同 但它取的是DES的輸出 所以它克服了CFB的密文錯誤傳播的缺點
數據補位一般有NoPadding和PKCS Padding(Java中是PKCS Padding)填充方式 PKCS Padding和PKCS Padding實際只是協議不一樣 根據相關資料說明 PKCS Padding明確定義了加密塊是 位元組 PKCS Padding加密快可以是 之間 但是封裝的DES演算法默認都是 位元組 所以可以認為他們一樣 數據補位實際是在數據不滿 位元組的倍數 才補充到 位元組的倍數的填充過程
NoPadding填充方式 演算法本身不填充 比如 NET的padding提供了有None Zeros方式 分別為不填充和填充 的方式
PKCS Padding(PKCS Padding)填充方式 為 NET和Java的默認填充方式 對加密數據位元組長度對 取余為r 如r大於 則補 r個位元組 位元組為 r的值 如果r等於 則補 個位元組 比如
加密字元串為為AAA 則補位為AAA ;加密字元串為BBBBBB 則補位為BBBBBB ;加密字元串為CCCCCCCC 則補位為CCCCCCCC
NET中的DES加密
對於 NET 框架在System Security Cryptography命名空間下提供了DESCryptoServiceProvider作為System Security Cryptography DES加密解密的包裝介面 它提供了如下的 個方法
public override ICryptoTransform CreateDecryptor(byte[] rgbKey byte[] rgbIV)
public override ICryptoTransform CreateEncryptor(byte[] rgbKey byte[] rgbIV)
public override void GenerateIV()
public override void GenerateKey()
lishixin/Article/program/net/201311/13492
⑶ DES屬於什麼加密體制
DES(Data Encryption Standard)是一種對稱加密體制,意味著加密和解密使用相同的密鑰。這種演算法最初由IBM在20世紀70年代開發,經過政府的加密標准篩選後,於1976年11月被美國政府正式採用。隨後,DES被美國國家標准局和美國國家標准協會正式承認,成為當時廣泛使用的加密標准。
DES演算法使用56位的密鑰對64位的數據塊進行加密,每輪編碼過程中會生成一個48位的「每輪」密鑰值。這種加密方式下,數據塊會經過16輪編碼,每輪使用的密鑰值都是由完整密鑰衍生而來。使用軟體對DES進行解碼需要很長時間,而使用硬體解碼則速度極快。然而,在20世紀70年代,大多數黑客並沒有足夠的資源來製造能夠進行DES解密的硬體設備。據估計,在1977年,建造一個能夠專門用於DES解密的計算機需要耗資兩千萬美元,並且需要12個小時的破解時間才能得到結果。因此,在當時,DES被認為是一種非常安全、難以破解的加密方法。
盡管DES在當時的加密領域具有重要地位,但隨著計算機技術的不斷發展,其安全性逐漸受到挑戰。在1998年,兩位數學家首次公布了破解DES所需的時間:僅需12個小時和100萬台計算機。這一發現引發了人們對DES安全性的廣泛討論和關注。如今,DES已被更先進的加密演算法所取代,如AES(Advanced Encryption Standard),但在某些領域和場景中,它仍然被用作一種可靠的加密手段。