c# - 在哪里存储 C# 应用程序的 key

标签 c# encryption

还有类似的问题 How to Manage Key in a Symmetric Algorithm Where to store a secret key to use in a SHA-1 hash?

我的问题是一样的,但我想问不同的问题

我有 C# 应用程序。我正在加密应用程序中的一些数据。对于加密,我使用 key 或密码。解密也需要同样的东西。

在应用程序中的何处/如何存储此 key 或密码?从反射中很容易查看字符串密码。我可能会使用一些组合来生成密码,但一些聪明的人可以通过一些努力猜到。

是否有任何安全的方法来存储或管理应用程序中用于加密数据的 secret 密码?

最佳答案

我怀疑是否有任何保证安全的方式来存储 key 。最终,您的程序必须能够访问 key ,破解者可以通过逆向工程轻松弄清楚这是如何发生的,并将该字符串重定向到他们想要的任何地方。

您最好的选择是:

  • 尽可能混淆 key 。这使得访问“ key ”变得更加困难,但并非不可能(见上文)。与其将其存储为字符串,不如使用函数生成它,或者使用种子并通过函数传递它以获取 secret 字符串。

  • 如果您的用例允许,请使用公钥/私钥对。只有当您希望您的应用程序加密数据,将其发送到您的服务器,然后您想要解密它时,它才有效。在这种情况下,您将公钥嵌入到应用程序中(黑客是否发现这一点并不重要),并将私钥留给您自己或您的服务器。

关于c# - 在哪里存储 C# 应用程序的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13579119/

相关文章:

java - 如何在 Java 中加密/解密文件?

sql-server - 加密字段的部分搜索

c# - 如何通过派生类设置基类的所有属性

c# - 从中间件发送 JSON 响应

c# - 使用 LINQ to JSON 将 JSON 反序列化为字典

c# - 加密和 JSON 序列化一个对象

c# - 如何在c#中动态添加文本到span控件

c# - FluentValidation IRuleBuilderOptions 扩展方法 - 仅在值存在时运行正则表达式验证器

php - 我是否正确使用了 PHP 的 crypt() 函数?

email - 加密邮件测试数据集