我将在移动数据库上使用256位AES加密数据。
我的问题是,是否有一个特殊因素来乘以数据库字段大小?
实施例: 假设我允许大小为10 str,当它加密时大小上升大约x2-x3次。 所以我应该在现场使用至少25码的str。
是否有一个特殊的数字我可以将我的正常字段大小乘以找出最小的安全加密大小?
答案 0 :(得分:1)
好吧,明文的长度为P
,以字节为单位(例如,UTF-8编码的文本),B
是底层密码的块大小,您可以使用CBC作为操作方式和PKCS#7填充。在这种情况下,您将以字节为单位检索以下大小的密文(包括预先安装的IV):
C = B + P + B - P % B
现在将这些字节转换为十六进制字符,您只需乘以2:
H = C * 2
因此,对于低于值7F
的单个UTF-8字符,您将获得64个十六进制字符。
这可能不是您的预期。您可以切换到不需要填充的计数器模式加密。您可以使用其他唯一编号来导出IV。您可以将密文存储在二进制或基本64(每3个字节只需要一个额外的字符值)。总而言之,这里讨论的选择太多了。如果你需要考虑这个问题,最好继续构建加密函数。
如果你走得很远,你应该研究保留加密的格式,并使用大小不是位边界的字母。