c# - 在 Windows 窗体应用程序 vb.net c# 中存储敏感数据的建议

标签 c# vb.net winforms encryption connection-string

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

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

  1. 对字符串进行哈希处理并将其保存在一个文件中,因此每次用户输入密码时,输入的密码都会被哈希处理并与哈希后的字符串进行比较

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

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

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


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

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

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

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

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

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

请随时写下有关我的问题的任何建议并提前致谢

最佳答案

尝试以只读权限在网络中使用散列密码保存您的文件。或者使用使用 unmaneged 代码 (c++) 编写的 dll

关于c# - 在 Windows 窗体应用程序 vb.net c# 中存储敏感数据的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37524656/

相关文章:

vb.net - 以编程方式在 Word 中创建表格

asp.net - 使用 VB.NET 从纯字符串解析 URL ?a=b 参数

c# - 如何使用 ProgressBar、Progress 和 IProgress<int> 显示任务的进度

c# - BackgroundWorker 阻塞问题——集成测试与真实应用不一致

c# - 如何在 HTML 表格上复制 "freeze pane"功能?

C# TestStack.White - 无法精确定位到我想要的按钮

vb.net - 检查日期是否介于或等于其他两个日期

c# - 如何解析 pdf 文件中的表格?

C++ 窗体 : Why doesn't the richtextbox update text instantly?

c# - 如何在 Picturebox 上获得滚动条