我正在用 Java 编写一个针对 Mac OS X 的小程序(推特客户端)。作为其功能的一部分,它需要有一个地方来存储推特用户名/密码。自然的地方是mac钥匙串,但我找不到任何访问它的方法。
有什么方法可以从 Java 访问 mac 钥匙串,或者如果没有,您建议在哪里存储用户名/密码?
有 Java keychain API,因为在 OS X 上有一个KeyStore的实现,由 keychain 支持。
我认为钥匙串是存储密码的最佳位置(如果不是这个位置)。它使用良好的算法进行加密,用户可以随意对应用程序的钥匙串的可用性随意或偏执,然后密码将与用户存储的所有其他密码一样存储和配置。
我还没有尝试过,但看起来您可以使用 Apple 加密提供程序 ( ) 访问密钥链,com.apple.crypto.provider.Apple
创建一个KeyStore
.KeychainStore
好的,经过一些实验,我能够访问KeychainStore
. 但是,我的钥匙串中的密码没有显示(没有列出别名),当我尝试添加一个KeyStore.SecretKeyEntry
(这是您需要保存密码的)时,它失败并显示消息“Key is not a PrivateKey” . 显然,Apple 不支持SecretKeyEntry
.
如果您仍然想通过密钥链保护您的 Twitter 密码,我认为您可以得到的最接近的方法是生成一个 RSA 密钥对,自签名证书,并将 a 添加PrivateKeyEntry
到密钥链中。然后您可以使用密钥对来保护 Twitter 密码。
自己签署证书并不难,但如果你走这条路,你可能想查看 BouncyCastle 库寻求帮助。
您应该查看有关 OAuth 支持的 twitters API 页面。通过使用 OAuth,您无需知道用户的 Twitter 密码。