一、背景
需求是对文件内容加密解密,对称秘钥方式有DES、3DES等方法,这样加密方与解密方可以双方约定好秘钥就能完成文件的安全传输;
二、相关知识
2.1 对称加密算法DES
概念:DES数据加解密就是将数据按照8个字节为单位进行DES加密或解密得到一段8个字节的密文或者明文,不足8个字节的以0x00或0xFF进行补齐;
应用场景:DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。
2.2 ECB、CBC、CFB、OFB模式的区别
- ECB:Electronic Code Book,电子密码本模式,最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用;关键在于各段分组数据是独立计算的,加密的最小单位仍然是8个字节;
- CBC:Cipher Block Chaining,密码分组链接,明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。CBC加密后的密文是上下文相关的,但明文的错误不会传递到后续分组,但如果一个分组丢失,后面的分组将全部作废(同步错误)。CBC则是对各段分组数据之间有所关联,可以理解为比ECB多了异或运算的步骤;
- CFB:Cipher FeedBack,密码反馈,类似于自同步序列密码,分组加密后,按8位分组将密文和明文进行移位异或后得到输出同时反馈回移位寄存器,优点最小可以按字节进行加解密,也可以是n位的,CFB也是上下文相关的,CFB模式下,明文的一个错误会影响后面的密文(错误扩散)。
- OFB:Output Feedback,输出反馈,将分组密码作为同步序列密码运行,和CFB相似,不过OFB用的是前一个n位密文输出分组反馈回移位寄存器,OFB没有错误扩散问题。
2.3 3DES算法
3DES算法顾名思义就是3次DES算法,其算法原理如