PHP-AES标准Rijndael算法的介绍与实现

1.前言

AES( Advanced Encryption Standard )高级加密标准,又称 Rijndael加密法。它是由 美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准 。 该算法由比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字 而命名。AES标准支持固定分组128位,密钥长度可以是128位、192位、256位。

创新互联公司专注于企业营销型网站、网站重做改版、鹰潭网站定制设计、自适应品牌网站建设、H5高端网站建设电子商务商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为鹰潭等各大城市提供网站开发制作服务。

2.工作模式

我们知道,对明文进行加密的过程中,如果明文超过了分组大小,那么就需要进行切割处理,而AES提供给我们多种工作模式,分别是:ECB(电子密码本)、CBC(密文分组链接)、CFB(密文反馈)、OFB(输出反馈)、CTR(计数器),而我们今天只针对128位的明文进行加密解密处理,分组工作模式不在我们今天讨论的范畴。

3.介绍

3.1 状态矩阵

AES算法中的状态矩阵是垂直排列的,如下图所示。

明文第一步需要转换成状态矩阵,而初始密钥在进行扩展密钥之前也需要转化成状态矩阵。在对密文进行解密时,最后需要将状态矩阵还原为明文矩阵。

3.2 密钥扩展

密钥扩展会生成44组4个字节的轮密钥,每16个字节为1轮密钥,在进行轮密钥加的时候,需要将处理过的明文状态矩阵根据每轮的密钥进行加密处理。下面我们来看一个例子,假如初始密钥16位为: abcdefghijklmnop ,那么它的初始轮密钥如下所示:

接下来还需要生成40组W,计算公式如下:
当前文章:PHP-AES标准Rijndael算法的介绍与实现
本文URL:http://scyanting.com/article/dsogoph.html