MD5加密:HASH算法一種详民、 是生成32位的數(shù)字字母混合碼蓬豁。
特點:
1箭昵、任意數(shù)據(jù)得出的MD5值長度都是32
2狭姨、對原數(shù)據(jù)進行任何改動拨拓,所得到的MD5值都有很大區(qū)別
應(yīng)用:
主要運用在數(shù)字簽名躺枕、口令加密等方面
MD5改進(加鹽等):
現(xiàn)在的MD5已不再是絕對安全服猪,對此供填,可以對MD5稍作改進,以增加解密的難度
加鹽(Salt):在明文的固定位置插入隨機串罢猪,然后再進行MD5
寫一個NSString分類近她,NSString+wxMD5
#import "NSString+wxMD5.h"
#import <CommonCrypto/CommonDigest.h>
@implementation NSString (wxMD5)
+ (NSString *)getmd5Str:(NSString *)str
{
//傳入?yún)?shù),轉(zhuǎn)化成char
const char *cStr = [str UTF8String];
//開辟一個16字節(jié)的空間
unsigned char result[16];
/*
extern unsigned char * CC_MD5(const void *data, CC_LONG len, unsigned char *md)官方封裝好的加密方法
把str字符串轉(zhuǎn)換成了32位的16進制數(shù)列(這個過程不可逆轉(zhuǎn)) 存儲到了md這個空間中
*/
CC_MD5(cStr, (unsigned)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]
];
}
@end
md5解密網(wǎng)站:https://www.cmd5.com
使用示例
NSString *str = @"123Man456";
NSString *md5str = [NSString getmd5Str:str];
NSLog(@"%@",md5str);
//加鹽后
NSString *salt = @"asdkqwkfqlwflqfwlMAk";
NSString *newStr = [str stringByAppendingString:salt];
NSString *newMd5str = [NSString getmd5Str: newStr];
NSLog(@"%@",newMd5str);