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

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

有没有办法从Java访问mac钥匙串,或者失败了,你建议在哪里存储用户名/密码?

有一个Java keychain API,因为在关键字 链支持的 OS X上有一个KeyStore实现。

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

我没试过这个,但看起来你可以通过Apple加密提供程序( com.apple.crypto.provider.Apple )访问密钥链,创建一个KeychainStore类型的KeyStore


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

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

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

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

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