2018-06-01AES加密

我們在傳遞敏感數(shù)據是,需要對data進行加密。我們采用高AES 128位加密。加密模式采用CBC,填充模式采用PKCS5Padding方式。

+(NSString*)AES128Encrypt:(NSString*)plainText

{

? ? char keyPtr[kCCKeySizeAES128+1];

? ? memset(keyPtr,0,sizeof(keyPtr));

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

? ? char ivPtr[kCCBlockSizeAES128+1];

? ? memset(ivPtr,0,sizeof(ivPtr));

? ? [gIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];

? ? NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];

? ? NSIntegerdataLength = [datalength];

? ? NSInteger diff = kCCKeySizeAES128 - (dataLength % kCCKeySizeAES128);

? ? NSIntegernewSize =0;

? ? if(diff >0)

? ? {

? ? ? ? newSize = dataLength + diff;

? ? }

? ? chardataPtr[newSize];

? ? memcpy(dataPtr, [databytes], [datalength]);

? ? for(inti =0; i < diff; i++)

? ? {

? ? ? ? dataPtr[i + dataLength] =0x00;

? ? }

? ? size_tbufferSize = newSize +kCCBlockSizeAES128;

? ? void*buffer =malloc(bufferSize);

? ? memset(buffer,0, bufferSize);

? ? size_tnumBytesCrypted =0;

? ? CCCryptorStatuscryptStatus =CCCrypt(kCCEncrypt,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? kCCAlgorithmAES128,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0x0000|kCCOptionPKCS7Padding,? ? ? ? ? ? ? //PKCS7Padding

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? keyPtr,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? kCCKeySizeAES128,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ivPtr,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataPtr,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sizeof(dataPtr),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? buffer,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bufferSize,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? &numBytesCrypted);

? ? if(cryptStatus ==kCCSuccess) {

? ? ? ? NSData*resultData = [NSDatadataWithBytesNoCopy:bufferlength:numBytesCrypted];

? ? ? ? return[GTMBase64stringByEncodingData:resultData];

? ? }

? ? free(buffer);

? ? return nil;

}

+(NSString*)AES128Decrypt:(NSString*)encryptText

{

? ? charkeyPtr[kCCKeySizeAES128+1];

? ? memset(keyPtr,0,sizeof(keyPtr));

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


? ? char ivPtr[kCCBlockSizeAES128 + 1];

? ? memset(ivPtr,0,sizeof(ivPtr));

? ? [gIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];

? ? NSData *data = [GTMBase64 decodeData:[encryptText dataUsingEncoding:NSUTF8StringEncoding]];

? ? NSUIntegerdataLength = [datalength];

? ? size_tbufferSize = dataLength +kCCBlockSizeAES128;

? ? void*buffer =malloc(bufferSize);

? ? size_tnumBytesCrypted =0;

? ? CCCryptorStatuscryptStatus =CCCrypt(kCCDecrypt,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? kCCAlgorithmAES128,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0x0000|kCCOptionPKCS7Padding,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? keyPtr,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? kCCBlockSizeAES128,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ivPtr,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [databytes],

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataLength,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? buffer,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bufferSize,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? &numBytesCrypted);

? ? if(cryptStatus ==kCCSuccess) {

? ? ? ? NSData*resultData = [NSDatadataWithBytesNoCopy:bufferlength:numBytesCrypted];

? ? ? ? return [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];

? ? }

? ? free(buffer);

? ? return nil;

}

以上為加密和解密的方法。其中gkey和gIv為秘鑰和偏移量。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • AES加密 之前公司項目有需要用到這個加密,但是由于網絡上找到的都是沒有設置向量的,所以后來進行整理之后,自己寫了...
    寧小缺閱讀 3,420評論 9 3
  • DEMO 綜述: 一行代碼完成AES加密,加密模式 AES128 + ECB + NoPadding DEMO下載...
    iccpeng閱讀 8,801評論 26 59
  • 首先羅列一些知識點: 1.加密算法通常分為對稱性加密算法和非對稱性加密算法:對于對稱性加密算法,信息接收雙方都需事...
    JonesCxy閱讀 1,577評論 2 4
  • 引言 如今手機app五彩繽紛,確保手機用戶的數(shù)據安全是開發(fā)人員必須掌握的技巧,下面通過實例介紹DES在androi...
    freesan44閱讀 1,228評論 1 1
  • 找一個沉默的女子 一同生活 劈柴喂馬,善待周遭 找一個沉默的女子 一同漫談 攜手并肩,共赴盛宴 找一個沉默的女子 ...
    阿琴姑娘閱讀 970評論 71 58

友情鏈接更多精彩內容