使用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密码。