codeigniter 3.0 中的 AES-128 输出字节
AES-128 output bytes in codeigniter 3.0
根据 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个字符的加密数据)
字符串(11) 你好世界
抱歉,我无法放置准确的加密数据,但我认为显示它没有意义。
考虑到它的大小(176 字节),我想知道加密输出是否是完全正常的输出
AES 是分组密码,因此 padding 是可以预期的。
分组密码(与 stream cipher 相对)只能在预先确定的大小上运行,并且必须填充较小的明文以达到该大小,然后才能对其进行运算。
话虽如此,176 字节(11 x 16 字节块)比 11 字节大很多,我猜测部分开销可能是因为 codeigniter 编码了自己的信息(即结构化数据,例如类型变量的长度,字符串的长度等)在加密之前。
由于您可以使用相同的密钥解密密文,因此它可能不是实现中的错误并且正在按预期工作,但我不能说它是否正确且安全地实现了。
根据 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个字符的加密数据) 字符串(11) 你好世界
抱歉,我无法放置准确的加密数据,但我认为显示它没有意义。
考虑到它的大小(176 字节),我想知道加密输出是否是完全正常的输出
AES 是分组密码,因此 padding 是可以预期的。
分组密码(与 stream cipher 相对)只能在预先确定的大小上运行,并且必须填充较小的明文以达到该大小,然后才能对其进行运算。
话虽如此,176 字节(11 x 16 字节块)比 11 字节大很多,我猜测部分开销可能是因为 codeigniter 编码了自己的信息(即结构化数据,例如类型变量的长度,字符串的长度等)在加密之前。
由于您可以使用相同的密钥解密密文,因此它可能不是实现中的错误并且正在按预期工作,但我不能说它是否正确且安全地实现了。