Java - 外部站点的密码加密/解密

时间:2011-08-12 17:56:02

标签: java password-encryption

在我们的服务器上,我们有几个定期工作,通过API登录外部帐户。目前,这些密码是硬编码的(明确)。我们将把它们存储在数据库中,并希望加密密码,但我们必须能够解密它们才能登录到外部站点。有没有办法安全地存储这些密码,而没有另外的密码以明文形式存储加密/解密? (这似乎是一个常见问题,但我对安全术语不够熟悉,无法对其进行分类)。谢谢!

1 个答案:

答案 0 :(得分:3)

您要实现的目标与this question非常相似。理想情况下,您不希望将这些秘密保留在数据库中,您希望尽可能远离应用程序。为什么?因为这样你至少可以排除应用程序本身作为攻击面,并且访问这些密码将更加困难。

在您的情况下,您希望使用密码保护加密密钥。这意味着您必须将密码存储在某处。你应该再次加密那个密码吗?这会导致恶性循环 - 这就是我在答案的这一部分所指的意思:

  

......是什么把我们带到那个资源。密钥存储和密码确实是一个鸡蛋和蛋的问题。对此唯一真正干净的解决方案是每次启动应用程序/数据库时手动输入密码。但这往往是一个真正的问题(想想:半夜崩溃),所以人们倾向于将密码存储在文件系统的文本文件中。只要你遵循一些指导原则,这是可以接受的:......

如果您加密某些内容,则会有一个秘密资源,即所涉及的密钥。保守秘密的理想方法是,如引言中所述,记住并手动输入,以便不留下任何痕迹。由于这通常是不可管理的,你必须忍受比记忆更不安全的东西,但比以纯文本形式保存秘密更好。

与该帖子相同的建议适用于您将案件密码存储在文件中的情况。作为替代方案,您可以尝试利用操作系统安全存储设施,例如Windows Data Protection