如何在swift语言中使用CC_MD5方法

2024-01-08

在 Objective-C 中,我们可以像这样对字符串进行哈希处理:

const char *cStr = [someString UTF8String];
unsigned char result[16];
CC_MD5( cStr, strlen(cStr), result );
md5String = [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]
        ];

但 CC_MD5 在 Swift 中不起作用。我们该如何处理这个问题?


这就是我想出来的。它是 String 的扩展。 不要忘记添加#import <CommonCrypto/CommonCrypto.h>到 Xcode 创建的 ObjC-Swift 桥接标头。

extension String  {
    var md5: String! {
        let str = self.cStringUsingEncoding(NSUTF8StringEncoding)
        let strLen = CC_LONG(self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
        let digestLen = Int(CC_MD5_DIGEST_LENGTH)
        let result = UnsafeMutablePointer<CUnsignedChar>.alloc(digestLen)

        CC_MD5(str!, strLen, result)

        let hash = NSMutableString()
        for i in 0..<digestLen {
            hash.appendFormat("%02x", result[i])
        }

        result.dealloc(digestLen)

        return String(format: hash as String)
    }
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在swift语言中使用CC_MD5方法 的相关文章

  • 在 swift 中使用自定义字体[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个用于 swift sprite kit iOS 的字体 该字体用于商业目的 我正在尝试拥有一
  • 使用 Swift 过滤 Realm 对象

    尝试使用以下方法过滤我的领域数据库时 我总是收到以下错误NSPredicate 属性 text 不是类型 getType 对象中的链接 我想过滤我的领域数据库以仅显示其中包含某些特定文本的项目 这是我尝试过的 let realm try R
  • 在制作自定义 iOS 键盘扩展时,如何创建一个与 Apple 原始退格键具有相同功能的按钮?

    我正在制作一个自定义键盘 其中有用于删除文本的删除按钮 其代码是 func addDelete deleteButton UIButton buttonWithType System as UIButton deleteButton set
  • 自定义过渡动画在animationControllerForPresentedController和animateTransition之间未知延迟

    我的目标是使动画在第一个视图控制器中开始并在第二个视图控制器中结束 我正在尝试使用符合以下条件的对象进行过渡动画UIViewControllerAnimatedTransitioning and UIViewControllerTransi
  • 优化构建中通用函数的 Core Data Swift 转换失败

    我们有一个具有相当广泛的核心数据模型的应用程序 其中有许多用 Objective C 实现的自定义子类 但越来越多的用 Swift 编写的应用程序也使用这些子类 值得一提的是 我们使用 Xcode 7 3 1 针对 iOS 9 3 进行构建
  • UITableView 干扰状态栏

    我正在开发一个具有 UITableViewController 的应用程序 该应用程序显示值列表 如下所示 如何将表格向下移动 使其不会与状态栏冲突 看来我无法对这个场景施加任何限制 所以我不知所措 使用以下 3 个属性UIViewCont
  • 用于测试对象类型的通用 Swift 函数

    我正在尝试编写一个函数 该函数接受一个对象和一个类型作为参数 并返回一个布尔值 指示该对象是否属于给定类型 似乎没有 Type 类型 所以我不知道如何做到这一点 我能做的最好的就是 func objectIsType
  • Swift 中的协议与多态性

    我对面向对象编程相当陌生 我正在尝试了解协议 委托和多态性 我最近观看了一个培训视频 其中宣传当您有两个相似且具有相似方法实现的类时 协议是优雅地实现此目的的最佳解决方案 这就说得通了 然而 一些额外的研究让我发现了多态性 听起来这也是一种
  • 在 Swift 中,如何检测哪些 UIControl 事件触发了操作?

    我目前有 4 个 UITextField IBOutlet weak var fNameTextField UITextField IBOutlet weak var lNameTextField UITextField IBOutlet
  • Swift UIToolBar 追加 UIBarButtonItem 项目

    我的语法不正确 有人知道这里缺少什么吗 我正在使用 Xcode 6 beta 3 并且尝试将工具栏项动态添加到 viewDidLoad 中的 手动添加的 工具栏 有两个问题 首先 我无法将工具栏中的项目附加到数组中 其次 虽然编译器允许我调
  • 在 SwiftUI 文档应用程序中,如何从函数内保存文档

    当前版本的 Xcode 版本 12 5 1 为 macOS 的基于文档的应用程序提供了一个模板 提供以下文档模型 struct MyDocument FileDocument var text String init text String
  • Health 处理多个步骤源的方式与 HealthKit 不同——swift

    我的 Swift iOS 应用程序与 HealthKit 连接 向用户显示他们当天到目前为止已经走了多少步 在大多数情况下 这是成功的 当步数的唯一来源是 iPhone 内置计步器功能记录的步数时 一切正常 并且我的应用程序显示的步数与健康
  • 带 cookie 的 Alamofire 请求

    我是初学者 我不知道如何使用 Alamofire 发出 GET 请求 但它需要身份验证 我设法用其他网络服务 登录 来做到这一点 因为它需要参数参数 parameters username username password passwor
  • 使用 Swift 导入 aurioTouch 库

    我正在尝试将 Objective C 应用程序转换为 swift 我想导入课程奥里奥触摸 https developer apple com library ios samplecode aurioTouch Introduction In
  • 如何防止在 macOS 中打开同一窗口的多个实例?

    我正在制作一个 Mac 菜单栏应用程序 它有一个Preferences选项 当用户点击它时 会出现一个Preferences将打开窗口 显示应用程序的所有设置 我打开Preferences窗口如 let storyboard NSStory
  • 在单个 MTLRenderCommandEncoder 中使用多个渲染管道:如何同步 MTLBuffer?

    中心议题我在一个渲染命令编码器中有两个渲染管道 第一个管道写入第二个管道中使用的缓冲区 这似乎不起作用 我预计这是一个同步问题 当我为每个渲染管道使用一个单独的渲染命令编码器时 我得到了所需的结果 可以使用一个渲染命令编码器来解决这个问题
  • RealityKit – 如何为自然光创建阴影捕捉器?

    我想创建一架飞机 func getShadowPlane width Float height Float gt ModelEntity let sphereResource MeshResource generatePlane width
  • 如何通过 swift 包管理器在 swift 项目中添加 Alamofire [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在探索 SPM 现在我需要知道如何在我的项目中通过 SPM 导入 Alamofire 创建一个名为的 swift 文件Package在你
  • 关于 Swift 中重写类属性的困惑

    我已阅读 Swift 文档并在这里搜索 但我仍然不确定如何实现类层次结构 其中每个子类为继承的静态属性设置自定义值 那是 基类定义了一个静态属性 所有实例共享相同的值 子类覆盖静态属性 所有实例共享相同的值 这与基类不同 财产可以储存吗 另
  • 使用 CommonCrypto 的 Swift AES 加密

    我正在开发一个 iOS 应用程序代码7 1 with 斯威夫特2 1我正在尝试进行简单的加密AES 128 位 and PKCS7填充使用通用加密库 该代码有效 但每次我尝试投射NSData反对NSString然后对于 String 我得到

随机推荐

  • 另一台计算机上的目录 - 登录凭据

    我的应用程序需要访问远程计算机上的文件 需要用户名和密码才能访问它 我试图找出目录是否存在 使用 Directory Exists 来验证我可以建立 连接 使用远程目录时有没有办法提供用户名和密码 当前存在返回 false Cheers 不
  • 如何使用维基百科的 Web API 检索某人的传记信息?

    我正在努力通过维基百科的 Web API 从该人的维基百科页面检索该人的一些特定生物详细信息 我需要检索一个人的生物信息框 我找到了如何检索内容框 介绍段落等 下面的 URL 用于检索 wiki 网页的第一个介绍段落 https en wi
  • 在 super.init 之前的表达式中使用初始化属性时出现 Swift 错误

    这并不重要 并且有解决方法 但它令人困惑 请参阅下面的最小示例 我指的是一个已初始化的属性 但在调用 super init 之前 为什么下面所示的语句会出现编译错误 在表达式的右手中使用属性与在左手中使用属性有什么特别之处吗 我浏览了 Sw
  • 在 Webfaction 上设置 Redis

    设置需要哪些步骤Redis http redis io 数据库上网派 http www webfaction com affiliate xeli共享托管帐户 介绍 由于 Webfaction 服务器的特殊环境限制 安装说明并不那么简单 尽
  • New 与 Malloc,当重载 New 时

    我超载了new and delete实现我自己的小对象 线程安全分配器 问题是当我超载时new 我不能使用new不破坏普遍因果关系或至少不破坏编译器 我发现的大多数例子都在哪里new超载 使用Malloc 进行实际分配 但根据我对 C 的理
  • 从所有表中删除外键关系

    我有一个包含多个表的数据库 许多表的字段具有外键约束 我想截断表 然后用新数据重新填充它们 并且我还想删除外键 因为某些关系已经改变 基本上 我想再次从头开始构建 FK 约束 如何从所有表中删除当前的 FK 约束 您可以使用 informa
  • PostgreSQL 9.2.1 中具有可序列化隔离的谓词锁定

    我已经仔细阅读了关于事务隔离的 postgres 文档 http www postgresql org docs current static transaction iso html建议在我的其他问题 https stackoverflo
  • 从 CompletableFuture 捕获未捕获的异常

    我正在尝试捕获像这样的期货中未捕获的异常CompletableFuture runAsync gt throw new RuntimeException 我的目标是当开发人员忘记处理这些异常时 让它们不再沉默 Calling get or
  • 如何从提交的 Spark 应用程序步骤中获取 AWS EMR 集群 id 和步骤 id

    设想 我正在 AWS EMR 中运行 Spark Scala 作业 现在我的工作转储该应用程序特有的一些元数据 现在 为了转储 我正在位置 s3 bucket key 写入 其中 ApplicationId 是 val APPLICATIO
  • 将 TableRowSorter 与 scala.swing.Table 一起使用

    我正在开发具有 scala swing Table 组件的简单 UI 我想使用 java swing table TableRowSorter 对表行进行排序 Table 类不提供任何使用行排序器的 API 因此我尝试直接在对等点上设置它
  • 了解会话中有关登录变量的行

    下面这行是什么意思 放置布尔变量isLogin到您的会话 以便您在用户每次访问安全站点时检查会话 我想知道如何将变量放入会话中 我知道在抽象层面上 会话是半永久性的 互动信息交换 也称为对话 两人之间的谈话或会议 或更多通信设备 或 计算机
  • 跨源子帧中表单控件的自动对焦被阻止

    使用 Chrome 当我尝试更改位于我们服务器上另一个应用程序的 IFrame 中的输入值时 我在 Chrome 中收到错误 在跨源子框架中阻止对表单控件的自动对焦 在生产中 当两个应用程序托管在同一域上时 它正在工作 但在本地主机开发中我
  • 如何发现 Spark 数据框中列格式的异常?

    正如问题所说 我想找到大型数据集中列中值格式的异常 例如 如果我在包含 5 亿行的数据集中有一个日期列 我想确保该列中所有行的日期格式为 MM DD YYYY 我想找到此格式中存在异常的计数和值 我该怎么做呢 我可以使用正则表达式吗 有人可
  • IOS Swift - 自定义相机覆盖

    你好 我想在我的应用程序中打开一个摄像头 如下所示 我想仅在该部分的中间打开相机 以便用户只能在矩形部分中拍摄快照 我正在使用的代码是这样的 import UIKit import AVFoundation class TakeProduc
  • python 中对象的 __init__() 方法做什么? [复制]

    这个问题在这里已经有答案了 在阅读 OpenStack 代码时 我遇到了这个问题 一个名为 Service 的类继承了基类 object 然后在Service的 init 方法 对象的 init 叫做 相关代码如下所示 类定义 class
  • 在 Selenium 2 中截取测试屏幕截图的最佳方式?

    我需要一种方法来截取功能测试的屏幕截图 现在我正在使用带有 C 绑定的 Selenium 2 我非常想在测试结束时截取屏幕截图 以确保显示所需的页面 你们知道有什么特定的工具可以合并到我的 C 代码中来触发屏幕截图吗 我找不到内置的 Sel
  • 检测 navigator.online 上的更改

    如何检测导航器是否将您的状态更改为在线 离线 就像是 var oldState navigator onLine window navigator onlinechange function evnt newState alert your
  • RPM 规范文件可以“包含”其他文件吗?

    RPM 规范中有一种 include 指令吗 我无法通过谷歌搜索找到答案 动机 我有一个 RPM 规范模板 构建过程会使用版本 修订版和其他特定于构建的数据对其进行修改 这是由sed现在 我认为如果规范会更干净 include特定于构建的定
  • 使用 javascript onClick 显示 Bootstrap Modal

    我需要能够使用以下命令打开 Twitter 引导模式窗口onClick 或类似的功能 只需要输入代码即可onClick 我正在尝试制作一个可点击的div打开模式 代码摘录 部门代码 div class span4 proj div 模态di
  • 如何在swift语言中使用CC_MD5方法

    在 Objective C 中 我们可以像这样对字符串进行哈希处理 const char cStr someString UTF8String unsigned char result 16 CC MD5 cStr strlen cStr