第7章 初等数据加密—对称加密算法
我们都有使用密码保护私密信息的经历,甚至可以说是习惯。我们往往不希望无关的人窥探我们的隐私,从孩童时代就知道用“密码日记本”记录自己的一些隐私。密码日记本无非是一个带锁的日记本。不管是读日记还是写日记都离不开这个密码。
上述情形就好比我们应用黑匣子,需要读写操作,需要同一套密钥。写操作伴随加密,读操作伴随解密。加密和解密操作使用同一套密钥,这就是对称加密算法的核心。
对称加密算法在Java实现层面上大同小异,本文挑选了几个具有代表性的算法做相应实现。
7.1 对称加密算法简述
对称加密算法是当今应用范围最广,使用频率最高的加密算法。它不仅应用于软件行业,在硬件行业同样流行。各种基础设施但凡涉及安全需求,都会优先考虑对称加密算法。
7.1.1 对称加密算法的由来
对于大多数对称加密算法而言,解密算法是加密算法的逆运算,加密密钥和解密密钥相同。如果我们把Base64算法改良,将其字符映射表作为密钥保存,就可以把这个改良后的Base64算法作为一种对称加密算法来看。当然,加密算法这样改良后的安全强度还远远不够,但足以让我们认识对称加密算法的特点。
对称加密算法易于理解,便于实现,根据加密方式又分为密码和分组密码,其分组密码工作模式又可分为ECB、CBC、CFB、OFB和CTR等,密钥长度决定了加密算法的安全性。有关对称加密算法相关理论知识,请阅读第2章相关内容。
对称加密算法发展至今已相当完备。以DES算法为例,由于密钥长度的不满足,衍生出了DESede算法(也称为TripleDES或3DES算法,翻译成中文是“三重DES”算法)。为了替代DES算法又有了AES(Rijndael)算法。此外,还有RC系列算法,包含RC2、RC4以及针对32位/64位计算机设计的RC5算法(细分为RC5-32和RC5-64,分别对应32位和64位计算机)。
除了上述算法,我们还常常会用到Blowfish、Twofish、Serpent、IDEA和PBE等对称加密算法。