这个问题更普遍地来自建设性的观点和实现,但我将不胜感激例如或与示例联系(不仅是理论)。
思路如下:
- 一切都应该在本地完成。
- 任何库都是允许的,但整个程序应该是可移植的,因此省略不可移植的花哨的东西。
- 平台 - Win7+
- 完全没有尺寸限制。
- 越安全 - 越好。
- WPF。
不要问为什么,以上所有^都是必须的和要点。
现在更接近点本身。所以程序工作流程和数据管理应该看起来像:
- 用户启动混淆、单实例等(您可以在示例中省略它) WPF exe。
- 用户选择文件(如果已经存在,它将在保存时被覆盖,否则将在保存时创建)(您也可以省略此文件)。
- 现在用户提供加密所需的所有数据(例如,AES - 密钥和 IV)(加密是 UP 讨论 - 让我知道您认为哪个更适合我以及为什么,当然,在阅读整面文本之后,谢谢),然后按继续并从文件中读取加密数据(如果选择了文件)。
在继续之前,您需要了解数据的结构。(注意:数据表示和持有者,序列化等可供讨论,但不是结构本身)为了更好的可视化,我将在字典中展示这个概念:
Dictionary<Tuple<string, string, string>, Dictionary<string, string>>
- 所以元组值就像三个同样重要的字符串,应该从文件中一次全部加载(我知道我要进一步讨论的事情并不完全是它们的工作方式,但正如我已经说过的那样^字典是只是为了可视化和易于解释,数据管理是 UP 的建议)。
- 用户将被授予 3 个搜索文本框,他应该能够一次搜索这 3 个中的任何一个或全部,并以表格/列表的形式查看结果(我知道,我知道现在数据集看起来像去,但如果一切都那么简单,我不会请求你的帮助)。此时,用户应该能够为该字典创建新的 KeyValue 对并将结果保存回来,以便将其解密并附加/覆盖或写入文件(如果是新的)。
- 现在,当用户对结果感到满意时,他可以选择他需要的东西并继续 - 现在对于该选定的密钥,所有值的密钥都是从加密文件加载的,但其各自的值不是。所有这些键都表示在某种列表中。
现在用户可以再次滚动浏览它,选择 Key 并按下 4 个按钮之一:
Delete - 删除键和值,但保留元组。
复制 - 只需从文件中加载相应的值并将其放入剪贴板。
编辑 - 加载相应的值并允许编辑键和值。
新建 - 创建新的 KeyValue 对。
在任何给定时间,用户都可以按保存并将当前状态保存到加密文件中。或另存为另一个文件(因此在这种情况下,它应该复制该文件并修改它,而不是获取所有值)。
- 用户可以来回添加和修改值。
- 当用户对结果感到满意时,他会关闭应用程序并结束文本墙。
而且我应该将所有加载的值存储在安全字符串中还是有更好的东西?(因此某些第三方程序无法从内存中读取它,我在过去开发了某种安全措施,防止调用应用程序或注入,但仍然 - 安全字符串或其他东西?)。
感谢所有阅读这部分内容的人。如果您有任何问题或不理解我的问题的某些部分 - 请告诉我,我会尽力详细说明或解释得更好,再次感谢。
编辑 1:好的,亚历克斯我会尝试为您制作tl/dr:
第 1 部分 - 我应该以什么方式部分解密然后反序列化文件中的一些数据块,然后需要从文件中获取其他值并需要保存更改/添加回来。推荐任何东西。
第 2 部分 - 保护内存中加载的数据免受第三方应用程序影响的最佳方法。