# 数据加密算法

#### **3DES介绍**

- 3DES（或称为Triple DES）是三重数据加密算法（TDEA，Triple Data Encryption Algorithm）块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强，原版DES密码的密钥长度变得容易被暴力破解；3DES即是设计用来提供一种相对简单的方法，即通过增加DES的密钥长度来避免类似的攻击，而不是设计一种全新的块密码算法。

#### **加解密过程**

- 设Ek()和Dk()代表DES算法的加密和解密过程，K代表DES算法使用的密钥，M代表明文，C代表密文，这样：
- 3DES加密过程为：C=Ek3(Dk2(Ek1(M)))
- 3DES解密过程为：M=Dk1(EK2(Dk3(C)))
- K1、K2、K3决定了算法的安全性，易百采用K1等于K3，并且使用ECB/NoPadding填充模式。

#### **加密举例**

设pinKey为: `9D93D15D6A3913AB4151C456A80841EF`，则:

```
K1 = 9D93D15D6A3913AB
K2 = 4151C456A80841EF
K3 = 9D93D15D6A3913AB

```

原始数据M表示HEX为：`3132333435363738`，加密如下：

```
DES1_RESULT = Ek(M，K1)
DES2_RESULT = Dk(DES1_RESULT，K2)
C = Ek(DES2_RESULT，K3)

```

最终加密结果C为：`C63AABF759BDE968`

#### **解密举例**

设pinKey为: `9D93D15D6A3913AB4151C456A80841EF`，则:

```
K1 = 9D93D15D6A3913AB
K2 = 4151C456A80841EF
K3 = 9D93D15D6A3913AB

```

密文数据C表示HEX为：`C63AABF759BDE968`，解密如下：

```
DES1_RESULT = Dk(C，K3)
DES2_RESULT = Ek(DES1_RESULT，K2)
M = Dk(DES2_RESULT，K1)

```

最终解密结果M为：`3132333435363738`