iOS AES 加密解密

//AES加密

+(NSString*)encodeAESWith:(NSString*)str{

 if(!str) {

 return@"";

    }

NSString* key=AESKey;//密钥

NSData*data=[str dataUsingEncoding:NSUTF8StringEncoding];//待加密字符转为NSData型

 charkeyPtr[kKeySize+1];

    memset(keyPtr,0,sizeof(keyPtr));

    [keygetCString:keyPtrmaxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];

    NSUIntegerdataLength = [datalength];

    size_tbufferSize = dataLength +kCCBlockSizeAES128;

 void*buffer =malloc(bufferSize);

    size_tnumBytesCrypted =0;

    NSData*initVector = [kInitVectordataUsingEncoding:NSUTF8StringEncoding];

    CCCryptorStatuscryptStatus =CCCrypt(kCCEncrypt,

                                         kCCAlgorithmAES128,

                                         kCCOptionPKCS7Padding,

                                         keyPtr,

                                         kCCBlockSizeAES128,

                                         initVector.bytes,

                                         [databytes],

                                         dataLength,

                                         buffer,

                                         bufferSize,

                                         &numBytesCrypted);

 if(cryptStatus ==kCCSuccess) {

        NSData*resultData=[NSDatadataWithBytesNoCopy:bufferlength:numBytesCrypted];

        NSString*result = [resultDatabase64EncodedStringWithOptions:0];

 returnresult;

    }

    free(buffer);

 return@"";

}


//AES解密

+ (NSString*)decodeAESString:(NSString*)aesEncodedString{

    if(!aesEncodedString){

        return@"";

    }

    NSData*contentData = [[NSDataalloc]initWithBase64EncodedString:aesEncodedStringoptions:NSDataBase64DecodingIgnoreUnknownCharacters];

    NSUIntegerdataLength = contentData.length;

    charkeyPtr[kKeySize+1];

    memset(keyPtr,0,sizeof(keyPtr));

    [AESKeygetCString:keyPtrmaxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];

    size_tdecryptSize = dataLength +kCCBlockSizeAES128;

    void*decryptedBytes =malloc(decryptSize);

    size_tactualOutSize =0;

    NSData*initVector = [kInitVectordataUsingEncoding:NSUTF8StringEncoding];

    CCCryptorStatuscryptStatus =CCCrypt(kCCDecrypt,

                                          kCCAlgorithmAES128,

                                          kCCOptionPKCS7Padding,

                                          keyPtr,

                                          kKeySize,

                                          initVector.bytes,

                                          contentData.bytes,

                                          dataLength,

                                          decryptedBytes,

                                          decryptSize,

                                          &actualOutSize);

    if(cryptStatus ==kCCSuccess) {

        NSData*dataTemp = [NSDatadataWithBytesNoCopy:decryptedByteslength:actualOutSize];


        NSString*str = [[NSStringalloc]initWithData:dataTempencoding:NSUTF8StringEncoding];

        returnstr;

    }

    free(decryptedBytes);

    return@"";

}

你可能感兴趣的:(iOS AES 加密解密)