Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android密钥库是否足够安全,可以保存用户名/密码?_Java_Android_Security_Xamarin_Keystore - Fatal编程技术网

Java Android密钥库是否足够安全,可以保存用户名/密码?

Java Android密钥库是否足够安全,可以保存用户名/密码?,java,android,security,xamarin,keystore,Java,Android,Security,Xamarin,Keystore,我想在应用程序中存储我的用户用户名和密码 我的问题/担心是,我读过一些类似的答案,其中解释了如果恶意用户获得了对设备的物理访问,他可以在共享首选项文件中以明文形式读取用户名/密码。密钥库比这更安全,我不必担心 如果有人想知道为什么我要采取额外的预防措施,使这个HIPPA合规。并且找不到任何关于使用哪种加密的信息,也找不到是否可以以纯文本和反向工程的形式存储的信息 不仅仅是将其用作密钥/值存储选项,我应该在存储之前对其进行加密/解密吗?最好的方法是什么 欢迎链接到Keystore上的谷歌文档/视频

我想在应用程序中存储我的用户用户名和密码

我的问题/担心是,我读过一些类似的答案,其中解释了如果恶意用户获得了对设备的物理访问,他可以在共享首选项文件中以明文形式读取用户名/密码。密钥库比这更安全,我不必担心

如果有人想知道为什么我要采取额外的预防措施,使这个HIPPA合规。并且找不到任何关于使用哪种加密的信息,也找不到是否可以以纯文本和反向工程的形式存储的信息

不仅仅是将其用作
密钥/值
存储选项,我应该在存储之前对其进行加密/解密吗?最好的方法是什么

欢迎链接到
Keystore
上的谷歌文档/视频,讨论如何实现安全性

这就是我目前正在采取的方法。请原谅我在Xamarin中实现的
C

private KeyStore _keyStore;
_keyStore = KeyStore.GetInstance(KEYSTORE_KEY);
_keyStore.Load(null);

KeystoreEntry entry = new KeystoreEntry(Username, Password);
_keyStore.SetEntry(ServerURL, entry, null);
keystorentry.cs

public class KeystoreEntry : Java.Lang.Object, IEntry {

    EntryAttribute _usernameAttribute;
    EntryAttribute _passwordAttribute;

    public string Username {
        get {
            return _usernameAttribute.Value;
        }
    }

    public string Password {
        get {
            return _passwordAttribute.Value;
        }
    }

    public KeystoreEntry(string username, string password) {
        _usernameAttribute = new EntryAttribute("Username", username);
        _passwordAttribute = new EntryAttribute("Password", password);
    }

    internal class EntryAttribute : Java.Lang.Object, IEntryAttribute {

        private string _name;
        private string _value;

        public string Name {
            get { return _name; }
            set { _name = value; }
        }

        public string Value {
            get { return _value; }
            set { _value = value; }
        }

        public EntryAttribute(string name, string value) {
            _name = name;
            _value = value;
        }
    }
}

正如您所看到的,一个非常简单的方法就是强调it的安全性。

您好,您的问题解决了吗?