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;
}