1 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
有幾種方法可以做到這一點(diǎn)。假設(shè)您需要加密用戶的數(shù)據(jù),有兩種方法。
第一種方式:密鑰只能通過(guò)生物識(shí)別解鎖,用戶每次想要使用密鑰時(shí)都必須通過(guò)生物識(shí)別進(jìn)行身份驗(yàn)證。
使用KeyGenParameterSpec、 with
setUserAuthenticationRequired(true)
和 來(lái)創(chuàng)建密鑰setUserAuthenticationValidityDurationSeconds(-1)
當(dāng)用戶打開(kāi)您的應(yīng)用程序時(shí),調(diào)用
BiometricPrompt#authenticate(CryptoObject)
當(dāng) 時(shí)
onAuthenticationSucceeded()
,您現(xiàn)在可以解密數(shù)據(jù)
第二種方式:密鑰可以通過(guò)生物識(shí)別或密碼/圖案/密碼解鎖,并在t
上次生物識(shí)別/憑證解鎖后的時(shí)間內(nèi)重復(fù)使用。每當(dāng)用戶解鎖鍵盤(pán)鎖或設(shè)置憑據(jù)屏幕時(shí),這些按鍵就會(huì)為您的應(yīng)用程序解鎖。
使用KeyGenParameterSpec、
setUserAuthenticationRequired(true)
和 來(lái)創(chuàng)建密鑰setUserAuthenticationValidityDurationSeconds(t>0)
。當(dāng)用戶打開(kāi)您的應(yīng)用程序時(shí),使用
BiometricPrompt#authenticate()
調(diào)用setDeviceCredentialAllowed(true)
。請(qǐng)注意,在這種情況下,您不需要將密鑰庫(kù)操作包裝到 a 中CryptoObject
。當(dāng) 時(shí)
onAuthenticationSucceeded()
,將用戶發(fā)送到您的應(yīng)用程序當(dāng)您需要訪問(wèn)加密信息時(shí),只要自上次用戶認(rèn)證以來(lái)的持續(xù)時(shí)間小于 即可使用密鑰
t
。如果已經(jīng)結(jié)束t
,嘗試使用密鑰將導(dǎo)致UserNotAuthenticatedException
,您應(yīng)該提示用戶再次進(jìn)行身份驗(yàn)證并轉(zhuǎn)到步驟 2。
添加回答
舉報(bào)