我在這裏有一個有趣的情況。我的應用程序存儲用戶輸入的敏感信息,例如他們的社交服務帳戶。我使用用戶輸入的主密碼來生成一個SecretKey,然後使用AES加密並將其SHA1散列和加密數據存儲在設備上,而不是主密碼本身或密鑰。當密鑰不再可訪問時,解密用SecretKey加密的字符串
問題是,如果用戶忘記密碼,他們可以回答並更改主密碼。所以當主通道改變時,由於先前的密碼(和相關的密鑰)永遠消失了,我不能解密存儲的字符串並向用戶顯示解密的數據。
這裏是我能想到的解決方案:
1 - 保管密碼,這是我所聽到的完全不安全。
2 - 存儲SecretKey,但我聽說這也是不安全的。
3 - 將用戶數據存儲在未加密的數據庫中,這是不安全的。
4 - 每當用戶忘記密碼時擦除整個數據庫,這是我認爲的愚蠢。
我需要一種方法來克服這一點,我根本無法想到一個安全的方式來拉它。 這對我的應用程序飛行來說至關重要。任何和所有的幫助真的很感激。
1.正確。 2.正確。 3.正確。不,這是正確的答案。根據定義,其他一切都是後門。鼓勵用戶安全地使用密碼,以免他們忘記密碼。 – CommonsWare
那麼僅僅因爲他們忘記密碼而刪除所有用戶的數據有點不公平。我的應用程序包含他們的信用卡,社交媒體帳戶和一些個人筆記。將它們刪除將是一場災難。如果用戶完全依賴這個應用程序來保存它們。 是否有任何其他方式來解密數據?或者製作和以前一樣的SecretKey?! –