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];
//對數(shù)據(jù)進行加密
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];
}
//對數(shù)據(jù)進行解密
NSData* result = [dataaes256_decrypt:key];
if(result && result.length>0) {
return[[NSStringalloc]initWithData:resultencoding:NSUTF8StringEncoding];
}
returnnil;
}
@end
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。