四种常见对称加密算法

AES在密码学中又称Rijndael加密法,采用分组加密(分块加密或块密码)标准,是一种对称密钥算法。作为DES加密算法的替代出现。

AES加密

它将明文分成多个等长的模块(block),使用确定的算法和对称密钥,对每组分别加密解密。分组加密是极其重要的加密协议,应用领域从电子邮件加密到银行交易转帐,非常广泛。

AES和Rijndael加密算法并不完全相同(虽然在实际应用中两者可以互换),因为Rijndael加密算法,可以支持更大范围的分组和密钥长度,AES的分组长度固定为128位、密钥长度可以是128位、192位或256位,而Rijndael密钥和分组长度均可以是128,192或256位。加密過程中使用的密钥是由Rijndael密钥生成方案产生。

AES加密算法说明

分组加密包含两个成对的算法:加密算法E和解密算法D,两者互为反函数。

每个算法有两个输入:长度为n位的组,和长度为k位的密钥;两组输入均生成n位输出。将两个算法看作函数,K表示长度为k的密钥(密钥长度),P表示长度为n的分组,P也被表示为明文,C表示密文。

对于任意密钥K,EK(P)是输入组的一个置换函数,且不可逆地落在{0,1}n区间。例如,一个分组加密算法使用一段 128 位的分组作为明文,相应输出 128 位的密文。

而其转换则受加密算法中第二个输入的控制,也就是密钥k。解密算法类似,使用 128 位的密文和对应的密钥,得到原 128 位的明文。

大多数的分组密码在加密算法中会重复使用某一函数进行多轮运算,典型的轮数在4-32次之间,每一轮的函数R使用不同的子密钥Ki,由原密钥生成。

Blowfish加密

是布鲁斯·施奈尔(Bruce Schneider)于1993年开发的分组加密算法,是一种对称加密。

Blowfish加密算法能保证很好的加密速度,并且,目前为止没有发现有效地破解方法。目前,为止AES比Blowfish有更广的知名度。Blowfish算法用途广泛,意在摒弃DES的老化以及其他算法的强制捆绑。

Blowfish刚刚研发出的时候,大部分其他加密算法,是专利所有的或属于商业(政府)机密,所以发展起来非常受限制。Schneider则声明Blowfish算法的使用没有任何限制,任何国家任何人任何时候,都可以随意使用Blowfish算法。Blowfish 包括关键的几个S盒和一个复杂的核心变换函数。

IDEA加密

国际资料加密算法(International Data Encryption Algorithm,缩写为IDEA),是一种分组对称加密算法。

由James Massey与中国密码学家来学嘉设计,在1991年首次提出。这一演算法的提出,是为了取代旧有的资料加密标准(DES)。使用分组加密算法,64位资料块和128位的加密键。该加密演算法用以构建良好隐私密码(pretty good privacy; PGP)。

RC4加密

在密码学中,RC4(Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。

RC4是有线等效加密(WEP)中采用的加密算法,也曾是TLS采用的算法之一。有线等效加密虽然有弱点,但足以应对非专业人士的窥探。

由美国密码学家Ronald Rivest在1987年设计出来,由于RC4算法存在弱点,2015年2月所发布的RFC 7465规定,禁止在TLS中使用RC4加密算法。

RC4由伪随机数生成器和异或运算组成。RC4的密钥长度可变,范围是[1,255]。RC4一个字节一个字节地加解密。给定一个密钥,伪随机数生成器接受密钥并产生一个S盒。S盒用来加密数据,而且在加密过程中S盒会变化。由于异或运算的对称性,RC4加密解密使用同一套算法。