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ù)。