将我的 public 密钥硬编码到 Java class 中是不是一个坏主意?

Would it be a bad idea to hard-code my public key in a Java class?

我有一个Java公司申请,将通过付费许可证激活。

应用程序将使用 public 密钥来解密使用私钥加密的许可证文件。 (And/or,应用程序将加密一些数据并将其提交到 Web 服务,然后使用服务器上的私钥对其进行解密)。

无论哪种方式,应用程序都需要有 public 密钥。

我正在考虑将 public 密钥文件的内容硬编码到 Java class 中并从那里读取。此外,我正在使用一个混淆器(Allatori)来进行字符串加密,因此硬编码的 public 密钥字符串将被混淆,因此使用反编译器不容易读取,所以我认为这是一个优势.

但是我不应该对 public 密钥进行硬编码而是将其作为文件传递到 class 路径中,这是否有充分的理由?

请给我一些建议,因为我是新手,可以使用一些建议,谢谢!

感谢评论中提供的大量信息,我的问题得到了很好的回答,并在此过程中学到了很多东西。

最初的问题是 “我不应该对 public 密钥进行硬编码而是将其作为文件传递到 class 路径中,这是否有充分的理由? “

答案是……是的,有充分的理由不在 Java class 中硬编码 public 键。也就是说,public 键应该被认为是一种资源,与 Java class 分开,因此从编码约定的角度来看,它可能不是一个好的形式。此外,将 public 键分开意味着您可以稍后更新 public 键,而无需重新编译和交付 Java 代码的新版本。

综上所述,将 public 键包含在 Java class 中在技术上是合理的,因为它符合我的目的,所以我确实采用了这种方法。 (具体来说,我喜欢这种混淆将 public 密钥作为加密字符串隐藏在 Java 代码中,只是为了在我的许可解决方案周围再增加一层晦涩难懂的东西;这只是惹恼不经意的人的又一个障碍黑客。)

感谢大家的帮助!