iOS如何使用MD5加密

在登录注册时,经常采用MD5加密技术对密码,也用于对敏感数据进行加密。本文简单介绍了iOS中MD5加密的使用方式。

  • 简单的MD5加密
// passwordStr 为密码字符串
const char * myPassword = [passwordStr UTF8String];   
unsigned char md5c[16];    
CC_MD5(myPassword, (CC_LONG)strlen(myPassword), md5c);    
NSMutableString *md5Str = [[NSMutableString alloc] initWithCapacity:100];
//md5c[1] -> 0x16;    
for (int i = 0; i < 16; i++) {        
  [md5Str appendFormat:@"%02x",md5c[i]];
}
// md5Str 为加密后的密码

但是这个仅是简单加密后的MD5密码,容易被破解,破解方法可参照 MD5解密

  • 复杂的MD5解密 针对于上面的问题,我们可以将上面的代码稍加修改
 const char * myPassword = [passwordStr UTF8String];    
unsigned char md5c[16];    
CC_MD5(myPassword, (CC_LONG)strlen(myPassword), md5c);    
NSMutableString *md5Str = [[NSMutableString alloc] initWithCapacity:100];    
//    md5c[1] -> 0x16;    
[md5Str appendFormat:@"%02x",md5c[0]];    
for (int i = 1; i < 16; i++) {        
[md5Str appendFormat:@"%02x",md5c[i]^md5c[0]];   
 }
  • 正常使用时我们可以定义一个NSString的分类,再需要时进行方便调用,在.m文件中实现方法
- (NSString *)md5StrXor {    
const char * myPassword = [self UTF8String];    
unsigned char md5c[16];    
CC_MD5(myPassword, (CC_LONG)strlen(myPassword), md5c);    
NSMutableString *md5Str = [[NSMutableString alloc] initWithCapacity:100];    
//    md5c[1] -> 0x16;    
[md5Str appendFormat:@"%02x",md5c[0]];    
for (int i = 1; i < 16; i++) {       
  [md5Str appendFormat:@"%02x",md5c[i]^md5c[0]];    
}   
 return [md5Str copy];
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏along的开发之旅

创建Ripple山寨币

replace “masterpassphrase” with what you like.

1211
来自专栏Android源码框架分析

Android权限检查API checkSelfPermission失效问题为什么targetSdkVersion < 23 Context 的 checkSelfPermission失效target

6283
来自专栏敏捷开发&项目管理

Bat file 安装和卸载同级目录下的.net 服务

今天得到个需求 客户需要用batch file 安装和卸载服务,网上搜了一把例子,都只解决了单个问题,我来稍微总结一下 安装服务 @ECHO OFF REM T...

3776
来自专栏有趣的django

21天打造分布式爬虫-简书整站爬取(十)

1242
来自专栏xingoo, 一个梦想做发明家的程序员

套接字选项

选项影响套接字操作,如 封包路由,OOB数据传输,获取和设置套接字选项分别是 getsockopt  setsockopt 用法如下: int getsocko...

1906
来自专栏向治洪

android优化之省电

Android程序中耗电最多的地方在以下几个方面 : 1、 大数据量的传输。 2、 不停的在网络间切换。 3、 解析大量的文本数据。 那么我们怎么样来改...

19710
来自专栏游戏杂谈

测试Live Writer写日志

832
来自专栏信安之路

必知必会的安全工具

渗透测试中手工测试固然重要,但是测试工具也是必不可少的,一个好的工具可以让我们在渗透测试中事半功倍,俗话说,工欲善其事必先利其器,所以工具是很重要的,本文就主要...

1130
来自专栏linux驱动个人学习

dump_stack 分析使用

dump_stack是用来回溯内核运行的信息的,打印内核信息堆栈段; dump_stack原型: void dump_stack(void); 1、使用这个功能...

3385
来自专栏沃趣科技

ASM 翻译系列第二十八弹:ASM INTERNAL Partnership and Status Table

原作者:Bane Radulovic 译者: 邱大龙 审核: 魏兴华 DBGeeK社群联合出品 Partnership and Status Tab...

3326

扫码关注云+社区

领取腾讯云代金券