如何在 Cocoa / Objective-C 中将文件编码和解码为 Base64

2023-11-24

我目前正在尝试让一个小型肥皂客户端工作,其中包括在请求的 xml 中发送证书文件。

我可以轻松地将文件放入 NSData 对象中 - 但随后我必须将其转换为某个 Base64 字符串。环境是Mac OSX,Xcode 4.3。

我发现很多较旧的帖子都涉及这个问题 - 但我发现的最好的是一些使用 OpenSSL 库的代码,并且其中包含大量已弃用的方法。

所以,我的问题如下: 有没有比使用 OpenSSL 库更好的方法? 如果是,您是否有一些 URL 或更新的代码片段?

如果没有,我想有一些可以推荐的处理 Base64 的项目。毕竟 Base64 并不罕见。

感谢您的帮助!


这是使用 CommonCrypto 完成的 Base64 编码:

这是非常简单的代码,将其放入一个类别中并不困难

如果您将其添加到您的项目中,您还需要添加 Security.framework

#include <CoreFoundation/CoreFoundation.h>
#include <Security/Security.h>

static NSData *base64helper(NSData *input, SecTransformRef transform)
{
    NSData *output = nil;

    if (!transform)
        return nil;

    if (SecTransformSetAttribute(transform, kSecTransformInputAttributeName, input, NULL))
        output = (NSData *)SecTransformExecute(transform, NULL);

    CFRelease(transform);

    return [output autorelease];
}

NSString *base64enc(NSData *input)
{
    SecTransformRef transform = SecEncodeTransformCreate(kSecBase64Encoding, NULL);

    return [[[NSString alloc] initWithData:base64helper(input, transform) encoding:NSASCIIStringEncoding] autorelease];
}

NSData *base64dec(NSString *input)
{
    SecTransformRef transform = SecDecodeTransformCreate(kSecBase64Encoding, NULL);

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

如何在 Cocoa / Objective-C 中将文件编码和解码为 Base64 的相关文章

  • 在 UITableView 中设置滚动位置

    我有一个应用程序 其工作方式与 iPhone 的 联系人 应用程序的工作方式有些相似 当我们添加新的联系人时 用户将被定向到包含联系人信息的仅查看屏幕 如果我们从导航栏中选择 所有联系人 用户将导航到查看最近添加的联系人的所有联系人列表 我
  • 使用 FromBase64Transform 解码 base64 文件流

    The example https msdn microsoft com en us library system security cryptography frombase64transform 28v vs 110 29 aspx从M
  • 使用 Objective-C 在 iPhone 应用程序中显示或隐藏 UIButton

    我在用UITextView编辑文本 我想用两个UIButtons编辑并保存 最初我想显示编辑UIButton 当用户单击编辑时我想显示保存UIButton 当内容成功保存后 我不想再显示保存按钮 我是一名 C 编码员 在 C 中我曾经这样做
  • 对 UIImage 进行方形裁剪,导致图像拉伸

    当尝试执行 UIImage 的中心裁剪时 我得到以下结果 左侧是原始图像640 1136 右边是适合正方形的裁剪图像UIImageView at 320 320 turns to 我对比率元素进行了相当多的修改 以便它可以正确检测要修剪的量
  • 如何使用 ZBar 读取器的 scanCrop 属性?

    我正在使用 iPhone 的 ZBar SDK 来扫描条形码 我希望阅读器仅扫描特定的矩形而不是整个视图 为此需要将阅读器的 scanCrop 属性设置为所需的矩形 我很难理解必须设置的矩形参数 有人可以告诉我如果在纵向视图上它的坐标是 我
  • 从 NSError 返回 NSString

    我正在使用NSURLRequest我的 iPhone 应用程序中的类 调用它的方法返回一个NSString这对于连接正常时非常有用 但问题是我需要将 NSError 转换为 NSString 以便我可以将其返回或运行一些if 对此的声明 有
  • 维护 UISegmentedControl 中的选择

    我可以保持 UISegmentViewControl 段的选定状态吗 即 即使用户选择了另一个段 也可以保持一个段显示为选中状态 我似乎在任何地方都找不到任何可以做到这一点的东西 这是不可能开箱即用的 看如何才能选择 UISegmented
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • 如何在ios中以编程方式添加水平间距和垂直间距?

    我在 ios 8 中创建了一个应用程序 因为我有 4 个可垂直使用的标签 它应该在某些条件下更改位置 所以我已禁用自动布局并以编程方式设置约束 现在的问题是 我可以设置水平和垂直位置 宽度和高度的约束 但我找不到任何方法来添加标签之间的水平
  • Xcode MyProjectName-Bridging-Header.h 不存在

    我想开始在我的 Objective C 项目中使用 Swift 所以我添加了一个快速类 import Foundation objc class System NSObject objc func printSome println Pri
  • 应用程序发布后,对如何更新 UITableView 上的数据源感到困惑

    阅读文档后 我似乎误解了有关数据管理的一些概念 所以我试图澄清一些方面 如果这篇文章听起来多余和重复 请道歉 我的应用程序有多个 TableView 每个表视图都有一个 pList 形式的数据源 因此 我有几个属性列表用作我的表的数据源 目
  • 无边框 NSButton 单击时变为灰色

    我正在使用三个带有图像集的 NSButton 制作一个小应用程序 这些按钮没有边框也没有背景 但是 当我单击按钮时 它会变成灰色矩形 我怎样才能解决这个问题 谢谢 让你的按钮类型为NSMomentaryChangeButton myBtn
  • 以编程方式更改 UISlider 的范围

    如何以编程方式设置 UISlider 的最小最大范围 例如 虚拟代码 UISlider slider UISlider alloc init slider min 3 slider max 3 EDIT 所以我有以下内容 sl minimu
  • 将第 3 方库添加到 iPhone 应用程序时如何设置“标题搜索路径”的路径

    我想添加第 3 方库语音转文本 https github com todoroo iPhone Speech To Textto my Xcode项目 我只是拖xcodeproj文件在我的 iPhone 项目中 然后我按照目标依赖项 将二进
  • 监控剪贴板活动可可?

    是否可以在可可中 观看 用户剪贴板 例如 如果我的应用程序是系统托盘样式应用程序 例如 dropbox 客户端 我可以订阅用户在另一个应用程序中点击复制 粘贴时引发的事件吗 你可以随时查看Apple的示例代码 剪贴板查看器 http dev
  • iOS 中的词干 - 不适用于单个单词

    我在用NSLinguisticTagger用于词干提取 我能够获得句子中单词的词干 但无法获得单个单词的词干 以下是我正在使用的代码 NSString stmnt i waited NSLinguisticTaggerOptions opt
  • 可可:NSView原点x在底部

    我正在以编程方式创建一个NSWindow以及其上的控件 看来原点 0 0 位于左下角 这对我来说很奇怪 来自其他 GUI 工具包 是否有一些标志 以便我可以更改它 使原点位于左上角 在 OS X 上 原点位于左下角 对于屏幕坐标和视图框架来
  • 将 Base64 字符串转换为图像文件? [复制]

    这个问题在这里已经有答案了 我正在尝试将我的 Base64 图像字符串转换为图像文件 这是我的 Base64 字符串 http pastebin com ENkTrGNG http pastebin com ENkTrGNG 使用以下代码将
  • Parse 在哪里存储用户会话

    登录代码 PFUser logInWithUsernameInBackground self userTextField text password self passwordTextField text block PFUser user

随机推荐

  • com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:在 mysql 中

    您好 我已经创建了 jdbc 程序 数据库是 MySQL 5 1 我所有的朋友也使用相同的数据库进行连接 我们所有人的联系总数变成了150个 所以当我想连接更多时我收到以下错误 com mysql jdbc exceptions jdbc4
  • WPF 根元素对于导航无效

    我正在将 WPF XBAP 应用程序转换为 WPF 桌面应用程序 我让它在桌面上运行 但现在尝试将页面引用更改为窗口引用 MyApp StartForm root element is not valid for navigation 我尝
  • 如何更改导航抽屉标题中 TextView 的文本?

    我想更改导航抽屉标题内 TextView 的文本 但我收到这个错误 java lang NullPointerException 尝试调用虚拟方法 void android widget TextView setText java lang
  • ASP.NET / C#:服务器控件中的 DropDownList SelectedIndexChanged 未触发

    我正在创建一个服务器控件 它基本上绑定两个下拉列表 一个用于国家 地区 一个用于州 并更新国家 地区的 selectedindexchanged 事件的州下拉列表 但是 它不会回发 有什么想法吗 将它们包装在 UpdatePanel 中的奖
  • strtotime() 被认为有害吗?

    似乎很多人都在为 PHP 中的日期 时间问题而苦苦挣扎 不可避免地 许多接受的答案往往是 Use strtotime这样 这真的是指导人们处理约会问题的最佳方式吗 我开始觉得strtotime是一种巧妙的技巧 不一定依赖于重要的日期 时间计
  • 实时 PL/SQL 输出

    是否可以实时获得 PL SQL 的输出 我有一个相当大的包裹 运行了一个多小时 我想看看该包裹在特定时间在哪里 无论如何 我目前使用一个日志表来执行此操作 每次运行该表都会填充数百个日志描述 我只是好奇这是否可能 Thanks 这就是我使用
  • 在大括号和管道中对命令进行分组不会保留变量

    说我有一个文件myfile在我当前的工作目录中 如果命令正常执行 我想设置一个变量 但也使用它的结果 ls myfile v 3 myfile echo v 3 但现在我也想通过管道传输结果 所以我使用 list 对命令进行分组的语法 un
  • 响应式设计:不同屏幕尺寸显示不同图像

    我们的客户希望在小屏幕上与大屏幕上有不同的横幅图像 不仅仅是收缩 拉伸以适应 而且实际上替换了不同的图像 全尺寸图像相当复杂 几个人 两个徽标和一些装饰文本 因此对于较小的图像 他们想要裁剪掉一些人 删除徽标等 所以他们想要最大的 最复杂的
  • 为什么带有两个常量的三元运算符比带有变量的三元运算符更快?

    在Java中 我有两个不同的语句 通过使用三元运算符来实现相同的结果 如下所示 num lt 0 0 num num num lt 0 0 1 看来第二条语句不必要地复杂 并且比第一条语句花费的时间更长 但是当我使用以下代码记录每个语句所花
  • Pandas 分割并选择第二个元素

    我有一个像这样的数据框 item id 26 23 24 65 12 24 54 24 66 23 当我说 df item id df item id map lambda x x split 0 I get item id 26 24 1
  • 在活动之间导航时重置运动布局

    我在我的主要活动中使用运动布局 它工作正常 但是 当我移至其他活动并导航回主活动时 有时活动会重置并且布局处于起始状态 如何防止这种情况发生 除此之外 我还有另一个关于运动布局的问题here 我所做的是添加一个字段 具体来说是一个布尔字段
  • 设置十六进制和十进制颜色的行为不同

    我试图通过以下方式设置橙色 WorkSheet Range A1 A5 Interior color 49407 and WorkSheet Range A1 A5 Interior color HC0FF Hex value of 494
  • 如何将 SelectManyCheckbox 与两个 ArrayList 一起使用? - Primefaces

    我正在尝试实现一个
  • PyMC 3 中的生存分析

    我尝试移植简单的生存模型从这里 介绍中的第一个 从 PyMC 2 到 PyMC 3 但是 我没有找到任何与 观察到的 装饰器等效的东西 并且我尝试编写新发行版失败了 有人可以提供一个例子 这是如何在 PyMC 3 中完成的吗 这是一个棘手的
  • 从 NSFetchedResultsController 设置 UITableView 标头

    我有一个NSFetchedResultsController这是从 a 中获取对象NSManagedObjectContext 我正在使用结果来填充 UITableView 我正在用这两个排序描述符进行过滤 NSSortDescriptor
  • 子类 string.Formatter

    在此发表评论 如何定义新的字符串格式化程序 我尝试子类化string Formatter 这是我所做的 不幸的是我似乎在这个过程中打破了它 import string from math import floor log10 class C
  • 编写用户脚本时,立即调用函数表达式 (IIFE) 模式真的有必要吗?

    我的问题非常类似于javascript中自执行函数的目的是什么 但是它涉及用户脚本 特别是 GreaseMonkey 我发现有些用户脚本是按照这种模式分发的 有些则不是 具有 IIFE 模式的脚本示例 source UserScript U
  • 文件正在被另一个进程使用

    我有一个程序大致可以做到这一点 打开一个文件并从中读取 关闭文件 启动文件观察程序来观察文件中的更改 一旦检测到更改 文件观察器的 EnableRaisingEvents 标志就会设置为 false 并且该过程从步骤 1 开始重复 问题是
  • Python打印unicode列表

    用下面的代码 lst u u5de5 u u5de5 msg repr lst decode unicode escape print msg I got u 工 u 工 如何删除前导u使得内容msg is 工 工 gt gt gt imp
  • 如何在 Cocoa / Objective-C 中将文件编码和解码为 Base64

    我目前正在尝试让一个小型肥皂客户端工作 其中包括在请求的 xml 中发送证书文件 我可以轻松地将文件放入 NSData 对象中 但随后我必须将其转换为某个 Base64 字符串 环境是Mac OSX Xcode 4 3 我发现很多较旧的帖子