我用aes 256加密数据,想知道如何限制加密文本的长度。如果我用AES256加密6个字符的字符串,它会加密大约100个字符。我想在表中添加这些数据,以便知道最大长度,以便在php codeigniter的表中设置约束。
$this->encryption->initialize(
array(
'cipher' => 'aes-256',
'mode' => 'ECB',
'key' => $key1
)
);
$this->encryption->encrypt($_POST['uname']);
1条答案
按热度按时间laik7k3q1#
给定最小信息的最佳猜测是,您将加密数据视为以null结尾的字符串,并且由于加密不会以null结尾加密数据,因此null结尾符正好位于内存中,用于删除加密数据。
以下假设aes处于ecb模式。
aes不加密字符,它加密数据字节。如果试图将加密输出作为不正确的字符处理,通常会产生错误。如果需要字符输出,则需要对加密数据进行编码,通常使用base64或十六进制。
aes是一种分组密码,因此输出总是块长度的倍数,aes为16字节。
如果输入不是需要填充的块大小的精确倍数,则pkcs#7是通常使用的填充。
由于填充,用aes加密的数据最多比输入大一个块长度。