iOS AES256加密

import"NSData+AES256.h"

#import 《Foundation/Foundation.h》

#import 《CommonCrypto/CommonDigest.h》

#import 《CommonCrypto/CommonCryptor.h》

@interfaceNSData (AES256)

- (NSData*)aes256_encrypt:(NSString*)key;

- (NSData*)aes256_decrypt:(NSString*)key;

@end

import"NSData+AES256.m"

#import"NSData+AES256.h"

@implementationNSData (AES256)

- (NSData*)aes256_encrypt:(NSString*)key//加密

{

    charkeyPtr[kCCKeySizeAES256+1];

    bzero(keyPtr,sizeof(keyPtr));

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

    NSUIntegerdataLength = [selflength];

    size_tbufferSize = dataLength +kCCBlockSizeAES128;

    void*buffer =malloc(bufferSize);

    size_tnumBytesEncrypted =0;

    CCCryptorStatuscryptStatus =CCCrypt(kCCEncrypt,kCCAlgorithmAES128,

    kCCOptionPKCS7Padding|kCCOptionECBMode,

    keyPtr,kCCBlockSizeAES128,NULL,[selfbytes], dataLength,buffer, bufferSize,&numBytesEncrypted);

    if(cryptStatus ==kCCSuccess)

    {

    return[NSDatadataWithBytesNoCopy:bufferlength:numBytesEncrypted];

    }

    free(buffer);

    returnnil;

    }

- (NSData*)aes256_decrypt:(NSString*)key//解密

{

    charkeyPtr[kCCKeySizeAES256+1];

    bzero(keyPtr,sizeof(keyPtr));

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

    NSUIntegerdataLength = [selflength];

    size_tbufferSize = dataLength +kCCBlockSizeAES128;

    void*buffer =malloc(bufferSize);

    size_tnumBytesDecrypted =0;

    CCCryptorStatuscryptStatus =CCCrypt(kCCDecrypt,kCCAlgorithmAES128,

    kCCOptionPKCS7Padding|kCCOptionECBMode,keyPtr,kCCBlockSizeAES128,NULL,[selfbytes], dataLength,buffer, bufferSize,&numBytesDecrypted);

    if(cryptStatus ==kCCSuccess)

    {

    return[NSDatadataWithBytesNoCopy:bufferlength:numBytesDecrypted];

    }

    free(buffer);

    returnnil;

    }

@end

import"NSString+AES256.h"


#import 《Foundation/Foundation.h》

#import"NSData+AES256.h"

@interfaceNSString (AES256)

- (NSData*)aes256_encrypt:(NSString*)key;

- (NSData*)aes256_decrypt:(NSString*)key;

@end

import"NSString+AES256.m"

#import"NSString+AES256.h"

#import 《Security/Security.h》

@implementationNSString (AES256)

-(NSString*) aes256_encrypt:(NSString*)key

{

constchar*cstr = [selfcStringUsingEncoding:NSUTF8StringEncoding];

NSData*data = [NSDatadataWithBytes:cstrlength:self.length];

//对数据进行加密

NSData*result = [dataaes256_encrypt:key];

//转换为2进制字符串

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

Byte*datas = (Byte*)[resultbytes];

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

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

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

}

returnoutput;

}

returnnil;

}

-(NSString*) aes256_decrypt:(NSString*)key

{

//转换为2进制Data

NSMutableData*data = [NSMutableDatadataWithCapacity:self.length/2];

unsignedcharwhole_byte;

charbyte_chars[3] = {'\0','\0','\0'};

inti;

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

byte_chars[0] = [selfcharacterAtIndex:i*2];

byte_chars[1] = [selfcharacterAtIndex:i*2+1];

whole_byte =strtol(byte_chars,NULL,16);

[dataappendBytes:&whole_bytelength:1];

}

//对数据进行解密

NSData* result = [dataaes256_decrypt:key];

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

return[[NSStringalloc]initWithData:resultencoding:NSUTF8StringEncoding];

}

    returnnil;

}

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 8,199评论 0 7
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,201评论 2 7
  • 果园采摘 今天三姐和外甥来看老妈,午饭后三姐策划家人一起去外面玩。可是我想睡午觉,不大有兴趣出门。所以就建议三姐别...
    青青田园阅读 1,337评论 1 4
  • ==== 1.剁手 之前在家买的 NETGEAR R6400 放家了,等找到工作再折腾,前两天看东哥家的 PHIC...
    EDWARD_yin阅读 6,286评论 0 2
  • 微博分享失败 {"error":"{\"error\":\"Insufficient app permission...
    白貂阅读 3,430评论 0 0

友情链接更多精彩内容