我正在创建一个存储用户多个密码的应用程序。第一个用户必须提供他/她的用户名和密码,登录成功后,他将获得所有已保存的密码。
我使用的是md5加密方法。我已成功将md5集成到我的登录模块中。但问题是,如何加密存储的密码(在文件中),因为没有合法的方法来解密md5哈希。请建议一个算法。
非常感谢任何帮助!
答案 0 :(得分:3)
您可以使用AES算法
以下文章可以帮助您入门:
Keep Your Data Secure with the New Advanced Encryption Standard
高级加密标准(AES)是美国国家研究院 加密的标准和技术规范 电子数据。它有望成为公认的手段 加密数字信息,包括财务, 电信和政府数据。本文介绍了一个 AES概述并解释它使用的算法。包括一个 完整的C#实现和加密.NET数据的示例。后 阅读本文,您将能够使用AES加密数据,测试 基于AES的软件,并在您的系统中使用AES加密。
答案 1 :(得分:3)
您可能希望使用AES或3DES等对称加密算法。 MD5不是加密,它是哈希,并且实际上没有保留原始密码。
答案 2 :(得分:1)
MD5不是加密算法。这是一个one-way hash。单向散列算法适用于对用户进行身份验证,因为您只对其输入的密码进行散列(并将其与保存的散列进行比较)。您无法解密哈希并显示其密码。
答案 3 :(得分:1)
我正在创建一个存储a的多个密码的应用程序 用户。第一个用户必须提供他/她的用户名和密码,以及 成功登录后,他将获得所有已保存的密码。
由于您使用的是C#,我假设您正在使用Windows而不是Mono项目。首先,用户在登录时证明了他/她的身份,因此无需再次要求他们这样做。
其次,使用Data Protection API (DPAPI)。它是在Windows系统上存储用户机密的标准方法。 (参见Writing Secure Code,第9章,第305页)。在早期版本的.Net上,您需要互操作。在.Net(3.5,IIRC)的更高版本上,可以通过CLR获得。
最后,MD5已损坏,因此不应将其用于加密目的。 NIST建议使用112位的安全级别(cf,Special Publication 800-57)。同上ECRYPT。
如果必须丢弃DPAPI,请使用SHA-224或更高版本作为基于密码的密钥派生函数的哈希值。使用3密钥TDEA,AES,Camellia等加密文件。使用经过身份验证的加密模式(EAX,CCM,GCM)来检测篡改。如果您没有经过身份验证的加密模式,则需要使用CMAC或HAMC自行添加真实性保证(DPAPI会为您执行此操作)。
杰夫