codeigniter 3.0中的AES-128输出字节

时间:2015-08-27 04:50:55

标签: php codeigniter encryption aes

根据codeigniter文档,AES-128的加密密钥必须设置为128位/ 16字节(16个字符)的随机字符串。我使用var_dump函数测试了我的输出

(假设我已经为配置文件设置了16个字符的密钥,并且已经加载了库)

我的代码:

$plain_text = 'Hello World';
              $encrypted = $this->encryption->encrypt($plain_text);
              var_dump($encrypted);
              var_dump($this->encryption->decrypt($encrypted));
              die();

输出 string(176)(出现176个字符的加密数据) string(11)Hello World

抱歉,我无法输入确切的加密数据,但我认为显示它是没有意义的。

我想知道加密输出是否完全正常,考虑到其大小(176字节)

1 个答案:

答案 0 :(得分:0)

AES是一种分组密码,因此需要padding

分组密码(与stream cipher相对)只能以预定的大小运行,并且必须填充较小的明文,以便在它可以对其进行操作之前达到该大小。

据说,176字节(11 x 16字节块)比11字节大很多,我的猜测是部分开销可能是因为codeigniter编码自己的信息(即结构化数据,如变量类型) ,加密之前的字符串长度等。

由于您能够使用相同的密钥解密密文,因此它可能不是实现中的错误并且按预期工作,但我无法说明它是否已正确安全地实施。