iOS 摘要的生成
来源:互联网 发布:华大基因 待遇 算法 编辑:程序博客网 时间:2024/06/05 13:21
有时我们为了项目数据保密,我们会做一些摘要设计,接下来说下苹果自带的一些摘要算法:md5、sha1、sha256等。我们自己编写摘要的实现,这样就可以避免第三方库的导入;
如下代码都是在NSString类的扩展内实现的;
- 一md5的实现
- 二sha1实现
- 三HMAC实现
- 四辅助函数
一、md5的实现
- (NSString *)md5String { //方式一 const char *data = self.UTF8String; unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5(data, (uint32_t)strlen(data), digest); //方式二 CC_MD5_CTX ctx; CC_MD5_Init(&ctx); CC_MD5_Update(&ctx, data, (uint32_t)strlen(data)); CC_MD5_Final(digest, &ctx); return [self stringFrom:digest length:CC_MD5_DIGEST_LENGTH];}
二、sha1实现
//通过观察可知,md5和sha1实现方式类似//(sha系列摘要基本一个模型,以下不再赘述)- (NSString *)sha1String { const char *data = self.UTF8String; unsigned char digest[CC_SHA1_DIGEST_LENGTH]; CC_SHA1(data,(uint32_t)strlen(data), digest); return [self stringFrom:digest length:CC_SHA1_DIGEST_LENGTH];}
三、HMAC实现
//hmac依赖摘要算法类型//key这里取得定值,做简要说明- (NSString *)hmacString { unsigned char digest[CC_MD5_DIGEST_LENGTH]; NSString *key = @"key"; NSString *text = self; //这里可以选择Hnac采用的摘要算法 CCHmac(kCCHmacAlgMD5, key.UTF8String, [key length], text.UTF8String, [text length], digest); NSString *s = [self stringFrom:digest length:CC_MD5_DIGEST_LENGTH]; return s;}
四、辅助函数
//将char数组生成字符串- (NSString *)stringFrom:(unsigned char *)digest length:(NSInteger)leng { NSMutableString *string = [NSMutableString string]; for (int i = 0; i < leng; i++) { [string appendFormat:@"%02x",digest[i]]; } NSLog(@"final stringFrom:%@",string); return string;}
阅读全文
0 0
- iOS 摘要的生成
- 最短摘要的生成
- 最短摘要的生成
- 最短摘要的生成
- 最短摘要的生成
- 最短摘要的生成
- iOS开发技术的核心摘要
- 摘要别人的 iOS小技巧
- 生成消息摘要流程
- 搜索引擎在生成摘要
- 最短摘要生成
- 最短摘要生成
- 最短摘要生成
- 最短摘要生成
- 最短摘要生成
- 生成最短摘要
- 最短摘要生成
- 最短摘要生成
- java对象初始化面试问题总结
- 小插件,通过js实现邮箱自动提示功能
- Oracle 学习笔记(三)
- 双系统重启进入GRUB解决方案
- bootstrap tabs
- iOS 摘要的生成
- openstack搭建过程中遇到的问题
- Android中原http请求的https实现(URLConnection 、volley)(volley不修改源码)
- HDOJ 1020 究极水题
- 《深入浅出Netty》【PDF】下载
- 账号
- Encog3Java-User.pdf翻译:第八章 使用时序数据
- 从零开始学习c++之运算符重载与类型转换
- RocketMQ 源码分析 —— Filtersrv