谷歌像素设备上的java InvalidKeyException
我的应用程序使用安卓系统的密钥库,在用指纹进行身份验证后,对一些数据进行加密。Google Pixel设备的用户报告引发了以下异常:
爪哇。安全InvalidKeyException:仅支持SecretKey
我的加密代码基本上是这样做的:
_keystore.Load(null);
_keyGen.Init(new KeyGenParameterSpec.Builder(_keyId,
KeyStorePurpose.Encrypt | KeyStorePurpose.Decrypt)
.SetBlockModes(KeyProperties.BlockModeCbc)
// Require the user to authenticate with a fingerprint to authorize every use
// of the key
.SetUserAuthenticationRequired(true)
.SetEncryptionPaddings(KeyProperties.EncryptionPaddingPkcs7)
.Build());
_keyGen.GenerateKey();
Cipher _cipher = Cipher.GetInstance(KeyProperties.KeyAlgorithmAes + "/"
+ KeyProperties.BlockModeCbc + "/"
+ KeyProperties.EncryptionPaddingPkcs7);
KeyStore _keystore = KeyStore.GetInstance("AndroidKeyStore");
FingerprintManager _fingerprintManager = (FingerprintManager) Context.GetSystemService(Context.FingerprintService);
_keystore.Load(null);
var key = _keystore.GetKey(_keyId, null);
_cipher.Init(CipherMode.EncryptMode, key);
_cryptoObject = new FingerprintManager.CryptoObject(_cipher);
_fingerprintManager.Authenticate(_cryptoObject, _cancellationSignal, 0 /* flags */, this, null);
//OnAuthSucceeded:
var mySecret = _cipher.DoFinal(System.Text.Encoding.UTF8.GetBytes(textToEncrypt));
GetKey似乎返回null。这些新设备只支持非对称加密吗?这意味着我需要生成密钥对,还是有其他解决方案
# 1 楼答案
如果可以的话,试试我的代码