数据加密的基本使用
来源:互联网 发布:激光笔软件 编辑:程序博客网 时间:2024/06/05 11:51
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; }
- 数据加密的基本使用
- 在自己的MIS系统使用简单的加密功能加密基本数据
- PHP 加密扩展 mcrypt 的基本使用
- 使用ASP加密算法加密你的数据
- 使用 Crypto++ 里的 Blowfish 加密数据
- 使用EFS加密数据的注意事项
- 使用https加密之后的数据问题
- JSON数据的基本使用
- 使用M2Crypto加密数据
- 使用MD5数据加密
- 使用M2Crypto加密数据
- 使用M2Crypto加密数据
- tar 命令基本使用(加密)
- tar 命令基本使用(加密)
- 加密传到后台的数据,使用RSA非对称加密,前端加密,后台java解密
- MySql的基本使用,数据库,表,数据的基本操作
- JDBC连接数据的基本使用
- 数据加密的基本要素
- 副本集指南(一)
- java io
- web_servlet
- 自定义TextView实现艺术体
- Vim常用命令
- 数据加密的基本使用
- GCC编译器(2)
- JavaScript闭包运行机制
- android判断当前网络状态
- Android 通知栏
- javamail 收发邮件
- java数组之间赋值问题
- 【Java多线程】-ReentrantLock
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合