这一篇文章要解决数据加密——数据补位的问题、DES算法的两种模式ECB和CBC问题以及更加安全的算法——3DES算法。
一、数据补位
DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字节(通常补00或者FF,根据实际要求不同)进行计算,之后按照顺序将计算所得的数据连在一起即可。
这里有个问题就是为什么要进行数据补位?主要原因是DES算法加解密时要求数据必须为8个字节。
二、ECB模式
DES ECB(电子密本方式)其实非常简单,就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字节进行计算,之后按照顺序将计算所得的数据连在一起即可,各段数据之间互不影响。
三、CBC模式
DES 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。
相关推荐
本文档描述了DES算法和3DES算法加、解密流程和补位数据规则,供理解学习DES算法和3DES算法。供密码开发相关人员了解最简单的密码算法入门学习使用。
如果原始数据的长度不是64位的倍数,就需要按照一定的规则进行数据补位,确保数据能够完整地通过DES算法处理。通常,密码的长度为8个字节,其中56位用于加密,每个第8位作为奇偶校验位。 在实际应用中,由于明文...
### Python 实现的 DES 加密算法和 3DES 加密算法详解 #### 一、概述 在本篇文章中,我们将详细介绍如何使用 Python 来实现 DES(Data Encryption Standard)加密算法和 3DES(Triple Data Encryption Algorithm)...
3Des的EBC,CBC加密算法,有注释,补位长度,同时包含des算法,亲测无问题,仔细观察运行函数,可以基本满足所有需求。 更新,下载此资源的兄弟们如果有问题,只有前八位解密是正确的,请将des3_crypt_cbc函数里面...
DES算法使用56位密钥对64位的数据块进行加密和解密,其核心是16轮的Feistel结构,每轮都包含多个子步骤。 实验目的在于让学生深入理解DES加密原理,通过编写C++程序实现加密和解密功能,提升算法设计和编程能力。 ...
在Delphi中实现CBC、DES和3DES算法,通常需要理解底层的加密逻辑并编写相应的Pascal代码,包括定义数据结构、实现加密函数和解密函数,以及处理加密过程中的填充(padding)问题。 在描述中提到的"补位CBC算法"是指...
- DES算法的加密和解密操作都是以64位(8字节)的数据块为单位进行的。如果输入数据不是64位的整数倍,就需要进行补位,通常是补0或FF,以满足算法的要求。 - 补位的目的是确保数据能够被正确地分割成64位的块进行...
3. 加密过程:每个数据块经过多轮(AES-128有10轮,AES-192有12轮,AES-256有14轮)的替换和置换操作,包括字节代换(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。...
DES算法一般有两个关键点,第一个是加密模式,第二个是数据补位,加密模式的主要意义就是,加密算法是按块进行加密的,例如 DES ,是 64Bit 一个块的进行加密,就是每次加密 8 个字节,因此每次输入八个字节的明文...
- **PKCS5Padding/PKCS7Padding**:添加补位到输入数据末尾,使得长度为算法块大小的整数倍。 - **ZeroPadding**:用零填充到块的边界。 5. **密钥管理**: - **密钥存储**:通常使用Keystore系统来安全地存储...
Base64是一种基于64个可...然而,Base64编码并不是一种安全的加密机制,它不具备加密算法的特性,比如防止数据被轻易篡改或保持数据机密性,所以当涉及到安全性要求较高的场合时,应考虑使用加密算法,如AES、DES等。
高级加密标准(AES)是一种广泛应用的块密码,由美国国家标准与技术研究院(NIST)在2001年采纳为联邦信息处理标准(FIPS),取代了之前的DES加密算法。AES是基于替换和置换的组合,其核心在于Rijndael密码结构,由...