swift中调用OC对称加密AES
2016-02-19 15:32
856 查看
swift中调用AES加密
AES加密方法:最终以16进制字符串输出
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; }
相关文章推荐
- SWIFT 开发环境
- Swift高阶函数介绍(闭包、Map、Filter、Reduce)
- 认识一下Kotlin语言,Android平台的Swift
- 《从零开始学Swift》学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?
- Swift不等于nil
- Swift 添加自定义响应事件
- swift自学源码
- 对苹果“五仁”编程语言Swift的简单分析
- swift 通知的封装
- 《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件
- 《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件
- swift学习笔记-UI篇之UILabel
- Swift 学习笔记 class
- Swift Swizzle
- ubuntu swift
- Swift - 故事板storyboard的用法
- swift-学习笔记一《基础》
- Swift语法
- OC 和 Swift 混编 之二 Swift 中调用 OC
- OC 和 Swift 混编 OC 中调用 Swift