我的设备如何以及在何处存储指纹结果,并与下次解锁的尝试相匹配?

问题描述 投票:0回答:1

我知道很多人都质疑如何保存或导出新的指纹并进行存储,答案是“否”。我的问题是我的Android设备在哪里存储扫描的指纹数据,以及哪种格式以及与新扫描的指纹如何匹配。

我也知道:对指尖的扫描进行某些控制点的分析,并生成一个类似于密码哈希的令牌。

它通过此生成哈希:

KeyStore mKeyStore;
String KEY_NAME = UUID.randomUUID().toString();
Cipher mCipher;
mKeyStore = KeyStore.getInstance("AndroidKeyStore");
keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");

keyGenerator.init(new
                KeyGenParameterSpec.Builder(KEY_NAME,
                KeyProperties.PURPOSE_ENCRYPT |
                        KeyProperties.PURPOSE_DECRYPT)
                .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
                .setUserAuthenticationRequired(true)
                .setEncryptionPaddings(
                        KeyProperties.ENCRYPTION_PADDING_PKCS7)
                .build());
        keyGenerator.generateKey();

 mCipher = Cipher.getInstance(
                KeyProperties.KEY_ALGORITHM_AES + "/"
                        + KeyProperties.BLOCK_MODE_CBC + "/"
                        + KeyProperties.ENCRYPTION_PADDING_PKCS7);

 SecretKey key = (SecretKey) mKeyStore.getKey(KEY_NAME, null);
        mCipher.init(Cipher.ENCRYPT_MODE, key);

我已经使用了此https://github.com/googlesamples/android-FingerprintDialog,但这仅与以前记录的数据匹配。

正在编辑/提取或使用此哈希并将其存储在其他地方,并在存储Android的安全密钥(假定所有密钥都相同)的同时尝试将与此新生成的哈希进行匹配,是否有可能或其他方法?

java android fingerprint android-fingerprint-api
1个回答
1
投票
KeyStore ks = KeyStore.getInstance("AndroidKeyStore");
ks.load(null);
KeyStore.Entry entry = ks.getEntry(alias, null);
if (!(entry instanceof PrivateKeyEntry)) {
Log.w(TAG, "Not an instance of a PrivateKeyEntry");
return null;
}

Signature s = Signature.getInstance("SHA256withECDSA");
s.initSign(((PrivateKeyEntry) entry).getPrivateKey());
s.update(data);
byte[] signature = s.sign();
boolean valid = s.verify(signature);
© www.soinside.com 2019 - 2024. All rights reserved.