codeigniter 3.0中的AES-128输出字节


AES-128 output bytes in codeigniter 3.0

根据编码器文档,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();

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

对不起,我不能把确切的加密数据,但我认为显示它是没有意义的。

我想知道如果加密输出是完全正常的输出考虑到它的大小(176字节)

AES是分组密码,因此需要填充。

分组密码(与流密码相反)只能在预先确定的大小上操作,并且必须填充较小的明文才能达到该大小,然后才能对其进行操作。

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

由于您能够使用相同的密钥解密密文,因此它可能不是实现中的错误,并且正在按预期工作,尽管我不能说它是否实现正确和安全。