iOS常用加密方法
来源:互联网 发布:nginx grpc 编辑:程序博客网 时间:2024/04/19 16:12
iOS常用加密方法(aes、md5、base64) 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; 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; NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; data = [GTMBase64 encodeData:data]; NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; return base64String; NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; data = [GTMBase64 decodeData:data]; NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; return base64String; data = [GTMBase64 encodeData:data]; NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; return base64String; data = [GTMBase64 decodeData:data]; NSString *base64String = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; return base64String; const char *original_str = [self UTF8String]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5(original_str, strlen(original_str), result); NSMutableString *hash = [NSMutableString string]; for (int i = 0; i < 16; i++) [hash appendFormat:@"X", result[i]]; return [hash lowercaseString];
1、AES加密
NSData+AES.h文件
//
// NSData-AES.h
// Smile
//
// Created by 周 敏 on 12-11-24.
// Copyright (c) 2012年 BOX. All rights reserved.
//
#import
@class NSString;
@interface NSData (Encryption)
- (NSData *)AES256EncryptWithKey:(NSString *)key; //加密
- (NSData *)AES256DecryptWithKey:(NSString *)key; //解密
@end
NSData+AES.m文件
//
// NSData-AES.h
// Smile
//
// Created by 周 敏 on 12-11-24.
// Copyright (c) 2012年 BOX. All rights reserved.
//
#import "NSData+AES.h"
#import
@implementation NSData (Encryption)
- (NSData *)AES256EncryptWithKey:(NSString *)key {//加密
}
- (NSData *)AES256DecryptWithKey:(NSString *)key {//解密
}
@end
这里AES在iOS加过密以后以nsdata的形式存下来,如果想以nsstring形式存储,那么对nsdata进行base64位编码。
2、BASE64编码
首先下载GTMBase64文件,在工程中加入三个文件
GTMDefines.h
GTMBase64.h
GTMBase64.m
你可以在这里找到这三个文件
http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87
你也可以在下面的demo里面找到这3个文件,demo会完整实现文章里面常用的3种编码方法。
我在此稍微封装一下:
.h文件
#pragma mark - base64
+ (NSString*)encodeBase64String:(NSString *)input;
+ (NSString*)decodeBase64String:(NSString *)input;
+ (NSString*)encodeBase64Data:(NSData *)data;
+ (NSString*)decodeBase64Data:(NSData *)data;
.m文件
#pragma mark - base64
+ (NSString*)encodeBase64String:(NSString * )input {
}
+ (NSString*)decodeBase64String:(NSString * )input {
}
+ (NSString*)encodeBase64Data:(NSData *)data {
}
+ (NSString*)decodeBase64Data:(NSData *)data {
}
3、MD5加密 www.2cto.com
NSString+MD5.h文件
//
// NSString+MD5Encrypt.h
// Smile
//
// Created by 周 敏 on 12-11-24.
// Copyright (c) 2012年 BOX. All rights reserved.
//
#import
@interface NSString (MD5)
- (NSString *)md5Encrypt;
@end
NSString+MD5.m文件
//
// NSString+MD5Encrypt.h
// Smile
//
// Created by 周 敏 on 12-11-24.
// Copyright (c) 2012年 BOX. All rights reserved.
//
#import "NSString+MD5.h"
@implementation NSString (MD5)
- (NSString *)md5Encrypt {
}
@end
demo含有这3种的使用方式,在AppDelegate.m文件里面,不会使用的自己参考一下
http://www.2cto.com/uploadfile/2012/1215/20121215123257741.zip
0 0
- ios常用加密方法
- iOS常用加密方法
- iOS 常用的加密方法
- iOS开发-iOS加密iOS常用加密方法三种
- iOS开发之常用的加密方法
- ios 常用加密
- iOS 常用加密
- iOS常用加密
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- iOS开发之常用加密方法(aes、md5、base64)
- iOS常用加密方法(aes、md5、base64)
- IOS开发之----常用加密方法(AES、MD5、Base64)
- iOS常用加密方法(aes、md5、base64)
- pathon的用途
- 如何反编译Android 的apk/dex/odex,获得源码
- iOS 组件化方案探索
- 开源项目react-native-scrollable-tab-view的基本使用方法
- MFC程序应用BCGControl界面效果
- iOS常用加密方法
- 十五.Android网络通信与Volley简单介绍
- bzoj 2927 博弈论
- greendao 数据库工程里使用的问题 database from version 3 to 1
- 通过IIS配置网站和相关错误处理
- Struts2入门——4,访问Action
- 找出出现次数大于等于总数一半的数 (O(1)空间 O(n)时间)
- [LeetCode] 152. Maximum Product Subarray
- 声明