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];

//對(duì)數(shù)據(jù)進(jìn)行加密

NSData*result = [dataaes256_encrypt:key];

//轉(zhuǎn)換為2進(jìn)制字符串

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

{

//轉(zhuǎn)換為2進(jìn)制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];

}

//對(duì)數(shù)據(jù)進(jìn)行解密

NSData* result = [dataaes256_decrypt:key];

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

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

}

    returnnil;

}

@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容