- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试初始化一个用于加密和解密的 Cipher 对象。
String cipher = privateKey.getAlgorithm() + "/ECB/PKCS1Padding";
mCipher = Cipher.getInstance(cipher, "AndroidKeyStore");
我在 android 上不断收到以下异常:
System.err: java.security.NoSuchAlgorithmException: Provider AndroidKeyStore does not provide RSA/ECB/PKCS1Padding
03-20 00:28:38.270 19817 21488 W System.err: at javax.crypto.Cipher.getCipher(Cipher.java:357)
03-20 00:28:38.270 19817 21488 W System.err: at javax.crypto.Cipher.getInstance(Cipher.java:325)
03-20 00:28:38.271 19817 21488 W System.err: at javax.crypto.Cipher.getInstance(Cipher.java:297)
最佳答案
根据 Google 的说法,BouncyCaSTLe 中存在一个错误,导致他们无法正常安装其提供程序,因此他们在安装与 AndroidKeyStore key 相关的算法时使用了提供程序名称 AndroidKeyStoreBCWorkaround
。 See AOSP source here.
以下代码将通过 Marshmallow 在 KitKat 上运行,但我不推荐它,因为 Google 表示他们将在不再需要时消除变通方法:
Cipher.getInstance("RSA/ECB/PKCS1Padding", "AndroidKeyStoreBCWorkaround");
代替使用私钥获取密码,密码类将找到正确的兼容密码:
KeyStore ks = KeyStore.getInstance("AndroidKeyStore");
ks.load(null);
KeyStore.PrivateKeyEntry keyEntry =
(KeyStore.PrivateKeyEntry) ks.getEntry("mykeypair", null);
PrivateKey privKey = keyEntry.getPrivateKey();
Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
c.init(Cipher.ENCRYPT_MODE, privKey);
byte[] cipherText = c.doFinal(clearText, 0, clearText.length);
关于AndroidKeystore NoSuchAlgorithm 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36111452/
我目前正在开发基于客户端-服务器架构的 android 应用程序。为了数据安全,我使用公私 key 对进行数据加密和签名。我正在使用 AndroidKeyStore 来存储 key 对。下面是生成 k
我希望能够检索和检查一般的 Android 设备证明数据(attestationIdSerial、attestationIdImei 等...)。 Google 表示您可以在证书扩展(ASN.1 格式
我只是想问一下,用于存储 key 对的 AndroidKeystore API 是特定于设备或特定于应用程序的。我想问如果两个应用程序使用 AndroidKeyStore 来存储其 key 对,那么这
我正在尝试初始化一个用于加密和解密的 Cipher 对象。 String cipher = privateKey.getAlgorithm() + "/ECB/PKCS1Padding";
我在我的应用程序中使用 AndroidKeyStore 来存储 key ,我正在使用 KeyGenParameterSpec 生成该 key 类(class)。这是代码: final SecretKe
Android 提供了一个 API 来为加密操作生成 key ,并在 Android 系统 keystore 中存储/加载它们。 我遵循了 KeyGenParameterSpec 的 JavaDocs
我正在尝试将 android Fingerprint 实现到示例应用程序中。使用的密码未被识别为有效 - 但我不知道为什么,因为基于 android 文档,它应该受到支持。 密码建立在: return
我正在尝试使用导入的 keystore key 对一段数据进行签名: 我的 key 首先在 AndroidKeyStore 之外生成(这是故意的) 然后导入到AndroidKeyStore 使用以下方
用户在 SD 卡上保存了一个 .p12 文件(例如他的 S/MIME 证书)。我想将此证书(或提取的私钥和公钥)加载到 AndroidKeyStore 中。 File file = new File(
我在当前项目中使用 AndroidKeystore 作为提供程序来安全地存储私钥。现在我想让我的应用程序适用于低至 4.1(API 版本 16)的旧版 Android。因此,我需要为 AndroidK
在使用 AndroidKeyStore 生成 RSA key 期间,我在我的应用程序中遇到了以下问题,而不是理解它可以很容易地从 Android SDK 在 BasicAndroidKeyStore
对于 Android 4.3,此代码返回 null。 KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore"); keyStore.loa
我需要生成一个 RSA 2048 key 对,然后保存它,如果存在则恢复它。 此刻,我有这个: SecureRandom random = new SecureRandom(); RSAKeyGenP
Android M 通过 AndroidKeyStore 提供 AES 支持,但是我找不到生成 key 的任何组合,该 key 提供了一种无需用户密码/设备锁定的完全加密和解密方法。看来我目前的方法适
我正在创建一个小型 Android 应用程序(API > 23)并且必须在没有登录屏幕的情况下进行。尽管如此,用户的数据应该被加密,为此我从 AndroidKeyStore 生成或加载一个 AES k
所以我编写了我的应用程序,其中我使用 KeyStore 来加密/解密数据。我还为它编写了一个很好的 Robolectric 测试,但是当我尝试运行测试时,出现以下异常: java.security.K
我正在使用 Android FingerPrintManager API 并使用 KeyPairGenerator 创建 key 对,我想使用公钥加密密码,然后在用户通过输入 fingerPrint
在我的 Android 应用程序中,我需要一种方法来加密存储在本地数据库中的数据。我选择 Realm DB 是因为它提供了与加密的无缝集成。我只需要在初始化 Realm 实例时传递一个 key 。该
我是一名优秀的程序员,十分优秀!