AES加密数据的长度

时间:2018-11-16 20:53:31

标签: asp.net vb.net aes

我有一个需要加密后存储在数据库中的数据,加密之前数据的最大长度为50个字符(英语或阿拉伯语),我需要使用AES-128位对数据进行加密并存储在数据库中输出(base64string)。

如何知道加密后的数据长度?

1 个答案:

答案 0 :(得分:0)

尝试使用指定的算法,块大小,IV大小尝试一下,然后查看输出的大小:-)

首先,它取决于输入文本的编码。是UTF8吗? UTF16? 假设使用UTF8,则每个字符1字节意味着向加密算法输入50字节的数据。 (如果为UTF16,则为100字节)

然后,您将填充到算法的块大小。 AES,无论密钥大小如何,都是16字节的块。因此我们将被填充为64字节(对于UTF 16,则为112字节)

然后,我们需要存储IV和标头信息。因此(通常,使用默认设置/ IV大小)又是16个字节,所以我们是80个字节(对于UTF16,则为128个字节)

最后,我们将编码为Base64。我假设您想要字符串长度,因为否则将其变成字符串是浪费的。因此,Base 64使用以下公式对字符串进行膨胀:Ceil(bytes / 3)*4。因此,对于我们来说,Ceil(80/3)= 27 * 4 = 108个字符(对于UTF 16,则为172个字符)

同样,这全都取决于您对加密方式,文本编码方式等的选择。

在依靠这些数字进行有用的处理之前,我会尝试使用您的方案。