【问题标题】:How to give Forget password option for a password encrypted file?如何为密码加密文件提供忘记密码选项?
【发布时间】:2016-01-10 05:29:02
【问题描述】:

我创建了一个加密文件(.txt、.dox 等...)的实用程序。实用程序要求用户输入密码的文件加密时间。

问题

假设用户创建了 1000 个不同密码的加密文件并且忘记了他的某个文件的密码。他将如何恢复它?

我的想法

我应该将每个密码(加密)记录在某个位置以及文件的名称和大小,我们可以找到可以提供给用户的文件密码,但这里有一些问题:

  1. 可以有多个同名和大小的文件
  2. 用户可以重命名文件,这样我们就可以帮到你了
  3. 如果我们尝试仅通过大小来查找密码,那么可能会有许多大小相同的文件,那么这将不是为用户提供确切密码的好方法。

我也想过将整个密码日志通过他的注册电子邮件发送给用户,但后来我发现了这个LINK并改变了我的想法。

请求

向用户提供加密文件的确切密码的最佳方式是什么?

【问题讨论】:

  • 如果您可以将密码返回给用户,那么要求创建密码有什么意义?
  • 你是如何加密文件的?

标签: ios objective-c cocoa encryption


【解决方案1】:

使用 SHA-256 等哈希函数来识别文件。 iPhone6s 上的 Common Crypto 将在 ~ 2.3 毫秒内处理 1MB。

您需要仔细考虑攻击者可能如何使用密码恢复功能来选择文件的内容。

+ (NSData *)doSha256:(NSData *)dataIn {
    NSMutableData *macOut = [NSMutableData dataWithLength:CC_SHA256_DIGEST_LENGTH];

    CC_SHA256( dataIn.bytes, dataIn.length, macOut.mutableBytes);

    return macOut;
}

【讨论】:

  • 先生,您能否详细说明如何使用 SHA-256 来识别文件。此外,它是否适用于 500mb 到 1gb 的文件(只需确认是否有大小限制)。我是新手,拜托..请对我宽容一点。
  • SHA 是一个散列函数(安全散列算法)。您可以通过让它处理文件中的所有字节并生成一个 32 字节的散列来使用它。每次都会产生相同的哈希值,两个不同文件具有相同哈希值的可能性是:从不。没有大小限制,有时间成本,如答案中 iPhone5S 的速度约为 450 MB/秒。
猜你喜欢
  • 2012-07-25
  • 2016-02-14
  • 2011-05-24
  • 2012-12-20
  • 2013-05-17
  • 2011-08-26
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多