首页 热点推荐 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

iOS中使用MD5加密

2024-12-17 来源:花图问答

在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文件用于使用.

显示全文