最简单的方法是什么? XOR 0x80可能太明显但可以使用。
最简单的方法是采用Windows文件名(/ \和其他字符是非法的)并加扰它们以便没有人知道原始文件名?我也想撤消这个。
我正在认真考虑文件名,只是对它们进行异或
答案 0 :(得分:3)
听起来你有一个传统的数据隐藏工作:你有想要防止窥探的信息(文件名列表)。据推测,您不信任的人可以获得信息(否则为什么要隐藏它?)但是它仍然需要可用于您的程序。
据推测,您不希望将数据放入名为“important-file-names.txt”的文件中;你可能已经把它嵌入你的程序中了。这还不够,因为坏人可以运行strings
并找到文件名。有很多方法可以对数据进行编码,但如果您的程序需要使用数据,那么它需要有一种解码数据(和解码密钥)的方法。你编码/解码数据的方式并不重要 - 最终你的程序将在内存中拥有真正的文件名,并希望对文件名做些什么(可能打开它们,读/写它们,也许删除它们) - - 那时你被搞砸了。这些技术因操作系统而异,但始终可以检查给定程序使用的资源,无论是文件,网络连接,还是RAM。一个足够坚定的人会找到你的信息。
是的,您可以隐藏数据,但真正的问题是:您希望数据保持隐藏多长时间?
如果您希望所做的只是阻止临时用户进行撬动,那么使用非文本字符串的键的简单XOR可能会起作用。除此之外,你所做的只是试图让一位专家放慢速度,而这位专家可能比你更擅长。
[添加了对'simple]的更多解释
最简单的密码是替换密码,其中每个纯文本字母映射到不同的密文字母。其中最古老的是所谓的凯撒密码,其中密文只是纯文本,字母移动了两个字符(A-> C,B-> D,C-> E),这样当加密时,HELLO成为IGNNP。替换密码的问题在于,并非所有字母在单词中均匀使用,并且并非所有单词在句子中均匀使用。通过分析给定密文中的字母和单词的模式,您可以推导出纯文本。 (每日密码以这种方式工作。)如果您使用单个字节(0x80或0x96)对纯文本中的每个字母进行异或,则它与简单密码具有完全相同的效果。
所以下一个更好的密码是你使用许多不同密码而不是只有一个密码的密码。通过使用密钥并使用密钥的第一个字母对纯文本的第一个字母进行编码,使用密钥的第二个字母对纯文本的第二个字母进行编码,如果密钥长于消息,则将密钥包裹起来,则会稍微困难一些密码。
plain text => THIS IS A TEST OF THE EMERGENCY BROADCAST SYSTEM
message key => JUBI LE E JUBI LE EJU BILEEJUBI LEEJUBILE EJUBIL
cipher text => EDLC VY G EAVD BL ZSA HWRXMPJFI OXULZFKFZ YJOWOZ
我正在使用简单的字母轮换方案并跳过空格以使其易于理解。在实践中,您不会跳过空格,您将使用更长的非字母键,并且您将使用更复杂的编码功能。 XOR是一种流行的编码功能,因为它是对称的。您希望使用非ASCII密钥,因为您希望在二进制可执行文件中混合使用某些内容。它还有更高的机会生成不是简单文本字符串的密文。正如我之前所写,一个真正坚定的攻击者不需要破解你的密码 - 他会破坏你的程序;这只是为了让业余爱好者远离。
答案 1 :(得分:0)
“所以没有人知道”/“EASIEST”?有两个不同的方向。
稳固的加密方案听起来是您最好的选择。默默无闻的安全性很少是一个好主意。