我正在寻找一种方法来保护用于与其他服务通信的凭据。我已将所有凭据存储在属性文件中,并且我从该文件中获取它,这是不正确的方法。我可以做的一件事是以加密格式存储凭证,并获取加密值解密它以获得真实价值或使用首选项来存储这些凭证。有没有人有更好的方法来做到这一点。
答案 0 :(得分:2)
阅读Java对密钥库的支持。
http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores
答案 1 :(得分:1)
在第一种简单的方法中,我认为您可以尝试散列/摘要加密,也就是说,您可以使用MD5,SHA1,SHA256,...来获取无法解密的摘要。
然后,当您要检查某人凭据时,您必须获取所提供凭据的摘要,并根据以前存储的摘要进行检查。
这是一种更安全的方式,它相对简单,您可以继续使用文件来存储加密的摘要。
您使用的是MD5和/或SHA示例,它使用来自Apache Commons Codec的org.apache.commons.codec.digest.DigestUtils
:
String digestedSHA = DigestUtils.sha256Hex(clearPass);
String digestedMD5 = DigestUtils.md5Hex(clearPass);
简单明了。当然还有更高级的选择。也许你可以从这开始。
希望它有所帮助!