MD5 加密实现方法
MD5 的时间方法可以直接使用** <CommonCrypto/CommonCrypto.h> **这个C语言的库来进行实现。我们可以实现一个NSString的分类类扩展NSString的方法,上下具体代码:
-(NSString*)stringToMD5:(NSString *)str{
// 将接受的参数转为UTF-8格式
const char *cstr = [str UTF8String];
// 设定接受的结果数组长度
unsigned char result[CC_MD5_DIGEST_LENGTH];
// 将字符串转换成了32位的16进制数列
CC_MD5(cstr, (CC_LONG)strlen(cstr), result);
// 创建一个可变字符串
NSMutableString *saveResult = [NSMutableString string];
// 组装对应的字符串,%02x就是输出两位16进制数据,不足2为补0
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
[saveResult appendFormat:@"%02x",result[i]];
}
return saveResult;
}
SHA1 加密实现方式
SHA1 的实现方式跟MD5类似,也是可以直接使用<CommonCrypto/CommonCrypto.h>这个库,具体看下代码:
-(NSString*)stringToSHA1:(NSString *)str{
// 转化位cstring 或者类似MD5的方式也行 const char *cstr = [str UTF8String];
const char *cstr = [str cStringUsingEncoding:NSUTF8StringEncoding];
// 生成对应的NSData对象
NSData *data = [NSData dataWithBytes:cstr length:self.length];
// 创建一个20个位的1字节数组
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
// 转化为对应的16进制数字
CC_SHA1(data.bytes, data.length, digest);
// 声明一个40字符的string对象
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;
}
知识点
- 1字节 uint8_t
- 2字节 uint16_t
- 4字节 uint32_t
- 8字节 uint64_t