11

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

有什么方法可以从 Java 访问 mac 钥匙串,或者如果没有,您建议在哪里存储用户名/密码?

4

3 回答 3

15

有 Java keychain API,因为在 OS X 上有一个KeyStore的实现,由 keychain 支持

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

于 2009-04-07T22:27:34.857 回答
4

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


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

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

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

于 2009-04-07T22:26:26.560 回答
3

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

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

于 2009-04-08T05:27:05.880 回答