2011-09-26 68 views
1

有人問我是否可以通過一個小型項目幫助他們。在我遇到SHA-1加密之前,一切都很完美。我一直在研究它幾天,但無法找到解決這個問題的方法。使用SHA1散列加密NSString

目標是加密NSString,將其發送到遠程PHP腳本並從服務器接收回答。我管理髮送和接收部分,但不知道'硬性部分'

該字符串需要在客戶端進行編碼,需要在接收端進行檢查,所以需要在那裏解碼(不是我的問題)。是否有可能實現這個目標,如果接收端知道它的去加密算法,SHA-1哈希值是否可以解碼?

+5

[SHA-1](http://en.wikipedia.org/wiki/SHA-1)不是加密,它是一個散列。你不能「解密」它,因爲它首先沒有加密。它基本上只是一個校驗和,它不包含信息。 – rid

+0

如果連接使用https,這不夠嗎?否則,xcode的文檔具有CryptoExercise,它不會在模擬器中運行,只能在設備上運行。 –

回答

1

如果接收方知道字符串應該是(例如密碼),那麼您可以SHA1在發送方上散列密碼,將其發送給接收方,接收方可以根據本地計算的SHA1散列已知的密碼。

但是,這種方法也有問題,你可能不應該自己發明密碼協議。或者,如果您傳遞了服務器尚不知道的一些信息,那麼您將需要一種完全不同的方法。

2

SHA爲其處理的數據創建了一個不可逆的簽名,它不是本身的加密,而是哈希(安全哈希算法)。

它可以用作認證協議的一部分。如果雙方都有一個共同的價值觀並且想忍受它們都具有相同的價值,但不想發送價值(可以通過諮詢看出),那麼可以使用散列。發起者散列(SHA-1)共享值,將散列發送到另一側。接收器散列它們的共享值副本並比較散列值。

有很多方法可以實現,比如只共享散列值,@Greg提到了這個方法。更重要的是,@Greg提到,不應該重新設計安全方法。我會補充說,如果安全性很重要,請獲得經過驗證的安全專家的幫助。當我開發一個安全的產品時,我總是會審查它。

+0

感謝分配,你的回答爲我清除了一切。 –