swift中调用OC对称加密AES

来源:互联网 发布:药智数据库官网 编辑:程序博客网 时间:2024/06/06 10:03

swift中调用AES加密

let aesSecretKey="**********"CCUser.defaultUser.login(userNameTF.text!.AES128EncryptWithKey(aesSecretKey), password: passwordTF.text!.AES128EncryptWithKey(aesSecretKey)){(result)->Void in}

AES加密方法:最终以16进制字符串输出

//NSString->NSString,- (NSString *)AES128EncryptWithKey:(NSString *)key{   NSData *encryptData = [[self dataUsingEncoding:NSUTF8StringEncoding] AES128EncryptWithKey:key];//    const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];//    NSData *data = [NSData dataWithBytes:cstr length:self.length];//    NSData *encryptData = [data AES128EncryptWithKey:key];//    NSData转16进制字符串输出    if (!encryptData || [encryptData length] == 0) {        return @"";    }    NSMutableString *string = [[NSMutableString alloc] initWithCapacity:[encryptData length]];    [encryptData enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop) {        unsigned char *dataBytes = (unsigned char*)bytes;        for (NSInteger i = 0; i < byteRange.length; i++) {            NSString *hexStr = [NSString stringWithFormat:@"%x", (dataBytes[i]) & 0xff];            if ([hexStr length] == 2) {                [string appendString:hexStr];            } else {                [string appendFormat:@"0%@", hexStr];            }        }    }];    NSLog(@"string %@",string);    return string;}//NSString->NSData- (NSData *)AES128EncryptWithKey:(NSString *)key {    char keyPtr[kCCKeySizeAES128+1];    bzero(keyPtr, sizeof(keyPtr));    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];    NSUInteger dataLength = [self length];    size_t bufferSize = dataLength + kCCBlockSizeAES128;    void *buffer = malloc(bufferSize);    size_t numBytesEncrypted = 0;    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,  kCCAlgorithmAES,                                          kCCOptionPKCS7Padding | kCCOptionECBMode,                                          keyPtr,  kCCKeySizeAES128 ,                                          NULL,                                          [self bytes], dataLength,                                          buffer, bufferSize,                                          &numBytesEncrypted);    if (cryptStatus == kCCSuccess) {        return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];    }    free(buffer);    return nil;}
0 0
原创粉丝点击