AndroidX — EncryptedSharedPreferences 中MasterKeys與MasterKeys.AES256_GCM_SPEC deprecated的處理方法

JLin
3 min readAug 7, 2020

--

如果你找文件大部分會是類這樣寫法

val masterKey = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC)

val sharedPreferences = EncryptedSharedPreferences.create(
"secret_shared_prefs",
masterKey,
this,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

但最近如果你更新了版本,並且看到IDE提示,MasterKeys.AES256_GCM_SPEC

中的MasterKey已經被遺棄不使用,但其實也不是,而是他建議你使用Builder來進行建立

MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC)

就可以透過替換成Builder

MasterKey.Builder(context, MasterKey.DEFAULT_MASTER_KEY_ALIAS)
.setKeyGenParameterSpec(MasterKeys.AES256_GCM_SPECA)
.build()

這時候你會看到依然有一個MasterKeys還在使用,一樣被遺棄使用,那該怎麼辦?

替換成

.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)

簡單來寫就是這樣,如果你不想繼續使用遺棄API的寫法,可以試試這樣修改

Done.

參考資訊

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

JLin
JLin

Written by JLin

台中 / JAVA / Android /Kotlin / Kotlin Native 對於Kotlin衍生的JVM等技術 Compose for web / desktop / Ktor Server,生成式AI (Gemini/OpenAI)各式應用, 都有小興趣

No responses yet

Write a response