iOS开发——MD5的最佳实践

在iOS开发中,经常会使用到MD5或者其他的一些散列,来提高应用的安全性。最常用的操作就是把密码进行MD5,然后再进行传输。当然现在有很多现成的实现方式,该篇博客就来实现最简单也最常用的封装MD5的方法,使调用起来非常方便。

(1)实现一个Category叫Crypto,继承自NSString。因为我们都是把NSString进行MD5,所以写成Category调用会很方便:

在NSString+Crypto.h中实现:

#import <Foundation/Foundation.h>

@interface NSString (Crypto)

- (NSString *)toMD5;

@end

在NSString+Crypto.m中实现:

#import "NSString+Crypto.h"
#import <CommonCrypto/CommonDigest.h>

@implementation NSString (Crypto)

- (NSString *)toMD5 {
    const char *cStr = [self UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5( cStr, (CC_LONG)strlen(cStr), result );

    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]
            ];
}

@end

由于MD5后的字符串包含字母,根据你的实际需要,可以修改MD5后的字母是大写还是小写。上述的实现是字母的小写,如需大小,可以把"%02x"改成"%02X",即小写x改为大写X。

(2)方法调用:直接使用要加密的字符串去调用toMD5()方法即可,返回的字符串就是MD5后的结果。

#import "HSTestMD5ViewController.h"
#import "NSString+Crypto.h"

@interface HSTestMD5ViewController ()

@end

@implementation HSTestMD5ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *rr = [@"123" toMD5];
    NSLog(@"%@",rr);

}

@end
时间: 2024-11-11 13:04:38

iOS开发——MD5的最佳实践的相关文章

SharePoint开发中的最佳实践(再续)

SharePoint开发中的最佳实践 20.SPViewScope介绍 Default :仅显示指定文件夹下的文件和子文件夹 FilesOnly:仅显示指定文件夹下的文件 Recursive:显示所有文件夹下的文件 RecursiveAll:显示所有文件夹下的所有文件和子文件夹 以上这个属性使用在CAML中,用于控制在哪些范围内进行查找,我们可以根据实际的查找需求,对这个ViewAttribute属性进行设置,来完成我们的操作. 21.SPGridView介绍 SPGridView在GridVi

Typescript 开发环境的最佳实践

Typescript 开发环境的最佳实践 0?? git init(略) 1???? 初始化:$ yarn add -D ts-node typescript 2?? 生成 tsconfig.json:$ yarn tsc -init 3?? 配置 TSLint:$ yarn add tslint -D 4?? 生成 tslint.json:$ yarn tslint --init 5?? 创建 src/index.ts:$ mkdir src && echo "console.

Express 开发与部署最佳实践

本篇文章翻译自expressjs官方网站,源地址如下:express最佳实践 ,分别从dev角度和ops角度讨论了如何提升express应用的运行性能以及部署的最佳方式. 针对开发者需要注意的问题 对于一个express应用我们,一般有以下的几种方法来提升应用的运行效率以及响应率. 使用gzip压缩 代码中不要使用同步函数 使用中间件处理静态文件 合理的日志处理方法 正确的处理异常 以下我们将分别对于每个子项目进行展开分析. 1.使用gzip压缩 使用gzip压缩可以显著的减小响应包的大小,这样

彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践

"描述一个事物,唯有一个名词定义它的概念,唯有一个动词揭露它的行为,唯有一个形容词表现它的特征.要做的,就是用心去寻找那个名词.那个动词.那个形容词--" -- 福楼拜 (Gustave Flaubert) 我想讲个故事. 很久很久以前(一般讲故事都是这样开头吧), 两个老工程师在一起聊天,谈各自生涯中最自豪的工程.其中一个先讲述了他的杰作: " 我们建造的桥,横跨一个峡谷,峡谷很宽很深.我们花了两年时间研究地质,选择材料.聘请了最好的工程师团队来设计方案,而这又花了五年时间

MVP模式在Android开发中的最佳实践

这篇文章拖了好久了,一直存在草稿箱里没有继续写,趁今天有空,撸撸完. 回想一下,你刚刚学习Android的时候,总会看到一些书上写着,Android使用的是MVC模式,Activity就是一个Controller,或许那个时候,你没有什么深刻的体会.随着经验的积累.你发现,Activity既是Controller,掌管着许许多多的业务逻辑,同时它也作为View的一部分,控制着视图层的显示.久而久之,这个Controller便显得过于重,职责不再那么单一. 于是,再后来,为了使Activity的职

python开发利器ulipad最佳实践

介绍 UliPad是一个国人开发的python轻量级编辑器,导向和灵活的编程器.它如类浏览器,代码自动完成许多功能,如:HTML查看器,目录浏览器,向导等. 下载与安装 下载地址:https://pypi.python.org/pypi/UliPad 安装,傻瓜式,一路next即可 配置 安装好之后双击启动之后逐步进行下面的配置. 1.文件>目录浏览,这样我们可以在左侧看到目录方便管理脚本,最终效果图如下: 2.编辑>参数>python>设置python解释器>增加>选

iOS开发——MD5加密

- (NSString *)md5:(NSString *)str { const char *cStr = [str UTF8String]; unsigned char result[16]; CC_MD5(cStr, (CC_LONG)strlen(cStr), result); return [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"

iOS开发-MD5加密、SHA1加密

1.MD5加密 ///MD5加密 + (NSString *)md5:(NSString *)inputString{ const char *cStr = [inputString UTF8String]; unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5( cStr, (int)strlen(cStr), digest ); NSMutableString *output = [NSMutableString stringWithCapac

python自动化测试开发利器ulipad最佳实践(可写python测试代码也可编写selenium、Appium等)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xqtesting.blog.51cto.com/4626073/1907085 介绍 UliPad是一个国人开发的python轻量级编辑器,导向和灵活的编程器.它如类浏览器,代码自动完成许多功能,如:HTML查看器,目录浏览器,向导等. 下载与安装 下载地址:https://pypi.python.org/pypi/UliPad 安装,傻瓜式,一路next即可 配置 安装好之后