2011-09-28 66 views

回答

4

還有就是公共的密碼API。

#import <CommonCrypto/CommonCryptor.h> 

+ (NSData *)doCipher:(NSData *)dataIn 
        iv:(NSData *)iv 
       key:(NSData *)symmetricKey 
      context:(CCOperation)encryptOrDecrypt 
{ 
    CCCryptorStatus ccStatus = kCCSuccess; 
    size_t   cryptBytes = 0; // Number of bytes moved to buffer. 
    NSMutableData *dataOut = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128]; 

    ccStatus = CCCrypt(encryptOrDecrypt, 
         kCCAlgorithmAES128, 
         kCCOptionPKCS7Padding, 
         symmetricKey.bytes, 
         kCCKeySizeAES128, 
         iv.bytes, 
         dataIn.bytes, 
         dataIn.length, 
         dataOut.mutableBytes, 
         dataOut.length, 
         &cryptBytes); 

    if (ccStatus != kCCSuccess) { 
     NSLog(@"CCCrypt status: %d", ccStatus); 
    } 

    dataOut.length = cryptBytes; 

    return dataOut; 
} 

此外還添加Security.framework到您的項目。

如果安全是非常重要的考慮讓別人安全的經驗創建的代碼和協議。如果安全性不重要,只需發送密碼即可。

在應用中的一些錯誤並不壞,應用還基本工作,在安全漏洞一個和所有安全都將丟失。

良好的安全性並不像人們想象的那麼簡單。

0

如果你只對密碼感興趣的您不妨使用散列函數(MD5,SHA),並與密碼的哈希比較輸入哈希值。這樣,密碼永遠不會以明文保存,並且如果您的服務器有一天遭到黑客入侵,他們只會得到哈希值,並且必須執行映像前攻擊才能獲取密碼。