我几乎找到了我需要的所有东西,但是我很难让下面的代码片段一起工作。
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 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;
}
SQLiteDatabase.openOrCreateDatabase(databaseFile, getRawSecret().toString(), null);
那么问题是,我如何创建对称密钥并存储在keystore中?由于错误告诉我使用KeyGenParameterSpec,但与上面链接的示例一样,这需要创建公钥/私钥。我做错了什么?
我用这个来解决我的问题,
指南:https://medium.com/@josiassena/using-the-android-keystore-system-to-store-sensitive-information-3A56175A454B
代码:https://gist.github.com/josiassena/3BF4CA59777F7DEDCAF41A495D96D984
问题内容: 我使用openssl生成认证密钥。这是我的命令: openssl genrsa -des3 -out enc_key.pem 1024 我导出到cer文件中,然后使用java keytool导入到Java keystore(jks)中。 密钥库听起来不错。我可以从Java应用程序加载密钥库。 问题是客户端连接到服务器(在这种情况下是FTP服务器,而不是Web服务器,而我使用apache
如果我尝试使用OpenSSL命令行生成3TDES加密的PKCS 8密钥: 我得到: PKCS8 RFC没有说明必须使用哪种算法来创建密钥块。它确实给出了PKCS5算法作为例子。有没有办法使用OpenSSL创建一个由DES密钥加密的PKCS8密钥?如果不是,它是OpenSSL不支持的还是一个非常不标准的事情? 下面是通过OpenSSL命令行(密码测试)使用基于密码的加密创建的示例: 这里是我手工制作
<代码>java。安全KeyStore使用KeyStoreSpi实现来提供不同类型的KeyStore。基本OpenJDK支持JKS、JCEKS和PKCS12密钥库类型。前两个实现专有的Sun/Oracle格式,PKCS12是一个公共标准。 我知道JCEKS确实支持对称密钥,PKCS12则不支持。还有哪些实现(如Bouncy Castle)支持对称密钥?开发人员似乎想隐藏此类信息。E、 g.Boun
我需要从NSData值生成对称AES密钥,该值创建如下: (initKey是base64字符串值。) 问题是如何从“解码数据”中生成密钥?(类似于Android秘书KeySpec) (我使用的是Swift 2.2) 这里是场景(在Android): 1-我有一个bas64字符串。 2-我将其解码为字节数组。 3-然后根据字节数组长度和AES类型创建secretkey。 4-最后定义一个基于secr
编辑:没有必要的变通方法。使用上述代码可以将外部生成的密钥导入到Android Keystore中。
使用指定密码生成对称密钥,保存并返回ID。 调用: web3.shh.generateSymKeyFromPassword(password, [callback]) 参数: password:String - 用于生成对称密钥的密码 callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为返回结果 返回值: String - 成功时返回ID,否则返回错误信息