对称密钥算法(Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。事实上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通信联系。与公开密钥加密相比,要求双方获取相同的密钥是对称密钥加密的主要缺点之一。
常见的对称加密算法有 AES、ChaCha20、3DES、Salsa20、DES、Blowfish、IDEA、RC5、RC6、Camellia。对称加密的速度比公钥加密快很多,在很多场合都需要对称加密。
对称密钥密码体制从加密模式上可分为序列密码和分组密码两大类。序列密码一直是军事和外交场合使用的主要密码技术之一,它的主要原理是通过有限状态机产生性能优良的伪随机序列,使用该序列加密信息流,得到密文序列。分组密码的工作方式是将明文分成固定长度的组,如 64 比特一组,用同一密钥和算法对每一组加密,输出也是固定长度的密文。
对称性的加密算法包括美国标准 56 位密钥的 DES,Triple-DES,3DES,变长度密钥的 RC2 和 RC4,瑞士人发明的 128 位密钥的 IDEA 等。DES(Data Encryption Standard)是由 IBM 公司开发的最著名的数据加密算法,它的核心是乘积变换。美国于 1997 年将其定为非机密数据的正式加密标准。
对称加密算法有哪些对称密钥:DES TripleDES 算法
DES 算法把 64 位的明文输入块变为数据长度为 64 位的密文输出块,其中 8 位为奇偶校验位,另外 56 位作为密码的长度。首先,DES 把输入的 64 位数据块按位重新组合,并把输出分为 L0、R0 两部分,每部分各长 32 位,并进行前后置换,最终由 L0 输出左 32 位,R0 输出右 32 位,根据这个法则经过 16 次迭代运算后,得到 L16、R16,将此作为输入,进行与初始置换相反的逆置换,即得到密文输出。
DES 算法具有极高的安全性,到目前为止,除了用穷举搜索法对 DES 算法进行攻击外,还没有发现更有效的办法,而 56 位长密钥的穷举空间为 2^56,这意味着如果一台计算机的速度是每秒种检测 100 万个密钥,那么它搜索完全部密钥就需要将近 2285 年的时间,因此 DES 算法是一种很可靠的加密方法。
对称密钥:RC 算法
RC4 算法的原理是“搅乱”,它包括初始化算法和伪随机子密码生成算法两大部分,在初始化的过程中,密钥的主要功能是将一个 256 字节的初始数簇进行随机搅乱,不同的数簇在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,将得到的子密钥序列和明文进行异或运算(XOR)后,得到密文。
由于 RC4 算法加密采用的是异或方式,所以,一旦子密钥序列出现了重复,密文就有可能被破解,但是目前还没有发现密钥长度达到 128 位的 RC4 有重复的可能性,所以,RC4 也是目前最安全的加密算法之一。
对称密钥:BlowFish 算法
BlowFish 算法是一个 64 位分组及可变密钥长度的分组密码算法,该算法是非专利的。
BlowFish 算法使用两个“盒”:pbox[18]和 sbox[4256],BlowFish 算法有一个核心加密函数。该函数输入 64 位信息,运算后以 64 位密文的形式输出。用 BlowFish 算法加密信息,需要密钥预处理和信息加密两个过程。BlowFish 算法的原密钥 pbox 和 sbox 是固定的,要加密一个信息,需要选择一个 key,用这个 key 对 pbox 和 sbox 进行变换,得到下一步信息加密所用到的 key_pbox 和 key_sbox。
BlowFish 算法解密,同样也需要密钥预处理和信息解密两个过程。密钥预处理的过程和加密时完全相同。信息解密的过程就是把信息加密过程的 key_pbox 逆序使用即可。