【问题标题】:Is this a bad encryption practice?这是一种不好的加密做法吗?
【发布时间】:2012-12-31 13:02:48
【问题描述】:

所以我正在尝试加密我的文件和身份验证密码。 我目前正在使用 (A)Password Derived Byte[]、(B)Clear Byte[] 和强 (C) 字符串对其进行加密。

在我的程序中,我在其中硬编码了 (A)Password Derived。我还对 Clear Byte[] 的 (B)Encrypted 版本和 string 的 (C)Encrypted 版本进行了编码。

要解密我的文件/密码,我必须: 1. 使用 (A)Password Byte 解密 (B)Clear Byte[] 的加密版本。 2. 使用 (A)Password Byte 解密 (C)String 的加密版本。 3. 使用 (B) Clear Byte, (C) Clear string 来解密文件/密码。

如果这不是一个好的做法,有人可以提供我应该使用的建议/方法吗? 我正在用 c# 开发它

【问题讨论】:

  • 您最好实际发布代码。如果它是您想要检查缺陷/最佳实践等的工作代码,那么使用 Code Review 而不是 Stack Overflow。
  • 我用的是这个例子:codeproject.com/Articles/5719/…
  • 请更详细地描述您要在应用程序中执行的操作。您想用密码或其他方式加密您的文件吗?
  • 我想加密一个只能由我的程序打开和读取的文件。我还想通过服务器进行身份验证,我想我会在身份验证上使用散列。

标签: c# security authentication encryption cryptography


【解决方案1】:

如果您想要只有您的程序可以读取的内容,那么您应该使用 DPAPI。在 C# 中,这包含在 ProtectedData 类中。

您的代码不安全,该代码很容易被逆向工程和解密。使用 DPAPI 意味着只有您的用户才能访问您在应用程序中保护的数据。

您像这样使用protecteddata 类:

ProtectedData.Protect( data, s_aditionalEntropy, DataProtectionScope.CurrentUser );

【讨论】:

  • 我应该指出,只有 用户 可以读取这些数据,但是另一个使用 salt 的应用程序可能会取消保护数据。但这比您的原始代码更安全。
  • 我需要通用的东西,这意味着用户可以保存数据,但也可以在另一台计算机上读取它。
【解决方案2】:

我决定采用上述我自己的方法,因为没有人能够发布我可以使用的答案。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
  • 2011-12-15
相关资源
最近更新 更多