2016-04-29 75 views
1

在我的應用程序的Objective-C的反編譯保護我存儲密鑰加密和解密數據,它被存儲爲一個字符串定義字符串值

#define ClientSecret @"123456" 

當應用程序反編譯此值可輕鬆到達.. 。如何最好地保護它?

該值不需要是一個定義...是否有一些建議的方法來確保這些值的安全性,這些值難以排列在代碼中?

這個問題是雙方的iOS和OSX

+0

這是與Objective-C相關的,而不是.Net –

+1

這兩個都不是可能的重複。這是C++。此外,答案中討論的概念,特別是第二個,適用於_all_可執行文件,無論它們是以何種語言編寫的。 – dandan78

+0

但我想要一個與Objective-C相關的答案,如提供的mortgy,而不是一般的說話 –

回答

1

UAObfuscatedString可以幫助掩蓋你的鑰匙。但在某些時候,祕密價值必須可用。例如。如果你的祕密是一個API密鑰,它將不得不被傳遞給該API,並且有人可以在API調用上設置一個斷點並在那裏讀取該值。

+1

我改變了我認爲你可能打算的鏈接,雖然你可以仔細檢查... – NSGod

+0

我會提防UAObfuscated字符串,它是開源惡意用戶可以找到UAObfuscatedString的代碼在每個方法中放置斷點並查看調用順序。我會檢查這個: http://www.splinter.com.au/2014/09/16/storing-secret-keys/ –