繁体   English   中英

Android KeyStore参数构建

Android KeyStore parameters building

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试将RSA加密与KeyStore结合使用,并且需要为KeyPairGenerator指定参数,而我在这里迷路了。 KeyPairGeneratorPair有点简单,但是我不理解API> = 23的KeyGenParameterSpec

这就是我所做的,我想我得到了一切else部分,但现在我感到困惑KeyGenParameterSpec

RSAKeyGenParameterSpec确切的公共指数是什么?

我应该在.setDigests指定哪些摘要?

还有.setBlockMode()方法要调用,并且由于我使用的是RSA和RSA/None/OAEPWithSHA1AndMGF1Padding ,因此要设置哪个阻止模式? 欧洲央行,加拿大广播公司?

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                generator.initialize(new KeyGenParameterSpec.Builder("PrivateKey", KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
                        .setAlgorithmParameterSpec(new RSAKeyGenParameterSpec(2048, RSAKeyGenParameterSpec.F4))
                        .setDigests(KeyProperties.DIGEST_SHA1,
                                KeyProperties.DIGEST_SHA256)
                        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
                        .setCertificateSerialNumber(BigInteger.ONE)
                        .setCertificateSubject(new X500Principal("CN=" + "PrivateKey"))
                        .setCertificateNotBefore(calendar.getTime())
                        .setCertificateNotAfter(endCalendar.getTime())
                        .setKeySize(2048).build());
            } else {
                generator.initialize(new KeyPairGeneratorSpec.Builder(MainActivity.this)
                        .setAlias("PrivateKey")
                        .setSerialNumber(BigInteger.ONE)
                        .setSubject(new X500Principal("CN=" + "PrivateKey"))
                        .setStartDate(calendar.getTime())
                        .setEndDate(endCalendar.getTime())
                        .setKeySize(2048).build()      

 );
            }

Cipher cipher = Cipher.getInstance("RSA/None/OAEPWithSHA1AndMGF1Padding");
1 个回复

方法setDigests()设置填充模式的摘要方法,而setBlockMode()设置加密模式,具体取决于您的工作。

我认为您设置了很多不必要的字段。 例如,我使用此方法创建自己的RSA密钥:

public boolean createKey() {
    try {
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(
                KeyProperties.KEY_ALGORITHM_RSA,
                "AndroidKeyStore"
        );

        mKeyStore.load(null);
        KeyGenParameterSpec.Builder builder =
                new KeyGenParameterSpec.Builder(
                        MY_KEY,
                        KeyProperties.PURPOSE_DECRYPT).
                setKeySize(MY_KEYLEN).
                setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP).
                setDigests(KeyProperties.DIGEST_SHA256);

        keyPairGenerator.initialize(builder.build());
        keyPairGenerator.generateKeyPair();
    } catch (NoSuchAlgorithmException | CertificateException | IOException |
            InvalidAlgorithmParameterException | NoSuchProviderException e) {
        return false;
    }

    return true;
}

我创建了此密钥以用于RSA/ECB/OAEPWithSHA-256AndMGF1Padding算法。

2 Android中的KeyStore

我试图在我的应用程序中使用密钥库安装证书。 但是我得到一个例外: 尝试了一些方法(例如: getInstance("X.509", "BC");)摆脱此错误,但是它没有用。 不太清楚,如何摆脱这种情况。 我是开发新手,并且对keystore的工作原理有一个很清楚的了解。 任何 ...

4 Android硬件支持的KeyStore

我对硬件支持的KeyStore感兴趣。 我正在查看一些文档,我注意到了一些矛盾。 官方文档( 此处 )确认所有实现必须提供AES加密等。 KeyStore存在多个实现。 我查看了基于QSEE的Qualcomm。 据我所知,keymaster glue( 此处 ),基于QSEE的 ...

6 无法找到Android的.keystore文件

我使用以下命令在我的离子应用程序的根目录中创建了一个释放键: 然后,我可以使用以下方式成功签署 但是,当我跑: 要么 我收到错误: 我从项目目录的根目录运行此命令,我生成密钥并使用它来签名。 这里发生了什么? 我如何能够使用密钥签署我的应用程序,同时还 ...

7 使用Android硬件支持的KeyStore

我希望使用Android硬件支持的KeyStore,但我担心安全性和可用性。 根据我在这里阅读的内容,当用户更改设备锁定时,KeyStore会被擦除,除非省略了setEncryptionRequired()。 出于可用性考虑,似乎需要这样做,否则一旦修改了设备锁,所有硬件支持的密钥都将被擦除 ...

9 构建Android的时间参数

我需要构建同一个项目的各种版本,它们之间几乎没有差异。 我想在构建时传递一个参数,以指定我想要构建的项目的哪个版本。 这可能吗 ? 如果是这样,如果没有,有什么办法可以实现我的目标吗? ...

10 Android上可接受的Keystore版本是什么?

我刚刚创建了一个Java密钥库,并在其中放置了一个自签名证书。 该密钥库可以完美地加载到独立的Java应用程序上,但不能加载到Android内部,因为它会抱怨密钥库版本错误。 因此,它记录了任何地方的Android Keystore可接受版本是什么? 此问题已解决,但在2011年并使用 ...

2019-08-07 04:17:04 1 43   android
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM