使用 CCHmac() 生成 HMAC swift sdk8.3

2023-12-05

在 SDK8.3 之前,我是通过这种方式生成 hmac 的。现在我在 CCHmac() 函数上遇到错误。由于我是初学者,我不知道如何解决它。在此先感谢您的帮助!

xcode 警告:无法使用类型为 (UInt32, [CChar]?, UInt, [CChar]?, UInt, inout[(CUnsignedChar)] 的参数列表调用“CCHmac”

func generateHMAC(key: String, data: String) -> String {

    let cKey = key.cStringUsingEncoding(NSUTF8StringEncoding)
    let cData = data.cStringUsingEncoding(NSUTF8StringEncoding)

    var result = [CUnsignedChar](count: Int(CC_SHA512_DIGEST_LENGTH), repeatedValue: 0)
    CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA512), cKey, strlen(cKey!), cData, strlen(cData!), &result)


    let hash = NSMutableString()
    for var i = 0; i < result.count; i++ {
        hash.appendFormat("%02hhx", result[i])
    }

    return hash as String
}

问题是strlen返回一个UInt, while CCHmac的长度参数是Ints.

虽然您可以进行一些强制,但您也可以使用count两个数组的属性而不是调用strlen.

func generateHMAC(key: String, data: String) -> String {

    var result: [CUnsignedChar]
    if let cKey = key.cStringUsingEncoding(NSUTF8StringEncoding),
           cData = data.cStringUsingEncoding(NSUTF8StringEncoding)
    {
        let algo  = CCHmacAlgorithm(kCCHmacAlgSHA512)
        result = Array(count: Int(CC_SHA512_DIGEST_LENGTH), repeatedValue: 0)

        CCHmac(algo, cKey, cKey.count-1, cData, cData.count-1, &result)
    }
    else {
        // as @MartinR points out, this is in theory impossible 
        // but personally, I prefer doing this to using `!`
        fatalError("Nil returned when processing input strings as UTF8")
    }

    let hash = NSMutableString()
    for val in result {
        hash.appendFormat("%02hhx", val)
    }

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

使用 CCHmac() 生成 HMAC swift sdk8.3 的相关文章

  • 先下载数据,然后在TableViewcontroller上显示

    我有 tableviewcontroller 和从服务器获取的数据 我使用以下类来下载异步数据 但我的问题是当用户看到 tableViewcontroller 时正在加载数据 我希望在用户看到之前加载数据 import
  • 设置属性文本后防止 UILabel 字体自动更改

    我发现如果我将属性文本设置为UILabel 预定义字体将更改为属性文本第一个字符的字体 例如 the font size is set to 20 in Interface Builder println theLabel font poi
  • 有没有办法更改 UITabBar 或 UITabBarItem 中的文本位置?

    这是我打算放在屏幕上的自定义选项卡栏 然而 我的搭档希望文字稍微向上一些 我怎样才能这样做呢 为什么不为视图控制器设置一个空的标题属性 并将标题添加到选项卡的自定义图像中 UPDATE 为了回答的完整性 来自评论和ios标签栏在没有图像时将
  • xcode 5.1 中的 ios 6.0 模拟器

    我刚刚成功将 Xcode 工具更新到 5 1 版本 当我检查首选项部分中的 下载 选项时 我注意到没有下载 ios 6 0 模拟器的选项 请检查附图 那么如何在Xcode 5 1中访问ios 6 0模拟器呢 请按照此程序升级您的 xCode
  • 通过 firebase 登录获取更大的 Facebook 图片

    我正在使用 firebase 通过 facebook 登录用户 这一切都工作正常 我可以获取用户 FB 个人资料图像 尽管它太小了 有人可以告诉我如何获得更大的 我正在使用的代码 override func viewDidLoad let
  • 有关 UnsafeMutablePointer 的 destroy() 的术语

    Destroy the object the pointer points to Precondition the memory is initialized Postcondition the value has been destroy
  • UIAlertView 之上的 UIView

    在我的应用程序中 使用了锁定屏幕 有时一个UIAlertView如图所示 现在当用户将应用程序发送到后台并再次将其置于前面时 UIAlertview会显示在锁定屏幕上方 是否有可能添加一个UIViewController的观点高于一切 即高
  • iOS 版有 Parse.com 的替代品吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我目前使用 parse com 来管理用户 他们有很棒的 AP I 有不错的后端供我管理东西 但我更愿意托管我自己的数据 服务器后端 我可
  • “StorageReference”类型的值没有成员“put”[重复]

    这个问题在这里已经有答案了 我更新到 firebase storage 4 0 现在收到此错误 指出 storageRef 没有成员 put 它以前在旧版本的 Firebase 中有效 if let selectedImage select
  • 如何将 Swift 字符串传递给 C 函数?

    我在将字符串从 swift 传递到用 c 编写的函数时遇到严重问题 我正在尝试在我的快速代码中执行此操作 var address 192 168 1 2 var port 8888 initSocket address port c 函数如
  • Swift 从 Realm 中删除对象

    我有领域对象保存来自 JSON 响应的列表 但现在如果该对象不再从 JSON 中出现在列表中 我需要删除该对象 我怎么做到这一点 这是我的领域初始化 func listItems dic Array lt String AnyObject
  • dyld:找不到符号:_kABPersonAddressCityKey XCODE 8 问题

    你好 我的代码在 xcode 中完美运行7 x x 当我更新我的 xcode 时 我遇到了这个问题 请给我解决方案 细节 dyld 未找到符号 kABPersonAddressCityKey 引用自 var containers Bundl
  • 以编程方式快速呈现视图控制器

    您好 我正在尝试将以下目标 C 代码转换为 swift 以便在单击按钮时从一个视图控制器导航到另一个视图控制器 任何帮助将非常感激 这是摘自苹果的编程指南 void add id sender Create the root view co
  • 方向改变后的javascript最大视口高度Android和iOS

    目标 查找设备的最大视口高度 包括设备的空间address bar这样我们就可以动态调整 min body 的大小并将内容向上推 问题 移动浏览器处理方向状态的方式不同 方向变化时更新 DOM 属性的方式也不同 使用 JavaScript
  • 本地化 watchkit 配套应用程序的显示名称

    我在 Apple Watch 配套应用程序上本地化应用程序显示名称时遇到一些问题 按照指导方针 我将 CFBundleName 本地化如下 CFBundleDisplayName 我的应用程序 CFBundleName 我的应用程序 我为我
  • 创建一个扩展来从 Swift 中的数组中过滤 nils

    我正在尝试编写一个 Array 扩展 它将允许可选 T 数组转换为非可选 T 数组 例如这可以写成一个自由函数 如下所示 func removeAllNils array T gt T return array filter 0 nil r
  • EKEvent接受邀请

    你如何接受EKEventiOS 中的邀请 我知道这有可能梦幻般的 日历 5和其他日历应用程序具有此功能 但我没有看到公开的非只读属性来更改用户有关事件的状态 知道如何做到这一点吗 Thanks 事实证明 经过更多研究后 所有这些应用程序都只
  • 为什么我不能在 func Swift 中使用 self

    我试图自行将 SKSpriteNodes 添加到函数中的视图中 但 Xcode 不允许我这样做 它给了我错误 使用未解析的标识符 self func indicate if test 0 var large CGFloat largest
  • 如何在 Objective C 类中设置布尔类型属性

    如何在 Objective C 类中使用布尔属性 我是这样做的 property nonatomic copy BOOL locationUseBool 但它给出了错误 具有 复制 属性的属性必须是对象类型 正确的申报方式是什么 您也可以这
  • iOS:如何定义公共方法?

    如何在每个视图控制器类中定义一个可以从任何地方调用的方法 我有一个方法可以为我带来一个 json 文件 并且我希望它可以重用 因为我的应用程序上有多个 json 调用 你能帮助我吗 您可以通过类别添加它 EDIT 创建一个新的 h m 文件

随机推荐

  • 将 nodejs 程序的输出重定向到文件时编码错误(Windows 10 powershell 可能存在问题)

    我有一个简单的 javascript 文件 我们称之为 index js 其中包含以下内容 console log p rola 我在 Windows 10 上使用 VSCode 当我使用以下命令执行文件时 它使用 powershell 作
  • 将关联对象与 back_populates 一起使用时,SQLAlchemy 抛出 KeyError – 文档中的示例不起作用

    SQLAlchemy 很好的文档如何使用关联对象back populates 但是 当从该文档复制并粘贴示例时 将子项添加到父项会引发KeyError如下面的代码所示 模型类 100 从文档中复制 from sqlalchemy impor
  • 获取所选列的索引(DataTables + ColVis)

    我正在使用 jQuery 插件 DataTables ColVis 来显示表格 我必须得到一个数组用户选择显示的列的索引 此信息将用于创建可自定义的导出表 例如 用户选择仅显示表中的浏览器和平台here 我需要获得 1 2 有任何想法吗 编
  • 算法复杂度 时间

    我目前无法识别和理解以下算法的复杂时间 背景 有一个文件列表 每个文件包含一个候选 ID 列表 文件的数量和其中的候选人数量都是不固定的 您如何计算负责以下任务的算法的时间复杂度 读取每个文件并将所有唯一的候选 ID 添加到哈希集中 Tha
  • 如何检查iOS版本是否可用字体?

    我目前正在开发一个使用 ChalkboardSE Regular 字体的应用程序 我的部署目标是 4 0 该字体在 4 1 中不可用 但在 4 3 中受支持 检查字体是否存在的最佳方法是什么 如果不存在 请在 提前致谢 T UIFont f
  • Spring Data Rest:如何从存储库公开 json 模式 (2.0.0.M1)

    我在源代码中看到 Spring DATA Rest 可以通过以下 URL 为存储库公开 Json 架构 repository schema 有谁知道如何配置这个吗 有 RepositorySchemaController org sprin
  • Codeigniter 2.1.2 和 Facebook-PHP-SDK 3.1.1

    我正在通过 Codeigniter 2 1 2 和 Facebook PHP SDK 3 1 1 开发一个简单的身份验证 但我不知道为什么它现在可以工作 我已将 src 文件夹 https github com facebook faceb
  • 什么时候结构体太大? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的结构与类 抱歉 如果这是一个开放式问题 但我只想知道我的结构是否太大 我想使用结构体的原因是因为我知道它们比类更快 我认为我真的需要这种速度 我发现如果你的结构太大 它实际上会减慢你的程序 所
  • 我的网页忽略 CSS 文件中的更改

    无论我在 css 文件中进行什么更改 页面都保持不变 而且 无论是更改链接标记以使其指向另一个 css 文件还是完全删除它都没有什么区别 应用 html 代码中的其他更改 网页的源代码显示了应有的一切 当我将链接标签从前一个文件重定向到我现
  • Azure 函数无法正常工作“无法在脚本代码中声明命名空间”

    我是一名 Java 微服务人员 对 NET 不太感兴趣 在 StackOverflow 社区的帮助下 我能够为我的问题获得工作代码 该代码在本地完美运行 但是当我尝试将其作为函数移动到 Azure 时 我收到错误 请指导 Code 本地工作
  • 在 R 中按降序排列带有“null”的条形图的条形

    我想创建一个带有降序条形的条形图 在下面的图中 由于 NA 出现在 a1 向量的第二个位置 所以在创建图时它被推到最后 但是 我希望 NA 条仅出现在第二个位置 请在此帮助我 因为我想在不修改数据的情况下实现此目的 library ggpl
  • 由于 PIC,无法从程序集中的 x86-64 对象链接共享库

    我正在将共享库从 32 位移植到 64 位 它由一些导出多个过程的程序集 为 NASM 编写 和一些高级 C 粘合代码组成 我正在使用 NASM 2 10 01 和 GNU ld 2 22 的 64 位 Debian 机器上进行构建 解决了
  • (Quicksight) 如何仅对唯一字段中的值求和

    我的数据集有一个 Invoice No 字段 我想对其成本进行求和 所有发票号码都是唯一的并且具有one成本价值 但是 由于每个 Invoice No 中有多个 Part No 字段 Quicksight 会将这一成本乘以每张发票中的零件编
  • 通过 JavaScript 隐藏来自 Google 的链接

    我们有一些想要向 Google 隐藏的链接 使用 Javascript 来 隐藏 链接 但让它为真正的客户工作 SEO 机构告诉我 最好的方法是对链接进行 Base64 编码并通过 javascript 调用它 a href Link a
  • 可以对两个可能的表之一创建 MySQL 外键吗?

    好吧 这是我的问题 我有三张桌子 地区 国家 州 国家可以在区域内 州也可以在区域内 区域是食物链的顶端 现在我添加一个包含两列的popular areas 表 region id 和popular place id 是否可以使popula
  • 通过相机使用动态坐标捕获图像

    我正在制作一个基于相机的应用程序 我在相机上放置了一个矩形视图 当我使用捕获图像时new Camera PictureCallback 我裁剪了该图像 以便它将获得矩形的一部分 嗯 它工作正常 现在我实施了View OnTouchListe
  • Laravel - 三个模型的数据透视表 - 如何插入相关模型?

    我有三个具有多对多关系的模型 User Activity Product 桌子看起来像id name 每个模型中都有函数 例如在用户模型中 public function activities return this gt belongsT
  • 使用 fetch 进行 WebAudio 流式传输:DOMException:无法解码音频数据

    我正在尝试使用 Chrome 51 播放来自 fetch API 的无限流 网络摄像头音频流为 Microsoft PCM 16 位 单声道 11025 Hz 该代码对于 mp3 文件几乎可以正常工作 除了一些小故障 但它对于 wav 文件
  • Java Set 获取重复条目

    JavaDoc 将集合定义为 不包含重复元素的集合 更正式地说 设置 不包含使得 e1 equals e2 的元素对 e1 和 e2 为了验证这一点 我创建了一个非常简单的程序 import java util HashSet public
  • 使用 CCHmac() 生成 HMAC swift sdk8.3

    在 SDK8 3 之前 我是通过这种方式生成 hmac 的 现在我在 CCHmac 函数上遇到错误 由于我是初学者 我不知道如何解决它 在此先感谢您的帮助 xcode 警告 无法使用类型为 UInt32 CChar UInt CChar U