//
// NSString+Password.h
// 03.数据加密
Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321
MD5用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现
MD5的典型应用是对一段字节串产生指纹,以防止被“篡改”。例如,可以对一个readme.txt生成一个MD5的值并记录在案,如果其他人修改了文件中的任何内容,对该文件重新计算的MD5值会发生变化
MD5还广泛用于操作系统的登录认证上,如Unix、各类BSD系统登录密码、数字签名等诸多方面
不可逆
同样的数据加密结果是一样的?密码上的一个忌讳
加点”盐”私钥---->token
//
// Created by 刘凡 on 13-12-10.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSString (Password)
- (NSString *)myMD5;
/**
* 32位MD5加密
*
* @return 32位MD5加密结果
*/
- (NSString *)MD5;
/**
* SHA1加密
*
* @return SHA1加密结果
*/
- (NSString *)SHA1;
@end
<pre name="code" class="objc">----------------------------------------------------------------
<pre name="code" class="objc">//
// NSString+Password.m
// 03.数据加密
//
// Created by 刘凡 on 13-12-10.
// Copyright (c) 2013年 itcast. All rights reserved.
//
#import "NSString+Password.h"
#import <CommonCrypto/CommonDigest.h>
static NSString *token = @"fashfkdashfjkldashfjkdashfjkdahsfjdasjkvcxnm%^&%^$&^uireqwyi1237281643";
@implementation NSString (Password)
- (NSString *)myMD5
{
NSString *str = [NSString stringWithFormat:@"%@%@", self, token];
return [str MD5];
}
#pragma mark 使用MD5加密字符串
- (NSString *)MD5
{
const char *cStr = [self UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, 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;
}
#pragma mark 使用SHA1加密字符串
- (NSString *)SHA1
{
const char *cStr = [self UTF8String];
NSData *data = [NSData dataWithBytes:cStr length:self.length];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, data.length, digest);
NSMutableString *result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
[result appendFormat:@"%02x", digest[i]];
}
return result;
}
@end
----------------------------------------------------------------------------------------
这一个是在程序中直接使用的,不是NSString+PassWd中的方法
- (NSString *)md5:(NSString *)str
{
const char *cStr = [str UTF8String];
unsigned char result[16];
CC_MD5(cStr, strlen(cStr), result); // This is the md5 call
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]
];
}