在iOS中使用MD5加密较简单,需要引入头文件CommonCrypto/CommonDigest.h
,我们单独新建一个用于MD5加密的类Encryption
,此类继承NSObject
。
Encryption.h
文件如下:
#import <Foundation/Foundation.h>
@interface Encryption : NSObject
//md5加密方法
+ (NSString *)md5EncryptWithString:(NSString *)string;
@end
Encryption.m
文件如下:
#import "Encryption.h"
#import <CommonCrypto/CommonDigest.h>
//秘钥
static NSString *encryptionKey = @"nha735n197nxn(N′568GGS%d~~9naei';45vhhafdjkv]32rpks;lg,];:vjo(&**&^)";
@implementation Encryption
+ (NSString *)md5EncryptWithString:(NSString *)string{
return [self md5:[NSString stringWithFormat:@"%@%@", encryptionKey, string]];
}
+ (NSString *)md5:(NSString *)string{
const char *cStr = [string UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, (CC_LONG)strlen(cStr), digest);
NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
[result appendFormat:@"%02X", digest[i]];
}
return result;
}
@end
调用Encryption.h
中的加密方法进行测试,代码如下:
//调用Encryption中的加密方法
NSLog(@"-----%@", [Encryption md5EncryptWithString:@"hello"]);
调试窗口成功输出打印信息:
注意:在实际工程中,我们不会把 Encryption.m
中的秘钥暴露出来,因此实际工程中需要把 Encryption
类打包成静态库,只暴露 .h
文件用于使用.
网友评论