2010-01-06 40 views
2

如何加密nsstring並將其存儲在文件中,以及如何對其進行解密。使用objective-c加密和解密密碼

請建議我笏API的我SHLD使用...

+0

也許你應該指定你的目標平臺是什麼。你在iPhone上做這個嗎?在Mac OS X上? *咳嗽* GNUstep? – dreamlax 2010-01-07 02:48:26

回答

1

這是我用於encryptiong的函數。

DES_cfb64_encrypt((無符號字符*)pchInputData,(無符號字符*)pchOutCipher, 大小,&時間表,& ParityKey,&沒有,DES_ENCRYPT);

我必須將其轉換爲base64,以便我可以將它存儲在一個文件中。
pstrResult = Base64encoding(size,(unsigned char *)pchOutCipher);

0

您可以使用GPGME

0

雖然不是一個API調用,你可以實現一個簡單的XOR加密。這是快速和簡單的實施,並根據您的字符串的特點(即如果它是固定的長度)可以非常安全。如果你有一個可變長度的字符串XOR加密可能不夠安全,這取決於你的需求。看看Wikipedia article

+0

異或密碼從不*安全。這是一種容易和輕微顛倒的混淆。 – dreamlax 2010-01-06 20:24:43

+0

也許我錯了,但我的印象是,使用與要加密的數據長度相等的唯一密鑰在理論上是不可破解的,實際上是一次性密碼。使用簡短的重複鍵實際上被顛倒過來。 – mikecsh 2010-01-06 21:50:53

+1

所有你需要做的破解XOR密碼的方法是反彙編這個二進制文件,尋找一個與密碼長度相同或者超過任何固定長度數據的循環。然後,你不僅有密碼,還有密碼。這可以通過多種技術來完成,包括使用分析工具來測量內存中的相同區域中XOR CPU指令的使用情況,以便加載磁盤上的數據。無論密碼是對還是錯,無關緊要,最終都會得到密碼,一旦擁有密碼,就可以恢復明文。 – dreamlax 2010-01-07 02:38:22

0

如果您先存儲密碼,請決定是否需要重新使用密碼或是否需要檢查用戶是否輸入了正確的密碼。

如果您只需驗證用戶是否輸入了正確的密碼,然後使用散列存儲密碼,並將用戶輸入的散列與您存儲的散列進行比較。如果兩個哈希值相等,那麼用戶有[可能]正確輸入它。有關散列的更多信息,請參見Wikipedia

如果您需要重新使用密碼(即用於與其他服務進行身份驗證(例如連接到Internet服務),請使用Apple's Keychain service。如果您的目標是iPhone,請查看this相關文檔。