我使用了驚人的FPS,我必須將密鑰存儲在java代碼中。不過,我擔心有人會反編譯我的apk並找到密鑰。我自己反編譯apk,找不到密鑰,但我不是VM專家。任何幫助?Android存儲密鑰,反編譯恐懼
回答
你不能把你的加密密鑰爲您的應用程序,並期望它仍然是一個祕密。它只需要一名堅定的程序員反編譯並找到密鑰,並且可以與世界共享。
非對稱/公鑰密碼學正是您想要的解決方案。創建一個公鑰/私鑰對,然後將公鑰放在您的應用程序中並自己保留私鑰。然後,你可以做兩件事情:
- 應用程序可以加密使用公共密鑰,只能使用私鑰解密的消息。
- 或者,您可以簽署使用私有密鑰,可以使用在應用程序中的公共密鑰進行驗證的消息。
是真的。但如果您將私鑰或公鑰放在應用程序中,他們也可以使用該密鑰來解密密鑰。 – 2011-03-09 00:17:12
@Patrick Boos:這就是非對稱加密的一點:你不能從公鑰計算私鑰。這種方式的工作原理是,使用私鑰(您不與任何人共享,只在服務器上共享)在服務器上加密*,並且客戶端上的應用程序具有* public *鍵可以解密;此外,客戶端上的應用程序使用* public *鍵簽名,服務器使用私鑰進行驗證。 *公共*密鑰旨在自由分享。 – Piskvor 2011-04-26 11:23:35
@Piskvor爲了成爲安全的公鑰密碼學,要求私鑰保密。但是如果某人獲得了存儲在應用程序中的私鑰(例如,通過反編譯)呢?然後,他或她仍然可以讀取使用公鑰編碼的所有祕密數據(與原始應用程序完全相同)。有沒有辦法來防止這種情況? – Piotr 2011-04-29 21:40:02
一個確定足夠的個人將能夠提取您的密鑰,是不是真的有可以爲此做些那麼多。您可以嘗試以某種方式混淆密鑰(提高酒吧如何確定他們的需要),但是無法阻止他們獲得密鑰。
但是,根據爲什麼你需要存儲的密鑰,你可能能夠使用Asymmetric Key Cryptography。您將能夠存儲可能僅限於加密(而非解密)或認證目的的公鑰,同時能夠保護私鑰安全。
公鑰僅用於加密和簽名驗證。 – 2010-01-03 05:21:15
- 1. 對DataBinding的恐懼
- 2. 繼承C++(鑽石恐懼)
- 3. Android的密鑰存儲提供商 - 如何存儲密鑰
- 4. Android密鑰存儲文件
- 5. 在Android上存儲密鑰
- 6. Android密鑰存儲區存儲令牌
- 7. 存儲密鑰
- 8. 存儲密鑰
- 9. 如何打敗外包恐懼?
- 10. NetLogo:讓海龜們相互恐懼
- 11. 解密存儲Java密鑰存儲
- 12. 存儲AES_ENCRYPT密鑰
- 13. ECDSA密鑰存儲
- 14. 存儲AES密鑰
- 15. 如何使用Android密鑰存儲提供程序存儲密鑰
- 16. RSA加密,密鑰存儲
- 17. 加密密鑰存儲
- 18. Xamarin/Android和恐懼藍牙LE錯誤133(GATT_ERROR)
- 19. 如何保護解密密鑰免遭反編譯?
- 20. 在android中存儲RSA密鑰對
- 21. 在Android中存儲會話密鑰
- 22. 在android中存儲密鑰的位置?
- 23. 的Android存儲API密鑰文件
- 24. 如何在Android中存儲密鑰?
- 25. Android的安全存儲密鑰
- 26. 爪哇 - 如何存儲密鑰,密鑰存儲
- 27. 本地存儲多個密鑰存儲
- 28. 對稱密鑰存儲
- 29. wso2密鑰存儲問題
- 30. 存儲Kerberos會話密鑰
你不能「真正」防止有人反編譯的程序。您的安全模型最好考慮到這一點。 :-) – 2010-01-03 04:40:51
如果我從網絡服務器(密鑰)加載它,我如何確保請求不能被其他人制作(假設反編譯) – 2010-01-03 04:48:08
http://en.wikipedia.org/wiki/Public-key_cryptography可能對驗證請求很有用。 – 2010-01-03 04:52:23