当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS开发 AES+Base64

iOS开发 AES+Base64

2020年08月14日  | 移动技术网移动技术  | 我要评论

```objectivec
size_t const kKeySize = kCCKeySizeAES128;

NSString *const kInitVector = @"16-Bytes--String";

- (NSString *)encryptAES:(NSString *)content key:(NSString *)key {

    NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding];

    NSUInteger dataLength = contentData.length;

    // 为结束符'\\0' +1

char keyPtr[kKeySize + 1];

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

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

    // 密文长度 <= 明文长度 + BlockSize

   

```objectivec
 size_t encryptSize = dataLength + kCCBlockSizeAES128;

    void *encryptedBytes = malloc(encryptSize);

    size_t actualOutSize = 0;

    NSData *initVector = [kInitVector dataUsingEncoding:NSUTF8StringEncoding];

    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,

                                          kCCAlgorithmAES,

                                          kCCOptionPKCS7Padding,  // 系统默认使用 CBC,然后指明使用 PKCS7Padding

                                          keyPtr,

                                          kKeySize,

                                          initVector.bytes,

                                          contentData.bytes,

                                          dataLength,

                                          encryptedBytes,

                                          encryptSize,

                                          &actualOutSize);

    if (cryptStatus == kCCSuccess) {

        // 对加密后的数据进行 base64 编码

        return [[NSData dataWithBytesNoCopy:encryptedBytes length:actualOutSize] base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

    }

    free(encryptedBytes);

    return nil;

}

本文地址:https://blog.csdn.net/josnmakechen/article/details/107940972

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网