关于在 Windows Form Application vb.net c# 中存储敏感数据的建议

Advice in storing sensitive data in Windows Form Application vb.net c#

我目前正在处理一个 Windows 应用程序项目,我在保护数据方面遇到了两个问题。

首先,我需要制作一个文件,将密码存储为字符串,用户每次加载主窗体时都应输入该密码,我尝试了很多方法,但每种方法都有一个问题:

  1. 散列字符串并将其保存在文件中,因此每次用户输入密码时,输入的密码都会被散列并与散列字符串进行比较

    问题:反编译应用程序让任何人都可以看到散列方法和文件位置,因此he/she可以创建具有任何字符串散列值(如 0000)的文本文件并替换该文件与我的应用程序文件,然后使用 0000 打开应用程序

  2. 使用自定义加密密钥的加密算法

    问题:反编译应用程序后可以访问密钥


另一个问题是关于应用程序中使用的在线MySql数据库的连接字符串,但我不希望任何用户看到连接字符串:

  1. 正在使用 DataProtectionConfigurationProvider 加密连接字符串

    问题:其他机器无法解密使用字符串

  2. 将连接字符串加密并保存在文件中,并在应用程序加载时解密并使用该文件

    问题: 反编译后可从源码中得知解密方法

除了混淆源代码之外,还有什么我可以使用的吗? 我的意思是 将这些敏感数据存储在一个文件中,该文件只能由我的应用程序 read/written ?

请随时写下有关我的问题的任何建议,在此先感谢

尝试以只读权限在网络上使用散列密码保存文件。或使用使用 unmaneged 代码 (c++)

编写的 dll