我有一堆AES256加密的ZIP容器(使用DotNetZip),我正在编写一个程序来帮助用户理解其中的内容。我会发布带有XML doc的“Launcher”程序,我也在加密“元数据”,所以在AES256中也可以这样说。为了方便起见,我正在考虑在XML文档中的强AES256字符串中加密各种(1-10 + zip文件)的密码(因此用户只需输入一次)。这令我感到不安,但我们所做的一些“可用性”测试表明人们不想输入密码7次。
因此,假设字符串在XML / dat /任何文件中完全加密,我在程序中绕道其他“因素”多少?我必须硬编码解密/ IV / salt / etc(或者至少将它传递给deypcrtion方法)不?
我一直在努力了解像DotNetCrack(http://www.dotnetcrack.com/)这样的东西可以轻松地从我的程序中获取。我知道没有什么是完美的,内存转储是一个很大的问题,但我想至少绕开那些非常简单的“脚本小子”类型的东西。
我看过安全字符串,但它似乎是一个愚蠢的解决方案,所以到目前为止你最终还是必须解密。
为清晰起见编辑 - ZIP文件是自解压缩程序,例如只是压缩文件包装到EXE中。它们可能是拉链,无论哪种方式无关紧要。我的程序只是为了帮助某人提取所有内容而无需单击每个内容并帮助他们浏览ZIP,这可能会让新手用户感到困惑。
我的所有程序都在阅读带有关于每个zip的“数据”的XML文件(例如zip001是“来自john smith等的信息等” - 但是zip文件名是类似于BOBSMITH_INFO_001.EXE(.zip)。
答案 0 :(得分:1)
绕道多少钱?这就是问题所在。当我们谈论obfuscation饼干和程序员之间的争斗时,基本上尽可能地结束。停止脚本小子的基本技术,如硬编码加密版本的密钥,并在使用前解密它应该工作,但再次取决于你的脚本小子的动机是多少!
表示你可以检查Reflector和ILDASM(在vs工具中),看看在几秒钟内找到任何硬编码的字符串!你也应该知道.net被编译成IL,这是一个非常高级别,因此易于阅读的中间语言。所以一个非常简单的混淆,比如XOR键和硬编码,即使是脚本也很容易跟踪。
对于解决方案,请使用多级加密。保持密钥在多个位置加密分割。甚至更好的尝试编写一个在运行时生成密钥的算法。在你完成所有这些之后,使用混淆器使事情进一步复杂化。
祝你好运。