我正在使用 PyCrypto 将一些文件存储在 SQLITE 数据库中。
我正在使用 4 个字段:
文件名,
文件的长度(以字节为单位)
文件的 SHA512 散列
加密文件(使用 AES,然后使用 base64 转换为 ASCII)。
我需要所有字段来显示有关文件的一些信息而不解密它。
问题是:这样存储数据安全吗?
例如,ZIP 文件或可执行文件的第一个字符总是相同的,如果您已经知道文件的哈希值和长度……是否可以解密文件,也许是部分解密?
如果它不安全,我如何存储有关文件的一些信息以在不解密文件的情况下为文件编制索引? (长度、散列、名称、标签等信息)
(我用的是python,但是你可以用任何语言举例)
最佳答案
使用 AES 加密的数据与普通数据具有相同的长度(提供或采用一些 block 填充),因此放弃原始长度不会损害安全性。 SHA512 是一种强加密散列设计以提供有关原始内容的最少信息,因此我在这里也看不到问题。
因此,我认为你的方案是相当安全的。它“暴露”的任何信息都可以忽略不计。无论如何, key 管理可能会是一个更大的问题。
关于python - 将加密文件存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919819/