当前位置: 首页 > news >正文

iOS 字符串 MD5

iOS 字符串 MD5

Objective-C 实现

需要引入头文件

#import <CommonCrypto/CommonCrypto.h>

这里用方法实现

+ (nullable NSString *)md5:(nullable NSString *)str {
    if (!str) return nil;
    
    const char *cStr = str.UTF8String;
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
    
    NSMutableString *md5Str = [NSMutableString string];
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; ++i) {
        [md5Str appendFormat:@"%02x", result[i]];
    }
    return md5Str;
}

Swift 实现

需要创建桥接文件 "项目名-Bridging-Header.h",在文件中引入头文件

#import <CommonCrypto/CommonCrypto.h>

给 String 添加属性,获取 MD5 值

extension String {
    
    var md5: String {
        let str = cString(using: .utf8)
        let strLen = CC_LONG(lengthOfBytes(using: .utf8))
        let digestLen = Int(CC_MD5_DIGEST_LENGTH)
        let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)
        
        CC_MD5(str!, strLen, result)
        
        var hash = ""
        for i in 0..<digestLen {
            hash = hash.appendingFormat("%02x", result[i])
        }
        
        result.deallocate(capacity: digestLen)
        
        return hash
    }
}

转载请注明出处:http://www.cnblogs.com/silence-cnblogs/p/6688700.html

转载于:https://www.cnblogs.com/silence-cnblogs/p/6688700.html

相关文章:

  • 查看linux源代码的在线网站
  • Android入门:MVC模式(中)
  • Oracle中INSTR函数与SQL Server中CHARINDEX函数
  • 沟通和编程一样,也是一门艺术系列5(沟通的方向)
  • CSS实现Tab布局
  • Spring定时任务的几种实现(转)
  • Android Handler使用
  • django-rest-framework学习之Requests and Responses--2017年4月13日
  • LightOJ1245 Harmonic Number (II)
  • Hnoi-2017 滚粗记
  • 新概念英语(1-3)Sorry, sir
  • open-falcon之judge
  • oaracel 函数_行转列
  • Python图像处理(14):神经网络分类器
  • 【Matlab】运动目标检测之“光流法”
  • hexo+github搭建个人博客
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • ES6语法详解(一)
  • JavaScript HTML DOM
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java教程_软件开发基础
  • Python_网络编程
  • React-flux杂记
  • Vim 折腾记
  • VUE es6技巧写法(持续更新中~~~)
  • 阿里云Kubernetes容器服务上体验Knative
  • 看域名解析域名安全对SEO的影响
  • 聊聊redis的数据结构的应用
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 使用common-codec进行md5加密
  • 思维导图—你不知道的JavaScript中卷
  • 字符串匹配基础上
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • $().each和$.each的区别
  • (4)事件处理——(7)简单事件(Simple events)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)fgets与fputs函数详解
  • (LeetCode 49)Anagrams
  • (办公)springboot配置aop处理请求.
  • (附源码)计算机毕业设计高校学生选课系统
  • (七)Knockout 创建自定义绑定
  • (顺序)容器的好伴侣 --- 容器适配器
  • (原創) 物件導向與老子思想 (OO)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .CSS-hover 的解释
  • .gitignore文件_Git:.gitignore
  • .net下的富文本编辑器FCKeditor的配置方法
  • @Repository 注解
  • @RunWith注解作用
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [autojs]逍遥模拟器和vscode对接