我正在学习本教程:如何使用Android
Keystore存储密码和其他敏感信息
。它(宽松地)与Google示例应用程序BasicAndroidKeyStore绑定在一起。
我可以使用公钥加密数据,也可以在运行Lollipop的设备上解密。但是我有一个运行棉花糖的Nexus 6,它崩溃了,并显示错误消息:
java.lang.RuntimeException: Unable to create application com.android.test: java.lang.ClassCastException: android.security.keystore.AndroidKeyStoreRSAPrivateKey cannot be cast to java.security.interfaces.RSAPrivateKey
这是它崩溃的代码:
KeyStore.Entry entry;
//Get Android KeyStore
ks = KeyStore.getInstance(KeystoreHelper.KEYSTORE_PROVIDER_ANDROID_KEYSTORE);
// Weird artifact of Java API. If you don't have an InputStream to load, you still need to call "load", or it'll crash.
ks.load(null);
// Load the key pair from the Android Key Store
entry = ks.getEntry(mAlias, null);
KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) entry;
//ERROR OCCURS HERE::
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) privateKeyEntry.getPrivateKey();
Cipher output = Cipher.getInstance("RSA/ECB/PKCS1Padding", "AndroidOpenSSL");
output.init(Cipher.DECRYPT_MODE, rsaPrivateKey);
我不愿意将此归结为Android M怪异之处,因为我认为没有理由更改Java加密库。如果M版本发布,并且我们的应用立即在M上崩溃,那么我将遇到很大的麻烦。
我做错了吗?该错误非常明确地表明您无法强制转换为RSAPrivateKey,因此有人知道从该条目中获取RSAPrivateKey的更好方法吗?
非常感谢。
我设法通过从Cipher.getInstance中删除Provider而 不是 强制转换为RSAprivateKey来使它正常工作。
KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) entry;
Cipher output = Cipher.getInstance("RSA/ECB/PKCS1Padding");
output.init(Cipher.DECRYPT_MODE, privateKeyEntry.getPrivateKey());
我不是100%,但是我认为这样做的原因是棉花糖从OpenSSL更改为BoringSSL。
https://developer.android.com/preview/behavior-changes.html#behavior-apache-
http-client
无论如何,以上适用于M及以下。
问题内容: 我写了一个简单的Bag类。袋子中装有固定比例的温度枚举。它使您可以随机抓取一个,并在装满后自动自动装满。看起来像这样: 温度枚举看起来像这样: 我有一个常量实例属性。(我也尝试过使用变量。)当我需要一个新的温度时,调用一次,在合适的时候调用。 此呼叫随机地在中的行崩溃。错误是。检查调试器是否显示项目is 和。 编辑 好像我不了解调试器信息。即使有效的数组也会显示和无关的值。所以没有帮助
我有一个spring安全的微服务,我有application.yml中的私钥和公钥的内容(请不要评判我)。我还有一个带有这个属性的@ConfigurationProperties文件。该服务工作良好,内部RsaKeyConversionServicePostProcessor分别执行从String到RSAPUblickey/RSAPrivateKey的转换。 问题是当我在pom.xml中添加fly
我在android studio中建立了一个转换器,当我每次按转换按钮时,距离部分(activity)就会崩溃。该应用程序说,特定的activity已经停止工作,该应用程序回到主要的activity。在android studio中没有显示任何错误,我想我的问题可能是在使用旋转器中的int pos,但我不确定。这是我最后要完成的元素。请帮帮忙。下面是Java,后面是XML。 和xml null
我正在尝试将pst时间戳转换为Java的gmt 我有一个时间戳为的字符串。我如何处理该字符串并将其转换为gmt时间戳? 我做了一些我想做的事,但还没去任何地方 结果是:
问题内容: 我已经尝试过一百万种不同的方法,但是没有用。任何帮助将非常感激。 上面的方法不起作用。 基本上,我想做的是获取纪元时间并将其转换为澳大利亚时间。我的当地时间是+05.30,但是我当然不希望这成为促成这种转化的因素。 编辑- 当我运行您的确切代码时,输出 时代1318388699000 2011年10月12日星期三08:34:59 GMT + 05:30 12/10/2011 03:
我有一个倒计时计时器来隐藏div,然后显示另一个div。我已经按秒完成了,但我想将秒转换为分钟和小时。 我怎么能这么做? 感谢任何人回答我的问题... 这是我的代码: