生成对称密钥并存储在android密钥库中

凯吾

我正在尝试执行以下操作,

  • 为 sqlcipher 生成密钥。
  • 将密钥存储在 android 密钥库中。
  • 从密钥库中检索秘密。

我找到了几乎所有我需要的东西,但是我在让下面的代码片段协同工作时遇到了麻烦。

上一篇:设置密钥库

private void InitialiseKeystore() throws ... {
    KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
    keyStore.load(null);
    boolean containsAlias = keyStore.containsAlias("com.example.myapp");

    KeyPairGenerator kpg = KeyPairGenerator.getInstance(
            KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");

    if (!containsAlias) {
        kpg.initialize(new KeyGenParameterSpec.Builder(
                alias,
                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
                .setDigests(KeyProperties.DIGEST_SHA256,
                        KeyProperties.DIGEST_SHA512)
                .build());

        KeyPair kp = kpg.generateKeyPair();
    }

生成对称密钥

我找到了这些很好的例子,但他们正在创建公钥/私钥,与许多其他人一样,所以有点困惑,但我有以下几点。

KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128); //<------------------------------------- [ERRORS HERE]
SecretKey secretKey = keyGen.generateKey();

存储在密钥库中

查看文档,似乎我应该KeyStore.SecretKeyEntry用来存储机密,所以这就是我目前拥有的,

KeyStore.SecretKeyEntry secretKeyEntry = new KeyStore.SecretKeyEntry(secretKey);
keyStore.setKeyEntry("key1", secretKeyEntry.getSecretKey().getEncoded(), null);

从密钥库中检索

private static byte[] getRawSecret() throws Exception {
    KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
    keyStore.load(null);

    byte[] raw = keyStore.getKey("key1", null).getEncoded();
    return raw;
}

这是出错的地方,在另一个函数中,我试图调用 getRawSecret()。

SQLiteDatabase.openOrCreateDatabase(databaseFile, getRawSecret().toString(), null);

错误Cannot initialize without a android.security.keystore.KeyGenParameterSpec parameter

所以问题是,如何创建对称密钥并存储在密钥库中?由于错误告诉我使用 KeyGenParameterSpec 但在上面链接的示例中,这要创建公钥/私钥。我究竟做错了什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android丢失了密钥库

来自分类Dev

如何使用“ SecItemAdd”在OS X中存储对称密钥?

来自分类Dev

密钥库Android

来自分类Dev

Android Studio中的Eclipse密钥库

来自分类Dev

如何在Java PKCS12密钥库中存储对称密钥

来自分类Dev

SSL对称密钥存储在哪里?

来自分类Dev

HKDF或PBKDF2用于生成对称加密密钥?(Python密码学)

来自分类Dev

在C#中创建我的对称密钥

来自分类Dev

Android-如何以编程方式将证书存储在密钥库中?

来自分类Dev

将AES密钥存储在Android中

来自分类Dev

Firebase实时数据库密钥生成对在Android / iOS设备上进行时钟更改可靠吗?#AskFirebase

来自分类Dev

将密钥和机密存储在Azure密钥库中

来自分类Dev

如何生成对象密钥?

来自分类Dev

是否需要安装客户端证书才能生成对称密钥或进行安全通信?

来自分类Dev

关于在Github存储库中存储公共SSH密钥的想法?

来自分类Dev

使用带有SHA-256的KDF在ECDHC之后生成对称密钥

来自分类Dev

使用椭圆曲线Diffie-Hellman和辅因子密钥生成对称密钥

来自分类Dev

如何在Java中以非对称加密生成密钥对?

来自分类Dev

Android Studio中的Eclipse密钥库

来自分类Dev

使用ursa(nodejs模块)生成对称密钥?

来自分类Dev

将非对称密钥容器存储在负载平衡的云环境中

来自分类Dev

将对称密钥存储在Java卡中

来自分类Dev

将pgp密钥存储在Azure密钥保管库中

来自分类Dev

导入存储库签名密钥

来自分类Dev

如何在Android Keystore中存储对称密钥

来自分类Dev

在 Android 中存储会话密钥

来自分类Dev

代表一个 android 应用程序签名密钥密钥库实体以及该密钥中究竟存储了什么?

来自分类Dev

删除软件存储库密钥

来自分类Dev

为什么我不能在 SQL Server 中为 dll 生成非对称密钥?

Related 相关文章

  1. 1

    Android丢失了密钥库

  2. 2

    如何使用“ SecItemAdd”在OS X中存储对称密钥?

  3. 3

    密钥库Android

  4. 4

    Android Studio中的Eclipse密钥库

  5. 5

    如何在Java PKCS12密钥库中存储对称密钥

  6. 6

    SSL对称密钥存储在哪里?

  7. 7

    HKDF或PBKDF2用于生成对称加密密钥?(Python密码学)

  8. 8

    在C#中创建我的对称密钥

  9. 9

    Android-如何以编程方式将证书存储在密钥库中?

  10. 10

    将AES密钥存储在Android中

  11. 11

    Firebase实时数据库密钥生成对在Android / iOS设备上进行时钟更改可靠吗?#AskFirebase

  12. 12

    将密钥和机密存储在Azure密钥库中

  13. 13

    如何生成对象密钥?

  14. 14

    是否需要安装客户端证书才能生成对称密钥或进行安全通信?

  15. 15

    关于在Github存储库中存储公共SSH密钥的想法?

  16. 16

    使用带有SHA-256的KDF在ECDHC之后生成对称密钥

  17. 17

    使用椭圆曲线Diffie-Hellman和辅因子密钥生成对称密钥

  18. 18

    如何在Java中以非对称加密生成密钥对?

  19. 19

    Android Studio中的Eclipse密钥库

  20. 20

    使用ursa(nodejs模块)生成对称密钥?

  21. 21

    将非对称密钥容器存储在负载平衡的云环境中

  22. 22

    将对称密钥存储在Java卡中

  23. 23

    将pgp密钥存储在Azure密钥保管库中

  24. 24

    导入存储库签名密钥

  25. 25

    如何在Android Keystore中存储对称密钥

  26. 26

    在 Android 中存储会话密钥

  27. 27

    代表一个 android 应用程序签名密钥密钥库实体以及该密钥中究竟存储了什么?

  28. 28

    删除软件存储库密钥

  29. 29

    为什么我不能在 SQL Server 中为 dll 生成非对称密钥?

热门标签

归档