隐藏源代码中的密码内容

有谁知道如何在j2me程序的源代码中隐藏密码内容? 即所以人们不能将“DBT”看作是读取源代码的密码。

public void validateUser(String user, String Password) { if (user.equals("N0203251") && Password.equals("DBT")) { switchDisplayable(null, getContinue()); } } 

正如其他人所说。 存储哈希值,但您仍然需要使用强密码或自动猜测器会找到您正在使用的密码。

但是,请注意:

如果您的攻击者可以访问源代码,他/她/它可以更改存储的密码哈希值或只删除密码检查。

因此,除非您可以validation正在运行的代码的完整性,否则此方法几乎没用,这很难

当它归结为它时,你已经为程序写了一个后门。 这是一件坏事 – 不要这样做。

就像其他人所说的那样,你可以通过使用哈希来做得更好,但是遗漏了一些关键的东西。 当有人猜到密码时,他们会知道每个已安装软件副本的密码。 由于密码是硬编码的,因此没有人能够更改或撤销密码,因此您将在程序中插入一个无人能消除的后门。 如果你依赖于与其他资源进行任何通信的密码,你就无法改变它 – 至少,没有大量的额外工作。

您应该做的是将密码放在外部位置,例如硬件安全模块,密码文件或数据库表。 然后,实现完整的密码更改和轮换机制 – 老实说,这应该与您在所有密码中使用的机制几乎相同。

您可以存储密码的哈希值(MD5 / SHA1),并将其与提供的密码的哈希值进行比较。

确保从外部计算哈希值,以避免在可执行文件中的任何位置提到原始密码。

使用哈希密码的函数 – 在源代码中保留密码的哈希值,而不是密码本身。

该页面的引用:

相关的应用程序是密码validation。 密码通常不以明文forms存储,原因显而易见,而是以摘要forms存储。 为了validation用户,对用户呈现的密码进行散列并与存储的散列进行比较。 这有时被称为单向加密。

如果要将应用程序存储在用户的移动设备上,您可以做的最好的方法是尝试隐藏密码。 我建议做一些哈希算法(可能是SHA1)或密钥派生算法,如PBKDF2,并存储结果而不是与明文密码进行比较。

存储哈希而不是密码购买你绝对没有。 由于现在是用于validation而不是密码的散列,因此读取源代码(或反转目标代码)将显示散列并允许攻击者进行身份validation。

这些问题的答案总是一样的。 如果您使用硬编码的客户端机密,无论您做什么,都无法实现任何可衡量的安全性。 你能做的最好的就是混淆,直到你得到温暖的模糊感觉它已经足够好了。