iOS 利用MD5或SHA1加密算法给字符串加密

MD5加密算法多用于文件的验证, 比如说登录密码的匹配就是利用MD5的加密方式,还比如说安卓手机刷ROM包, windows封装系统等为了防止他人对文件进行篡改,都有使用MD5加密对其验证.

SHA1用的不多,这里也做个使用笔记。

下面介绍一下MD5加密实现方法:
因为我们是要给字符串进行MD5加密,所以我们可以使用Catagory给Nsstring类扩展一个 MD5加密的功能

首先创建一个Catagory类

在.h里面建立一个方法

@interface NSString (MD5)

- (NSString *)stringToMD5:(NSString *)str;
-(NSString*) sha1:(NSString *)str;

@end


在.m里实现方法

#import "NSString+MD5.h"
#import <CommonCrypto/CommonCrypto.h>
/*
记得要导入这个框架和它的头文件
*/
@implementation NSString (MD5)

- (NSString *)stringToMD5:(NSString *)str
{

//1.首先将字符串转换成UTF-8编码, 因为MD5加密是基于C语言的,所以要先把字符串转化成C语言的字符串
    const char *fooData = [str UTF8String];

//2.然后创建一个字符串数组,接收MD5的值
    unsigned char result[CC_MD5_DIGEST_LENGTH];

//3.计算MD5的值, 这是官方封装好的加密方法:把我们输入的字符串转换成16进制的32位数,然后存储到result中
    CC_MD5(fooData, (CC_LONG)strlen(fooData), result);
// CC_MD5(fooData, (unsigned int)strlen(fooData), result);
    /**
    第一个参数:要加密的字符串
    第二个参数: 获取要加密字符串的长度
    第三个参数: 接收结果的数组
    */

//4.创建一个字符串保存加密结果
    NSMutableString *saveResult = [NSMutableString string];
// NSMutableString *saveResult = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];

//5.从result 数组中获取加密结果并放到 saveResult中
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [saveResult appendFormat:@"%02x", result[i]];
    }
    /*
       x表示十六进制,%02X  意思是不足两位将用0补齐,如果多余两位则不影响
        NSLog("%02X", 0x888);  //888
        NSLog("%02X", 0x4); //04
       x大写或小写,输出也会相应转成大写或小写
     */
    return saveResult;
}

//sha1 encode
-(NSString*) sha1:(NSString *)str
{
    const char *cstr = [str cStringUsingEncoding:NSUTF8StringEncoding];
    NSData *data = [NSData dataWithBytes:cstr length:str.length];
    
    uint8_t digest[CC_SHA1_DIGEST_LENGTH];
    
    CC_SHA1(data.bytes, (unsigned int)data.length, digest);
    
    NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
    
    for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
        [output appendFormat:@"%02x", digest[i]];
    
    return output;
}



猜你喜欢

转载自blog.csdn.net/txz_gray/article/details/58588324