使用Java在Mac上存储用户名/密码

时间:2009-04-07 22:12:27

标签: java security macos keychain

我正在用Java编写一个小程序(一个推特客户端),针对Mac OS X.作为其功能的一部分,它需要有一个存储推特用户名/​​密码的地方。自然的地方是mac钥匙串,但我找不到任何方式来访问它。

有没有办法从Java访问mac keychain,或者没有这样做,你建议用什么来存储用户名/密码?

3 个答案:

答案 0 :(得分:14)

有Java密钥链API,因为OS X KeyStore上有backed by the keychain的实现。

我认为钥匙串是存储密码的最佳位置(如果不是 位置)。它使用一个好的算法进行加密,用户可以自由地对应用程序的密钥链的可用性进行自由或偏执,然后密码将与用户存储的所有其他密码一起存储和配置。

答案 1 :(得分:4)

我没有尝试过,但看起来您可以使用Apple加密提供程序(com.apple.crypto.provider.Apple)访问密钥链,创建KeyStore类型KeychainStore


好的,经过一些实验,我能够访问KeychainStore中的私钥证书条目。但是,我的钥匙串中的密码没有显示(没有列出别名),当我尝试添加KeyStore.SecretKeyEntry(这是您需要保存密码)时,它失败并显示消息“Key不是私钥“。显然,Apple尚未支持SecretKeyEntry

如果您仍希望通过密钥链保护您的Twitter密码,我认为您最接近的是生成RSA密钥对,自签一个证书,并在钥匙串中添加PrivateKeyEntry。然后,您可以使用密钥对来保护Twitter密码。

自己签署证书并不是非常困难,但是如果你走这条路,你可能想看看BouncyCastle库以寻求帮助。

答案 2 :(得分:3)

您应该查看OAuth支持上的twitters API页面。通过使用OAuth,您无需知道用户的Twitter密码。

http://apiwiki.twitter.com/OAuth-FAQ