我在网上搜索,包括SO:关于在散列和存储之前需要加密密码的讨论很多。
如果密码用于计算用于加密的密钥(“基于密码的加密”):如果您不将密码存储在al?
,该怎么办?假设:
用于加密
用于解密
我的问题:
如果没有存储除加密文件本身以外的任何内容,在对主密码进行哈希处理之前,有什么好处吗?
考虑:
如果盐丢失/损坏,用户将无法再解密该文件
如何在步骤3中检查成功解密:这是否需要知道部分文件内容?
答案 0 :(得分:3)
如果您没有存储主密码,则无需加密。如果您重复使用主密码生成大量一次性密码,则需要根据需要加密存储并解密。
Salting用于长期存储必须多次匹配的用户密码,以便具有相同密码的人不具有相同的哈希值,这将有助于窃取该文件的攻击者。
Salt用于长期存储中的散列,IV用于使用CBC模式进行加密(或CTR模式,也可称为nonce)。
至于检查您的文件是否已正确解密,请确保使用像PKCS7这样的填充。当最后一个块被解密时,将检查填充以确保其格式正确。如果解密失败,则填充将无法正确格式化,您应该收到“填充失败”错误。