我有一個Android應用程序在開發中有大量基於文本的數據(實質上這個應用程序是一個參考/學習指南)。在Android應用程序中加密大量文本數據的最佳方法?
我想確認一下,如果設備上APK的進程版本被從設備中拉出並「反編譯」,則文本數據以某種方式被加密。有沒有什麼方法來加密文本數據,以便文本在提取時不可用?
我有一個Android應用程序在開發中有大量基於文本的數據(實質上這個應用程序是一個參考/學習指南)。在Android應用程序中加密大量文本數據的最佳方法?
我想確認一下,如果設備上APK的進程版本被從設備中拉出並「反編譯」,則文本數據以某種方式被加密。有沒有什麼方法來加密文本數據,以便文本在提取時不可用?
使用AES加密對文本進行加密。使用帶有隨機IV的PKCS#7néePKCS#5填充和CBC模式,在加密數據前面加上IV。您還應該預先加密用於身份驗證的數據的散列。
您可以查看RNCryptor-Spec瞭解數據佈局的想法。 用於實現包括IV,加密認證,版本控制。
感謝加密方法的所有鏈接。我遇到的任何加密方法遇到的最大問題都是關於必須讓apk中的密鑰「暴露」才能訪問加密數據。任何關於如何以某種方式不公開密鑰但仍以某種方式仍然對代碼中的數據進行加密/解密的想法。 (我意識到這是一個很高的命令,但我認爲有人必須面對這個問題,並提出一些聰明的想法/解決方法)。即使我可以僅僅加密APK,超出了職業後衛提供的那種優秀的。 – user155205
保持加密密鑰的祕密是一個問題,在手機上沒有完整的解決方案。顯然,在使用密鑰進行加密/解密時,它必須存儲在內存中,並且可以由熟練的攻擊者獲得。如果密鑰被編譯到應用程序中,任何可以獲得對應用程序二進制文件訪問權限的人都可以訪問該密鑰,那麼最好的辦法就是以某種方式對其進行混淆處理,可能會對其進行編碼並將其拆分,然後搜索此類方法。如果密鑰在運行時創建,請將其保存在Android密鑰庫中,注意用戶將有權訪問該密鑰。您可能需要的是DRM解決方案。 – zaph
您可能已經找到了拆分密鑰的解決方案,然後以某種方式使用混淆處理來使用戶幾乎不可能將密鑰放回到一起。我將深入研究proguards混淆過程,看看如何「完成」我可以完成這個過程。非常感謝! – user155205
是什麼讓你認爲用於加密文本的密鑰沒有從apk中提取並用於解密這些文本? –
這個關鍵問題正是我問這個問題的原因。我已經遇到了關鍵問題,並且我從您的回覆中認爲,您至少知道無法保護密鑰並仍然允許訪問數據。我假設它可能只是不可行,但我仍然不得不問。 – user155205
沒錯。像proguard這樣的混淆器只能隱藏這些信息,而不是懶惰的「黑客」,但不能完全保護這些信息。如果你想加密某些東西,那麼你仍然需要解密密鑰。 –