iOSAES加密的實現

來源:互聯網
上載者:User

標籤:[1]   character   sae   sign   for   datawit   size_t   dex   a*   

+(NSData *)AES256ParmEncryptWithKey:(NSString *)key Encrypttext:(NSData *)text  //加密

{

    char keyPtr[kCCKeySizeAES256+1];

    bzero(keyPtr, sizeof(keyPtr));

    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [text length];

    size_t bufferSize = dataLength + kCCBlockSizeAES128;

    void *buffer = malloc(bufferSize);

    size_t numBytesEncrypted = 0;

    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,

                                          kCCOptionPKCS7Padding | kCCOptionECBMode,

                                          keyPtr, kCCBlockSizeAES128,

                                          NULL,

                                          [text bytes], dataLength,

                                          buffer, bufferSize,

                                          &numBytesEncrypted);

    if (cryptStatus == kCCSuccess) {

        return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];

    }

    free(buffer);

    return nil;

}

 

+ (NSData *)AES256ParmDecryptWithKey:(NSString *)key Decrypttext:(NSData *)text  //解密

{

    char keyPtr[kCCKeySizeAES256+1];

    bzero(keyPtr, sizeof(keyPtr));

    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

    NSUInteger dataLength = [text length];

    size_t bufferSize = dataLength + kCCBlockSizeAES128;

    void *buffer = malloc(bufferSize);

    size_t numBytesDecrypted = 0;

    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128,

                                          kCCOptionPKCS7Padding | kCCOptionECBMode,

                                          keyPtr, kCCBlockSizeAES128,

                                          NULL,

                                          [text bytes], dataLength,

                                          buffer, bufferSize,

                                          &numBytesDecrypted);

    if (cryptStatus == kCCSuccess) {

        return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];

    }

    free(buffer);

    return nil;

}

 

+(NSString *) aes256_encrypt:(NSString *)key Encrypttext:(NSString *)text

{

    const char *cstr = [text cStringUsingEncoding:NSUTF8StringEncoding];

    NSData *data = [NSData dataWithBytes:cstr length:text.length];

    //對資料進行加密

    NSData *result = [LanAES AES256ParmEncryptWithKey:key Encrypttext:data];

    

    //轉換為2進位字串

    if (result && result.length > 0) {

        

        Byte *datas = (Byte*)[result bytes];

        NSMutableString *output = [NSMutableString stringWithCapacity:result.length * 2];

        for(int i = 0; i < result.length; i++){

            [output appendFormat:@"%02x", datas[i]];

        }

        return output;

    }

    return nil;

}

 

+(NSString *) aes256_decrypt:(NSString *)key Decrypttext:(NSString *)text

{

    //轉換為2進位Data

    NSMutableData *data = [NSMutableData dataWithCapacity:text.length / 2];

    unsigned char whole_byte;

    char byte_chars[3] = {‘\0‘,‘\0‘,‘\0‘};

    int i;

    for (i=0; i < [text length] / 2; i++) {

        byte_chars[0] = [text characterAtIndex:i*2];

        byte_chars[1] = [text characterAtIndex:i*2+1];

        whole_byte = strtol(byte_chars, NULL, 16);

        [data appendBytes:&whole_byte length:1];

    }

    

    //對資料進行解密

    NSData* result = [LanAES  AES256ParmDecryptWithKey:key Decrypttext:data];

    if (result && result.length > 0) {

        return [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];

    }

    return nil;

}

 

iOSAES加密的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.