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