3DES演算法(資料補位)

2021-08-30 21:07:56 字數 1646 閱讀 2676

這一篇文章要解決資料加密——資料補位的問題、des演算法的兩種模式ecb和cbc問題以及更加安全的演算法——3des演算法。

一、資料補位

des資料加解密就是將資料按照8個位元組一段進行des加密或解密得到一段8個位元組的密文或者明文,最後一段不足8個位元組,按照需求補足8個位元組(通常補00或者ff,根據實際要求不同)進行計算,之後按照順序將計算所得的資料連在一起即可。

這裡有個問題就是為什麼要進行資料補位?主要原因是des演算法加解密時要求資料必須為8個位元組。

二、ecb模式

des ecb(電子密本方式)其實非常簡單,就是將資料按照8個位元組一段進行des加密或解密得到一段8個位元組的密文或者明文,最後一段不足8個位元組,按照需求補足8個位元組進行計算,之後按照順序將計算所得的資料連在一起即可,各段資料之間互不影響。

三、cbc模式

加密步驟如下:

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

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

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

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

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

解密是加密的逆過程,步驟如下:

1)首先將資料按照8個位元組一組進行分組得到c1c2c3......cn

2)將第一組資料進行解密後與初始化向量i進行異或得到第一組明文d1(注意:一定是先解密再異或)

3)將第二組資料c2進行解密後與第一組密文資料進行異或得到第二組資料d2

4)之後依此類推,得到dn

5)按順序連為d1d2d3......dn即為解密結果。

這裡注意一點,解密的結果並不一定是我們原來的加密資料,可能還含有你補得位,一定要把補位去掉才是你的原來的資料。

四、3des 演算法

3des演算法顧名思義就是3次des演算法,其演算法原理如下:

設ek()和dk()代表des演算法的加密和解密過程,k代表des演算法使用的金鑰,p代表明文,c代表密表,這樣,

3des加密過程為:c=ek3(dk2(ek1(p)))

3des解密過程為:p=dk1((ek2(dk3(c)))

這裡可以k1=k3,但不能k1=k2=k3(如果相等的話就成了des演算法了)

3des with 2 diffrent keys(k1=k3),可以是3des-cbc,也可以是3des-ecb,3des-cbc整個演算法的流程和des-cbc一樣,但是在原來的加密或者解密處增加了異或運算的步驟,使用的金鑰是16位元組長度的金鑰,將金鑰分成左8位元組和右8位元組的兩部分,即k1=左8位元組,k2=右8位元組,然後進行加密運算和解密運算。

3des with 3 different keys,和3des-cbc的流程完全一樣,只是使用的金鑰是24位元組的,但在每個加密解密加密時候用的金鑰不一樣,將金鑰分為3段8位元組的金鑰分別為金鑰1、金鑰2、金鑰3,在3des加密時對加密解密加密依次使用金鑰1、金鑰2、金鑰3,在3des解密時對解密加密解密依次使用金鑰3、金鑰2、金鑰1。

3des演算法加密

實現的原理 public class encryption 執行3des加密 param secretkey 秘鑰 param datastring 明文 return base64編碼文字 public static string encryptdes string secretkey,strin...

3DES加密演算法

des是乙個經典的對稱加密演算法,但也缺陷明顯,即56位的金鑰安全性不足,已被證實可以在短時間內破解。為解決此問題,出現了3des,也稱triple des,3des為des向aes過渡的加密演算法,它使用3條56位的金鑰對資料進行三次加密。為了相容普通的des,3des並沒有直接使用 加密 加密 ...

Golang實現ECB模式3DES演算法

因專案需要使用ecb模式下的3des演算法加解密資訊,golang預設只提供cbc模式,只能自己實現ecb模式。參考文章對ecb模式的des有解釋,並實現了部分des演算法樣例。這裡把演算法補全,提供3des演算法實現。3des 3des演算法就是採用乙個長度為24位元組的金鑰,將金鑰分成各8位元組...