2011-09-28 5 views

답변

4

공통 Crypto 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; 
} 

또한 보안. 프레임 워크를 프로젝트에 추가하십시오.

보안이 중요한 경우 보안 경험이있는 사람이 코드 및 프로토콜을 만드는 것이 좋습니다. 보안이 중요하지 않은 경우 암호를 일반 텍스트로 보내십시오.

앱의 버그가 그리 좋지는 않지만 기본적으로 앱은 기본적으로 작동하며 보안 및 모든 보안 버그가 하나도 사라집니다.

좋은 보안은 생각만큼 쉽지 않습니다.

0

암호에만 관심이 있다면 해시 함수 (md5, sha)를 사용하고 입력 해시와 암호의 해시를 비교할 수 있습니다. 그렇게하면 암호가 일반 텍스트로 저장되지 않으며 서버가 해킹 당하면 해시 만 발생하고 암호를 얻으려면 사전 이미지 공격을 수행해야합니다.

관련 문제