【发布时间】:2011-04-12 14:45:32
【问题描述】:
最近开始在我的应用程序中使用密码学,我发现自己对输入文本长度和它产生的密文之间的关系感到困惑。在应用密码之前,很容易确定数据库列的大小。但是,现在列大小略有不同。
两个问题:
- 我是否正确地假设这是由于我的输入填充,所以它符合密码的要求?
- 有没有办法根据输入的最大长度准确预测密文的最大长度?
对于奖励积分:我应该将密文 base64 编码存储在 varchar 中,还是将其保留为原始字节并将它们存储在 varbinary 中?将字节存储在我的数据库中是否存在风险(我正在使用参数化查询,所以理论上意外破坏转义应该不是问题)?
TIA!
补充:我使用的密码是 AES/Rijndael-256 - 这种关系是否因可用算法而异?
【问题讨论】:
-
为什么需要指定最大长度?这不是 80 年代 - 数据库支持具有较大或不存在长度限制的字段已经有一段时间了。
-
性能和所需的存储空间更少。 TEXT 和 BLOB 字段非常棒 - 但对于少量数据(我的意思是,我们正在谈论加密密码......不是 XML 数据或小说的大块)开销似乎无关紧要。 TEXT 和 BLOB 存储在数据库中与它们所属的记录不同的区域中,从而使您的数据库引擎执行两次读取而不是一次读取。
标签: php cryptography mcrypt