我正在编写一个连接到服务器并读取给定队列中的消息的Java类.
我想保护用户名和密码,它现在在源代码中显示为纯文本.
我想知道的是,有什么好办法呢?如果我在文本文件中加密用户名和密码,我是否需要以明文形式存储访问此文件的任何源代码中的密钥?然后决定使用我的班级的任何其他人都可以访问这些字段.
没有人可以输入密钥的提示,因为该类将由系统自动使用.
编辑:这将成为一个java lib文件.但那些很容易被反编译,因此基本上都是原始的类文件,对吧?并且受到保护的人是其他系统的开发人员,他们将获得对此lib文件的访问权限.
我的最终目标:是让用户名和密码字符串在任何地方都不显示为纯文本,并且尽可能难以破解.
这是不可能的.即使您加密登录名/密码并将其存储在某处(可能是您的类或外部文件),您仍然需要以纯文本格式保存加密密钥.这实际上比在纯文本中保存用户名/密码要好一些,实际上我会避免这样做,因为它会产生错误的安全感.
因此,我建议您的类将用户名/密码作为参数,并且使用您的类的系统必须关心保护凭据.它可以通过要求最终用户输入凭据或将它们存储到外部文件中来实现,该外部文件只对您的进程正在运行的操作系统用户可读.
编辑:您可能还会考虑使用OAuth等使用令牌而不是密码的机制.令牌具有有限的使用寿命并且与特定目的相关联,因此它们是访问凭证的良好替代方案.因此,您的最终用户可以使用他们的Windows凭据获取访问令牌,然后在您的类中使用该凭据来调用受保护的服务.