我正在寻找混淆以下c#/ silverlight源代码的方法:
if (searchBox.Text.Equals("string literal")){
MessageBox.Show("another string literal");
}
到目前为止,我所能提出的隐藏它是将字符串编码为ascii ...
的数组我想要的只是源代码不可读,这是一个复活节彩蛋。安全不是我的首要任务。
我不希望知道复活节彩蛋的存在。我试图模糊程序流程,因此看起来没有像
这样的代码行if (specialcase)
doEasterEgg();
我已经看到了类似于混淆的c竞赛的东西,其中hello world变成了globbidy gook。人们都知道c#的相似之处吗?
答案 0 :(得分:4)
您想要保护什么?
将控件的文本值传输到服务器?在这种情况下,任何非加密技术的任何“混淆”都很容易被一个有动力的攻击者克服。你应该研究encrypting your strings,而不是混淆它们。
如果您希望对源代码本身进行模糊处理,那么您真的应该让a third party tool handle it。你可能自己发明的任何东西很容易被反向发明。
编辑:如果您只想隐藏复活节彩蛋,请使用ROT13怎么样?
编辑2 :如何为他们分配误导性常量并在误导性命名的不同静态类中引用它们?
// in other source file ValidateInput.cs
public const VALID_STRING = "secret";
public class ValidateInput {
public static bool Validate(string srcText)
{
return srcText == VALID_STRING;
}
public static void LogicValidSearch()
{
return;
}
}
//In your main application
if (ValidateInput.Validate(searchBox.Text)) {
ValidateInput.LogValidSearch();
}
答案 1 :(得分:1)
这里没有足够的代码来有效地进行混淆。您唯一的选择是散列“字符串文字”的值并加密“另一个字符串文字”的值。这种技术不安全,因为您必须公开加密方法。