Java 使一行代码难以阅读
我写了一个方法来检查客户序列号是否与我的硬编码号码匹配。有没有一种方法可以使代码尽可能难以阅读,以防不受欢迎的人获得代码 我在java工作 例如(伪代码) 如果(x!=y)跳出代码并返回错误Java 使一行代码难以阅读,java,obfuscation,Java,Obfuscation,我写了一个方法来检查客户序列号是否与我的硬编码号码匹配。有没有一种方法可以使代码尽可能难以阅读,以防不受欢迎的人获得代码 我在java工作 例如(伪代码) 如果(x!=y)跳出代码并返回错误 如果这有点奇怪的话,干杯,道歉让代码看起来复杂以避免被黑客攻击是没有帮助的 使已发布代码的控制结构混乱 e、 g在不同变量下的代码中的随机点输入数字,并在某个随机点使它们等于x和y 有一个问题。也许这些技巧可以帮助你(=)通过默默无闻来确保安全永远是个坏主意。你不需要回避它,但你不应该只相信它 使用启动服务
如果这有点奇怪的话,干杯,道歉让代码看起来复杂以避免被黑客攻击是没有帮助的 使已发布代码的控制结构混乱 e、 g在不同变量下的代码中的随机点输入数字,并在某个随机点使它们等于x和y
有一个问题。也许这些技巧可以帮助你(=)通过默默无闻来确保安全永远是个坏主意。你不需要回避它,但你不应该只相信它
使用启动服务时键入的密钥加密序列,或者只将序列指定为十六进制或base64,而不是ASCII。您可以实现其他方法,而不公开硬编码序列号,而不是试图使代码复杂化
尝试将硬编码的数字作为加密字节数组存储在某个永久位置。那样的话就不可读了。为了进行比较,请使用相同的算法加密客户端串行代码并进行比较 通常的方法是使用散列
根据定义,从散列中导出原始代码几乎是不可能的。您可以尝试SHA1或其他单向加密(MD5不太安全,但它相当不错)。不要这样做:
if (userPassword equals myHardCodedpassword)
这样做:
if (ENCRYPTED(userPassword) equals myhardcodedEncryptedpassword)
因此,代码读取器只能看到加密的(并且很难解密)值。似乎这只会让感兴趣的人更加好奇。无论如何,你可能希望混淆比较发生的位置,以防止一些恶意黑客替换字节码进行相反的计算
等于而不是notequals
;-)(无论如何,这更难)。