如何安全地在源代码中存储密码?

时间:2019-02-10 07:39:18

标签: c#

我想在我的应用程序中存储在线服务的密码,偶尔将日志数据传输到该服务。我的问题是如何以相对安全的方式将密码存储在代码中,从而很难通过逆向工程找到它。首选程序是什么?

编辑:用户未输入任何密码。密码是固定的,比方说password123,我必须使用该密码登录在线服务,以使用户无法通过反向工程获得此密码的方式来传输数据。有没有一种方法可以不对其进行硬编码并将其隐藏在代码中?

2 个答案:

答案 0 :(得分:4)

理想情况下,您不应将密码存储在客户端计算机上运行的源代码中。

对于这种情况,仍然可以通过在执行所需的身份验证/授权之后使用一些API调用从服务器检索密码来避免硬编码。

如果您将密码存储在客户端运行的代码中,则无论进行混淆/加密/编码如何操作,仍然可以使用逆向工程来提取密码。

编辑:

  

厚客户端-所有逻辑都在客户端。没有托管服务器。它   只是为了保护我的电子邮件而租用服务器会被夸大   密码。真的没有其他解决方案吗?连接字符串如何   到数据库,然后在其他应用程序中防止反向   工程?

如上所述,您不能完全保护它,但是很难破解,因此可以尝试执行以下步骤。

  1. 加密密码。
  2. 将加密密钥存储在不同位置的多个部分中, 就像代码文件中的一部分,配置文件中的一部分和另一部分一样 用户注册表中的一部分。
  3. 混淆您的代码。

答案 1 :(得分:1)

因此,您有一个String,并且希望在进行逆向工程时将其隐藏。

我建议使用MD5算法对您的String(Password)进行哈希处理,并将哈希存储在源代码中,并且仅将输入密码的哈希结果与您所存储的密码进行比较。

根据评论

结果证明MD5不够加密!

看看this链接。