您的位置:首页 > 其它

数据加密的基本使用

2015-09-16 16:12 309 查看
MD5加密和SHA-1加密是计算机世界非常重要的两种加密算法.MD5加密通常用于对NSString的加密,而SHA-1加密通常用于对URL的加密,今天和大家重点分享一下MD5加密的方法.

使用MD5加密,我们需要给NSString增加一个类别,并导入<CommonCrypto/CommonDigest.h>头文件.

.h中的内容:

#import <Foundation/Foundation.h>

#import <CommonCrypto/CommonDigest.h>

@interface NSString (MD5encrypt)

-(NSString *) md5HexDigest;

@end

.m中的内容:

#import "NSString+MD5encrypt.h"

@implementation NSString (MD5encrypt)

-(NSString *) md5HexDigest

{

const char *original_str = [self UTF8String];

unsigned char result[CC_MD5_DIGEST_LENGTH];

// CC_MD5(original_str, strlen(original_str), result); 这里的用法明显是错误的,当original_str中包含空字符(\0)时

CC_MD5(original_str, (unsigned int)self.length, result);

NSMutableString *hash = [NSMutableString string];

for (int i = 0; i < 16; i++)

[hash appendFormat:@"%02X", result[i]];

return [hash lowercaseString];

}

@end

现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度:

1.加盐(Salt):在明文的固定位置插入随机串,然后再进行MD5

2.先加密,后乱序:先对明文进行MD5,然后对加密得到的MD5串的字符进行乱序

总之宗旨就是:黑客就算攻破了数据库,也无法解密出正确的明文.
/**
*  直接用MD5加密
*/
- (NSString *)digest:(NSString *)str
{
NSString *anwen = [str md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}

/**
*  加盐
*/
- (NSString *)digest2:(NSString *)str
{
str = [str stringByAppendingString:Salt];
NSString *anwen = [str md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
*  多次MD5
*/
- (NSString *)digest3:(NSString *)str
{
NSString *anwen = [str md5String];
anwen = [anwen md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
*  先加密, 后乱序,推荐使用
*/
- (NSString *)digest4:(NSString *)str
{
NSString *anwen = [str md5String];
NSString *header = [anwen substringToIndex:2];
NSString *footer = [anwen substringFromIndex:2];
anwen = [footer stringByAppendingString:header];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: