AES 256个字符长度

时间:2018-11-12 17:16:32

标签: php mysql codeigniter

我正在使用AES 256加密对数据进行加密,想知道如何限制加密文本的长度。如果我使用AES 256加密6个字符串,它将被加密大约100个字符。我想将此数据添加到表中,因此想知道最大长度,以便可以在php codeigniter中的表中设置约束。

$this->encryption->initialize(
                array(
                'cipher' => 'aes-256',
                'mode' => 'ECB',
                'key' => $key1
                )
            ); 

$this->encryption->encrypt($_POST['uname']);

1 个答案:

答案 0 :(得分:1)

给出最少信息的最佳猜测是,您将加密数据视为以null终止的字符串,并且由于加密不会使null终止加密的数据,因此null终止符恰好是内存中掉落了加密数据的事物。 / p>

以下假设ECB模式下为AES。

  1. AES不加密字符,而是加密数据字节。如果您尝试将加密的输出作为不正确的字符来处理,通常会产生错误。需要字符输出,通常需要使用Base64或十六进制对加密的数据进行编码。
  2. AES是一种分组密码,因此输出将始终是块长度的倍数,对于AES为16个字节。
  3. 如果输入的数据不是其块大小的精确倍数,则PKCS#7是常用的填充。
  4. 由于填充,使用AES加密的数据最多比输入大1个块长度。