2011-06-07 83 views

回答

0

如果您試圖加密專用於應用程序的數據,而不是用戶,那麼您需要訪問密鑰/令牌/隨機數才能解密。除非您正在遠程執行加密或使用Android NDK,否則獲取密鑰/令牌/隨機數並解密密鑰會很簡單。 Apk's沒有編譯,可以很容易地解壓縮,並查看源代碼。

+0

這並不是說NDK不會遇到類似的反彙編問題,但與dex文件相比,它並不是微不足道的。 – 2011-06-07 13:56:11

+0

不要這麼快猜測OP想要做什麼。也許密碼是由用戶輸入的,在這種情況下,你的任何參數都是無效的。 – Felix 2011-06-07 13:56:39

+0

誠然,如果用戶提供了更多信息,我們就會知道。 – 2011-06-07 13:58:25

5

你對Java有多瞭解?您可以使用Android中的所有javax.securityjavax.crypto類(如Cipher)來提供數據加密/解密。

請記住,用戶可以直接訪問SD卡上的文件(通過安裝在PC上並瀏覽或通過文件管理器應用程序),這意味着有可能無法訪問要閱讀文件中的數據,用戶理論上可以刪除在那裏創建的目錄,如果他們這樣選擇的話......並且這對您的應用程序可能不是猶太教。

此外,真的沒有辦法簡單地將文件夾設置爲「加密」並自動爲您保存任何文件。您需要創建要使用的目錄,然後在寫入/讀取數據時加密/解密每個文件。

希望有幫助!

+0

嘿這個鏈接是行不通的 – 2016-01-09 07:40:40

0

您可以在Android上加密和解密數據,如其他答案中所述。但考慮到「做」會變得更加複雜。

1)使用DES和一個56位的密鑰,你不需要在美國的出口許可證。使用AES或TDES 128或256位密鑰,你可能需要開始填寫文書工作:)

2)除非你想讓用戶輸入一個完全等於你想要種子的密鑰大小的密碼,然後使用SHA256多哈希密碼。

3)您可能需要將密碼數據編碼爲64位字符集(字母大寫和小寫,數字,+和/)作爲密文。這通常需要三個字節的組,將它們擴展爲四個字節,並在需要時用=作爲填充。只需在網上搜索base64編碼解碼算法即可。

4)您可能希望將LEVEL OF INDIRECTION添加到方案中,以便用戶可以在以後更改密碼而不更改文件對稱密鑰。所以有兩種加密方式:用隨機對稱密鑰加密文件,然後用用戶密碼加密隨機對稱密鑰。啊。

相關問題