2011-09-28 83 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),并与密码的哈希比较输入哈希值。这样,密码永远不会以明文保存,并且如果您的服务器有一天遭到黑客入侵,他们只会得到哈希值,并且必须执行映像前攻击才能获取密码。