首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyStore对KeyChain

KeyStore对KeyChain
EN

Stack Overflow用户
提问于 2018-02-15 13:14:15
回答 1查看 7.4K关注 0票数 9

我有一个应用程序,可以生成一个用于加密/解密的密钥,而且它运行得很好。我将密钥存储在KeyStore和IV中,作为第一个12B存储在外部存储中的加密文件中。当我想解密该文件时,我从外部存储(因此我得到IV)和从KeyStore获得密钥,并且我能够获得原始内容。我的第二个应用程序App2可以访问外部存储中的文件(因此它可以获得IV),但是它不能从App1 KeyStore获得密钥。我读到了关于KeyChain的文章,它在官方文档中说它不是app私有的(当你想要系统范围的凭证时使用KeyChain API )。我是否可以以某种方式将我的密钥存储在这个KeyChain或其他地方,这样我的App2就可以得到它(得到用户的批准或类似的东西)。下面是我用来在App1中创建和存储密钥的代码。

代码语言:javascript
复制
 private static SecretKey createAndStoreKey() {
        KeyGenerator keyGen;
        try {
            // Generate 256-bit key
            keyGen = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, KEY_STORE_NAME);

            final KeyGenParameterSpec keyGenParameterSpec = new KeyGenParameterSpec.Builder(KEY_ALIAS,
                    KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
                    .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
                    .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
                    .build();

            keyGen.init(keyGenParameterSpec);

            SecretKey secretKey = keyGen.generateKey();
            if(secretKey != null)
                return secretKey;
            else
                return null;
        }
        catch (NoSuchProviderException e){
            e.printStackTrace();
            return null;
        }
        catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
        catch (InvalidAlgorithmParameterException e){
            e.printStackTrace();
            return null;
        }
    }

谢谢大家的帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-05-14 12:06:12

当您需要系统范围的凭据时,请使用KeyChain API。当应用程序通过KeyChain API请求使用任何凭据时,用户可以通过系统提供的UI选择应用程序可以访问的已安装凭据中的哪一个。这允许多个应用程序在用户同意的情况下使用相同的凭证集。 使用Android提供商可以让单个应用程序存储自己的凭据,只有应用程序才能访问这些凭据。这为应用程序提供了一种管理凭据的方法,这些凭据只能单独使用,同时提供了与KeyChain API为系统范围内的凭据提供的相同的安全好处。此方法不需要用户交互来选择凭据。参照系

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48808184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档