Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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密钥库未保存RSA密钥_Java_Android_Rsa_Android Keystore - Fatal编程技术网

Java Android密钥库未保存RSA密钥

Java Android密钥库未保存RSA密钥,java,android,rsa,android-keystore,Java,Android,Rsa,Android Keystore,我正在使用android密钥库api来存储RSA密钥对 当我在调试模式下运行android时,它显示密钥对和证书字节已存储在密钥库中,但当我重新加载调试器并尝试检索密钥时,密钥库似乎为空 我希望能够通过别名检索密钥。下面的代码显示了如何创建和存储密钥对 public RSA(char[] password) throws Exception { KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); k

我正在使用android密钥库api来存储RSA密钥对

当我在调试模式下运行android时,它显示密钥对和证书字节已存储在密钥库中,但当我重新加载调试器并尝试检索密钥时,密钥库似乎为空

我希望能够通过别名检索密钥。下面的代码显示了如何创建和存储密钥对

    public RSA(char[] password) throws Exception {
    KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
    ks.load(null);
    Enumeration<String> aliases = ks.aliases();
    if(!aliases.hasMoreElements())
    {
        mCurrentCertificate = generateCert();
        //Store the new keypair
        FileInputStream fs = null;
        ks.load(fs, password);

        KeyStore.ProtectionParameter protParam =
                new KeyStore.PasswordProtection(password);

        java.security.cert.Certificate[] myCert =
                new java.security.cert.Certificate[] { (java.security.cert.Certificate) mCurrentCertificate};

        KeyStore.PrivateKeyEntry pkEntry =
                new KeyStore.PrivateKeyEntry(mCurrentRSAKeyPair.getPrivate(),
                        myCert);

        ks.setEntry("MyKey2", pkEntry, protParam);

        for(int i = 0; i < ks.size(); i++)
        {
            //MyKey is the previous key stored, MyKey2 is the next one
            System.out.println(ks.getCertificate("MyKey"));
        }
    }
}
公共RSA(字符[]密码)引发异常{
KeyStore ks=KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(空);
枚举别名=ks.alias();
如果(!alias.hasMoreElements())
{
mCurrentCertificate=generateCert();
//存储新的密钥对
FileInputStream fs=null;
ks.load(fs,密码);
KeyStore.ProtectionParameter protParam=
新密钥库。密码保护(密码);
java.security.cert.Certificate[]myCert=
新java.security.cert.Certificate[]{(java.security.cert.Certificate)mCurrentCertificate};
KeyStore.PrivateKeyEntry pkEntry=
新的KeyStore.PrivateKeyEntry(mCurrentRSAKeyPair.getPrivate(),
麦卡特尔);
ks.setEntry(“MyKey2”,pkEntry,protParam);
对于(int i=0;i
使用您的代码,您可以在文件系统中创建密钥库(它缺少
ks.store(fileOutputStream,password);
,但有一个特定的API来生成和使用密钥


在此示例中,您可以使用代码生成和加载RSA密钥,您可以在文件系统中创建密钥库(它缺少ks.store(fileOutputStream,password);,但有一个特定的API来生成和使用密钥

在本文中,您有一个生成和加载RSA密钥的示例