1、AES加密
- -
(NSData *)AES256EncryptWithKey:(NSString *)key; //加密 - -
(NSData *)AES256DecryptWithKey:(NSString *)key; //解密
- -
(NSData *)AES256EncryptWithKey:(NSString *)key {//加密 -
char keyPtr[kCCKeySizeAES256+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, kCCAlgorithmAES128, -
kCCOptionPKCS7Padding | kCCOptionECBMode, -
keyPtr, kCCBlockSizeAES128, -
NULL, -
[self bytes], dataLength, -
buffer, bufferSize, -
&numBytesEncrypted); -
if (cryptStatus == kCCSuccess) { -
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; -
} -
free(buffer); -
return nil; - }
-
-
- -
(NSData *)AES256DecryptWithKey:(NSString *)key {//解密 -
char keyPtr[kCCKeySizeAES256+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 numBytesDecrypted = 0; -
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, -
kCCOptionPKCS7Padding | kCCOptionECBMode, -
keyPtr, kCCBlockSizeAES128, -
NULL, -
[self bytes], dataLength, -
buffer, bufferSize, -
&numBytesDecrypted); -
if (cryptStatus == kCCSuccess) { -
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted]; -
} -
free(buffer); -
return nil; - }
-
这里AES在iOS加过密以后以NSData的形式存下来,如果想以NSString形式存储,那么对NSData进行base64位编码。
2、BASE64编码
- +
(NSString*)encodeBase64String:(NSString *)input; - +
(NSString*)decodeBase64String:(NSString *)input; - +
(NSString*)encodeBase64Data:(NSData *)data; - +
(NSString*)decodeBase64Data:(NSData *)data;
- +
(NSString*)encodeBase64String:(NSString * )input { -
NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; -
data = [GTMBase64 encodeData:data]; -
NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; -
return base64String; - }
-
- +
(NSString*)decodeBase64String:(NSString * )input { -
NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; -
data = [GTMBase64 decodeData:data]; -
NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; -
return base64String; - }
-
- +
(NSString*)encodeBase64Data:(NSData *)data { -
data = [GTMBase64 encodeData:data]; -
NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; -
return base64String; - }
-
- +
(NSString*)decodeBase64Data:(NSData *)data { -
data = [GTMBase64 decodeData:data]; -
NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; -
return base64String; - }
3、MD5加密
- + (NSString *) md5:(NSString *)str;
-
-
-
+ (NSString *) md5:(NSString *)str {
const char *cStr = [str UTF8String];
unsigned char result[16];
CC_MD5( cStr, strlen(cStr), result );
return [[NSString stringWithFormat:
@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
] uppercaseString];
}