我正在用Java编写一个小程序(一个推特客户端),针对Mac OS X.作为其功能的一部分,它需要有一个存储推特用户名/密码的地方。自然的地方是mac钥匙串,但我找不到任何方式来访问它。
有没有办法从Java访问mac keychain,或者没有这样做,你建议用什么来存储用户名/密码?
答案 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密码。