DES 演算法的使用

2021-07-30 04:06:42 字數 2101 閱讀 8098

des加密演算法屬於對稱密碼範疇,那麼什麼是對稱密碼呢?加密和解密過程中所使用的金鑰相同,就是對稱密碼,而且大多數對稱密碼演算法,加密解密過程都是互逆的。des 演算法是一種資料加密演算法,明文按照 64 位進行分組,分組後的明文與金鑰按位替代或交換的方法形成密文組。 金鑰的長度是 64 位(其實是56位,其中有8位是奇偶校驗位)。

1 . ecb(電子密碼密碼本模式)

這是最原始的一種加密工作模式,將明文分組成64位,與金鑰長度相同,然後按照加密演算法加密,得到 64位密文,最後將所有加密後的密文連線在一起即可,各段之間互不影響(當最後一段不足64位是要補足64位在進行計算)

可見,這種模式的優點是實現起來簡單,有利於並行運算,但是缺點是安全性比較低。

2 . cbc (密文鏈結模式)

這種模式相比於 ecb 就比較複雜了,讓我們來看看它是如何加密的

1. 首先將資料按照8個位元組一組進行分組得到d1d2......dn(若資料不是8的整數倍,用指定的padding資料補位)

2. 第一組資料d1與初始化向量i異或後的結果進行des加密得到第一組密文c1(初始化向量i為全零)

3. 第二組資料d2與第一組的加密結果c1異或以後的結果進行des加密,得到第二組密文c2

4. 之後的資料以此類推,得到cn

5. 按順序連為c1c2c3......cn即為加密結果。

這種加密模式相比於上一中比較安全一些,但是有乙個致命的缺點,就是誤差延續性,就是說只要有乙個地方的密文出現錯誤,那麼底下的密文就都會出現錯誤,為什麼會這樣?仔細看看加密過程就能明白,這也就是為什麼這種模式叫做鏈結模式。

當然還有其他的模式,就不一一介紹了,一般還是利用以上兩種模式。

nopadding    

api或演算法本身不對資料進行處理,加密資料由加密雙方約定填補演算法。例如若對字串資料進行加解密,可以補充\0或者空格,然後trim。

pkcs5padding

加密前:資料位元組長度對8取餘,餘數為m,若m>0,則補足8-m個位元組,位元組數值為8-m,即差幾個位元組就補幾個位元組,位元組數值即為補充的位元組數,若為0則補充8個位元組的8

填充模式就用於當明文不是64的倍數的時候,由於在加密的過程中需要對明文進行分塊,所以需要選擇填充模式。

1 . 和 hmac 演算法一樣,想要使用 des,首先要獲取金鑰,這需要借助於jdk自帶的keygenerator

public static byte initkey() throws exception
2 . 接下來就是 des 加密過程

public static byte encryptdes(byte key, byte data) throws exception
傳進去乙個helloworld看看結果

public static void main(string args) throws exception
結果為

215f9748bf31d5dc3d4eb5b77107643b

既然 des 是用於資料加密,那麼我們總應該能把資料還原成明文把,不然其意義何在呢?其實解密過程和加密過程幾乎一模一樣,如下所示

public static string decryptdes(byte key, byte data) throws exception
這個時候傳進來的 key 必須和加密時使用的 key 是相同的,而且這個時候傳進來的 data 也必須是加密過後的密文。

咦,這個時候我們發現,我們開頭介紹的加密模式和填充模式好像都沒用到,其實我們一般是使用預設就可以了,如果有特殊需要,可以這樣使用

cipher cipher = cipher.getinstance("des/ecb/pkcs5padding");
des加密過後的資料在以前是不可能被破解的,但是由於計算機的發展,des 加密過得資料在如今完全可在24小時內被破解,所以在 des 的基礎上有延伸出了 3des 和 aes,這兩種演算法將留到以後再介紹~

DES演算法使用示例

testdes.cpp 使用示例 include windows.h 入口引數 szkey 密碼 鑰匙 lpbysrc 明文 ilength 明文長度 出口引數 lpbydest 暗文 返回 true 成功 false 失敗 bool desencrypt unsigned char szkey,u...

des演算法描述 DES演算法描述簡介

des演算法描述簡介 1 簡介 des是data encryption standard 資料加密標準 的縮寫。它是由ibm公司研製的一種加密演算法,美國國家標準局於1977年公布把它作為非機要部門使用的資料加密標準,二十年來,它一直活躍在國際保密通訊的舞台上,扮演了十分重要的角色 10 des是乙...

在JAVA中使用DES演算法

作為參考 des演算法提供cbc,ofb,cfb,ecb四種模式,mac是基於ecb實現的。一 資料補位 des資料加解密就是將資料按照8個位元組一段進行des加密或解密得到一段8個位元組的密文或者明文,最後一段不足8個位元組,按照需求補足8個位元組 通常補00或者ff,根據實際要求不同 進行計算,...