概覽Security 庫提供了與讀取和寫入靜態資料以及金鑰創建和驗證相關的安全最佳做法的實現。該庫使用構建器模式為以下安全等級提供安全的預設設定:在可靠加密和良好效能之間
2021-09-04 03:02:25
Security 庫提供了與讀取和寫入靜態資料以及金鑰創建和驗證相關的安全最佳做法的實現。
該庫使用構建器模式為以下安全等級提供安全的預設設定:
在可靠加密和良好效能之間取得平衡的強安全性這種安全等級適用於銀行應用和聊天應用等消費者應用,以及執行證書吊銷檢查的企業應用。
最高安全性這種安全等級適用於需要由硬體支援的金鑰庫和需要使用者介入以提供金鑰訪問許可權的應用。
Security庫可以使用多個金鑰集,可以對檔案和sp進行加密。金鑰集被儲存在sp中
主金鑰被儲存在系統金鑰庫中
Security加密操作
使用Security庫需要匯入以下依賴
implementation("androidx.security:security-crypto:1.0.0")
implementation("androidx.security:security-identity-credential:1.0.0-alpha02")
implementation("androidx.security:security-app-authenticator:1.0.0-alpha02")
androidTestImplementation("androidx.security:security-app-authenticator:1.0.0-alpha01")
Security庫支援的最低api版本是24,我們有以下兩種方式解決:
manifest中聲明<uses-sdk tools:overrideLibrary="androidx.security.identity.credential,androidx.security" />
提升最低api版本為24,不過這樣就需要對高於api24和低於api24兩種情況分別做適配了
寫入加密資料
無法重複寫入
當要寫入的檔案已經存在時,重複寫入資料的時候openFileOutput方法會拋出異常,原因就是無法重複寫入,見註釋:
寫入資料:
程式碼
本例程式碼中EncryptedFile.Builder的構建耗時最長,在我的手機上能達到300-600ms的水平,所以非敏感的檔案儘量不要用到加密
另外儲存進檔案的資料膨脹也很大,這意味著佔用了更大的儲存空間
val encrypt = EncryptedFile.Builder(
getFile("安安安安卓寫入檔案加密資料.txt").apply {
if (exists()) {//如果已存在就先刪除檔案
delete()
}
},
this@MainActivity,
"隨便寫個key",
EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()
startRecord()
encrypt.openFileOutput().apply {
write("隨便寫入點字元串".toByteArray(charset = Charsets.UTF_8))
flush()
close()
}
效果
讀取加密資料
val encrypt = EncryptedFile.Builder(
getFile(
"安安安安卓寫入檔案加密資料.txt"
),
val bytes = BufferedInputStream(encrypt.openFileInput()).readBytes()
val result = String(bytes, charset = Charsets.UTF_8)
Security庫提供了EncryptedSharedPreferences對存入sp的key-value進行加密
不過眾所周知的sp是個坑爹的東西,所以仍然只應該把EncryptedSharedPreferences運用到敏感的資料儲存上
寫入資料到Shar
share = EncryptedSharedPreferences.create(
"encryptdata",
"key",
this@MainActivity,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
share.edit().let {
it.putString("key", "SharePreference資料")
it.apply()
從SharePreference讀取資料
val value = share.getString("key", "")
總結,以上是小編給大家分享的android官方的加密庫,希望對大家有所幫助!普及
相關文章
概覽Security 庫提供了與讀取和寫入靜態資料以及金鑰創建和驗證相關的安全最佳做法的實現。該庫使用構建器模式為以下安全等級提供安全的預設設定:在可靠加密和良好效能之間
2021-09-04 03:02:25
AirPods 銷量下滑當年蘋果推出 AirPods 無線耳機之後成功的引爆了市場,並在一段時間內一直霸佔著市場 50% 以上市場的壟斷地位。但是由於各路品牌都在推出更加便宜,功能更加強
2021-09-04 03:02:19
華為鴻蒙系統的升級使用者量已經突破了7000萬,如果不好用,肯定不會有那麼多使用者升級,而且根據升級的使用者評價,口碑比以前基於安卓的EMUI體驗更好。餘承東也在鴻蒙釋出會上提
2021-09-04 03:02:11
【9月3日訊】相信大家都知道,在8月30日晚間,國內實力最雄厚的家電巨頭美的集團,正式對外發布了2021半年報資料,實現了1748億元營收,同比增長了25%,淨利潤為150億元,同比增長了7.8%,
2021-09-04 03:02:06
今天下午3點,本來和朋友正興沖沖飲著茶,他突然很激動地跟我說:128G的iPhone 12降價2000元,是不是可以無腦上車了?我第一感覺是想:某多多又貼錢搞補貼了?開啟手機APP一看,不對呀,這不
2021-09-04 03:01:59
果粉之家,專業蘋果手機技術研究十年!您身邊的蘋果專家~昨日下午,微信又釋出了iOS版8.0.13正式版的更新。微信近期這個更新頻率,都快趕上iOS 15測試版了。按照以往的慣例,微信一般
2021-09-04 03:01:50