Java:安全存储客户端密码

时间:2018-03-16 21:06:33

标签: java security passwords password-protection password-encryption

Java中是否有允许用户将密码存储在安全位置的内容?

我的应用需要在离线模式下工作。它应该允许用户创建内容,将其存储在设备上并阻止其他应用程序阅读此内容。其他应用可能会访问该内容,但他们无法对其进行解密。

一种经典的解决方案是使用安全散列函数来散列用户密码并使用结果来加密文件。但是,这涉及用户每次访问应用程序时键入他/她的密码。我希望以安全的方式保存密码,以保护密码免受设备上的其他应用程序的侵害。

在Android中,使用Android Keystore System可以实现此类解决方案。

纯Java中有类似内容吗?

1 个答案:

答案 0 :(得分:-1)

您可以使用带有SHA的java.security.MessageDigest作为算法选择。示例

public class CryptWithMD5 {
private static MessageDigest md;

  public static String 
cryptWithMD5(String pass){
try {
    md = MessageDigest.getInstance("MD5");
    byte[] passBytes = pass.getBytes();
    md.reset();
    byte[] digested = md.digest(passBytes);
    StringBuffer sb = new StringBuffer();
    for(int i=0;i<digested.length;i++){
        sb.append(Integer.toHexString(0xff & digested[i]));
    }
    return sb.toString();
} catch (NoSuchAlgorithmException ex) {

}
    return null;
}