Swift 中服务器的公钥字符串中的 Seckey

2023-11-24

我想使用 RSA 加密数据,我尝试在代码中生成密钥并且它正在工作,但我实际需要的是从服务器获取字符串形式的公钥,然后将其用作 Seckey,以便我可以使用它来加密使用 RSA 的数据, 我尝试了这段代码:

//KeyString is the string of the key from server
let KeyData = (keyString as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData!


    var cert : Unmanaged<SecCertificateRef>!;
    var  policy : Unmanaged<SecPolicy>!;
    cert = SecCertificateCreateWithData(kCFAllocatorDefault, KeyData);
    policy = SecPolicyCreateBasicX509();
    var status : OSStatus = noErr
    var trust: SecTrust?
    var certArray : [Unmanaged<SecCertificateRef>!] = [cert];
    var certArrayPointer = UnsafeMutablePointer<UnsafePointer<Void>>(certArray)
    status = SecTrustCreateWithCertificates(cert, policy, trust);
    let publicKey: SecKeyRef = SecTrustCopyPublicKey(trust!).takeUnretainedValue()

我无法运行此代码,因为 SecTrustCreateWithCertificates 方法期望证书为anyObject! ,我不知道如何解决这个问题,如果解决这个问题能让我获得 SecKey。

我从上面得到了代码Objective-c 中的这个答案

因此,如果有人可以帮助我获得正确的代码来解决这个问题,我将非常感激:)


For mac:

let pubKey = "-----BEGIN PUBLIC KEY-----MIICIjANBgAgK.......InbFk1FkucQqruMyUCAwEAAQ==-----END PUBLIC KEY-----"
let pubKeyData = pubKey.dataUsingEncoding(NSASCIIStringEncoding)
var error: Unmanaged<CFErrorRef>?
let secKey = SecKeyCreateFromData(NSDictionary(), pubKeyData!, &error)

其中 pubKey 是公钥的字符串表示形式。 如果您不知道您的公钥,您可以使用以下命令从您的私钥推断出它:

openssl rsa -in server.key -pubout  > mykey.pub

其中 server.key 是包含以下内容的文件-----BEGIN RSA PRIVATE KEY-----作为第一行。

For iOS:

情况有点复杂。 你需要一个der文件。它是您的证书的二进制表示形式。 如果需要转换现有证书,可以使用以下命令进行操作:

 openssl x509 -outform der -in file.crt|pem -out mycert.der

The .crt or .pem文件包含-----BEGIN CERTIFICATE-----作为第一行。

Put the der将文件放入你的包中并执行以下操作:

let certificateData = NSData(contentsOfURL:NSBundle.mainBundle().URLForResource("mycert", withExtension: "der")!)

let certificate = SecCertificateCreateWithData(nil, certificateData!)

var trust: SecTrustRef?

let policy = SecPolicyCreateBasicX509()
let status = SecTrustCreateWithCertificates(certificate!, policy, &trust)

if status == errSecSuccess {
    let key = SecTrustCopyPublicKey(trust!)!;
}

亚塔!密钥现在包含一个SecKey您的公钥的表示。快乐固定。

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

Swift 中服务器的公钥字符串中的 Seckey 的相关文章

  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • Swift 中的 import 语句是否有相关成本?

    阅读字符串宣言 我看到一个段落 https github com apple swift blob master docs StringManifesto md batteries included关于避免Foundation不需要的时候导
  • 当 isUserInteractionEnabled false 时,SKSpriteNode 不会让触摸通过

    我正在尝试在 SpriteKit 中创建一个覆盖层 方法是使用SKSpriteNode 但是 我希望触摸穿过覆盖层 所以我设置isUserInteractionEnabled为假 然而 当我这样做时 SKSpriteNode似乎仍然吸收所有
  • 将 UIToolBar 添加到所有键盘(swift)

    我正在尝试以尽可能少的重复次数将自定义 UIToolBar 添加到我的所有键盘中 我目前的做法要求我将代码添加到所有 viewDidLoads 中 并将每个文本字段的委托分配给我正在使用的 viewController 我尝试创建自己的 U
  • 如何动态获取 UITableViewCell 的高度

    我创建了自定义的tableViewCell 我在UITableViewCell中添加了UIView SubView 所以我在 UIView 中的所有动态文本和图像内容都会根据文本和图像大小而变化 但现在 HeightforRowAtInde
  • 如何使用 CNContacts 快速获取手机号码?

    我有一些代码可以检索用户联系人中的所有电话号码 但只想过滤掉手机号码 目前 我只是通过将第一个数字为 或第二个数字为 7 的数字添加到数组中来实现此目的 如下所示 func findContacts gt CNContact let key
  • 从未调用过交互式委托方法

    我想在 ViewController 1 和 NavigationViewController 2 之间进行交互式转换 NavigationController 通过按钮调用 因此呈现时没有交互转换 它可以通过按钮或 UIPanGestur
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • iPhone X 将对象底部与安全区域对齐会破坏其他设备上的外观

    关于 iPhone X 自动布局怪癖的问题 我有两个按钮 以前这些按钮将与超级视图底部对齐 偏移量为 20 以免它们接触屏幕底部 此后我将链接更改为安全区域而不是超级视图 Here s the original setup Looks go
  • 使用数组中的字符串淡入/淡出标签

    func setOverlayTitle self overlayLogo text Welcome var hello String Bon Jour GUTEN nMORGEN BONJOUR HOLA BUENOS D AS BUON
  • 在 WKWebView 中禁用缩放?

    有谁知道在 WKWebView 中禁用双击和捏缩放的简单方法 我尝试过的任何方法都不起作用 Webview scrollView allowsMagnification false Error value of type WKWebView
  • SwiftUI:隐藏键盘但显示光标

    我想使用自定义按钮将文本输入到TextField 但仍显示并移动光标 有没有办法隐藏默认键盘 同时仍然显示光标 我希望有这样的事情 TextField text text keyboardType none 这是它目前的样子 您可以使用UI
  • 动态调度协议扩展不适用于多个目标

    这是我的主要目标中的代码 所以不是测试目标 protocol ProtocolA func dontCrash extension ProtocolA func dontCrash fatalError func tryCrash dont
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • UICollectionView setLayout:animated: 不保留 zIndex

    我注意到打电话时setLayout animated in a UICollectionView要在两个布局之间切换 当前可见的单元格不遵循zIndex它的布局属性已设置在layoutAttributesForItemAtIndexPath
  • UIViewController 内的 UIsearchController 使用自动布局

    有没有人成功实施过UIViewController其中包含两个UISearchController searchBar and a UItableView使用自动布局来布局所有内容 我正在尝试实现类似的目标1密码 https itunes
  • Unwind segue 的用途是什么以及如何使用它们?

    iOS 6 和 Xcode 4 5 有一个称为 Unwind Segue 的新功能 展开转场可以允许过渡到故事板中场景的现有实例 除了 Xcode 4 5 发行说明中的 这个简短条目之外 UIViewController 现在似乎还有几个新
  • 致命错误:在 Swift 中解包可选值时意外发现 nil

    所以我试图获取 Swift 中输入字段的文本 这就是我得到的 class ViewController UIViewController IBOutlet var passwordField UITextField IBOutlet var
  • 如何在 UITableView 的 switch 语句中创建变量?

    我正在构建一个包含三个部分的 tableView 我已经完成了前两个工作 但最后一个有点阻力 我的问题似乎涉及尝试在 switch 语句中声明变量 实际上是嵌套的 switch 语句 据我所知 这不是一个好主意 但在这种情况下 这似乎是唯一

随机推荐

  • 在Rcpp中实现apply函数

    我一直在尝试在 Rcpp 中实现 apply 函数 到目前为止代码如下所示 Rcpp export NumericVector apply NumericMatrix x int dim Function f NumericVector o
  • 在 C 语言中,声明指针的正确语法是什么?

    我依稀记得之前在另一个问题的回答中看到过这个 但搜索并没有找到答案 我不记得是什么了proper声明变量为指针的方法 是吗 Type instance Or Type instance 尽管我知道两者在大多数情况下都会编译 但我相信在某些示
  • false' 在 maven 3' aria-label=''false' 在 maven 3'> 'false' 在 maven 3

    为什么 maven 3 在 pom xml 的快照存储库配置中贬值 false 其背后的动机是什么
  • 从应用程序注销后如何取消订阅 FCM 通知?

    我已经在我的应用程序中实现了 Firebase 云消息传递以用于推送通知 一切工作正常 但即使用户从应用程序注销 也会收到通知 我听说 当用户从应用程序注销时 我需要删除 FCM 令牌 所以我在注销方法中这样做了 void logout F
  • 如何为vim设置syntastic?

    所以我将存储库克隆到 vim bundle并安装了病原体 我可以确定病原体工作正常 因为我的捆绑包中的其他插件都工作正常 经过谷歌搜索一段时间后 似乎 syntastic 应该可以直接用于 c 代码 我还检查了我是否拥有指定的所有可执行文件
  • T-SQL - 什么是内联视图?

    我最近回答了这个问题如何按顺序调用用户定义的函数以与按顺序选择组一起使用 我的答案是使用内联视图来执行该功能 然后对其进行分组 在评论中 提问者没有理解我的回答 并要求提供一些网站 参考资料来帮助解释 我快速谷歌了一下 没有找到任何很好的资
  • 在 Swift 中使用 NumberFormatter 格式化大十进制数

    我这样做是为了格式化数字 但对于大数字来说失败 let formatter NumberFormatter formatter numberStyle decimal if let number formatter number from
  • 在 Eclipse 中使用 Gwt 2.7

    有gwt 2 7版本的eclipse插件吗 如果我从官方存储库安装 eclipse 插件 https dl google com eclipse plugin 4 4 它将 Google Web Toolkit SDK 2 6 0 列为唯一
  • 调整图像大小以适合 div

    如何调整图像大小以适合 div 的大小piecemaker container div div img src splash jpg alt some text div div piecemaker container display bl
  • 选择性同步 Google Drive 本地文件夹? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 Google Drive 中是否有一种方法可以对本地文件夹进行选择性同步 即将父文件夹同步到云 同时仅将某些选定的子文件夹保留在本地 例如 在我的本地电脑上project文件夹有3个
  • 搜索 ClearCase 来查找带有特定评论的签入

    我被要求提供大约 3 个月前签入 ClearCase 的详细信息 我知道评论中包含的 QC 编号 但迄今为止完全未能找到一种方法来搜索 ClearCase 以通过评论签入 有任何想法吗 布赖恩 阿格纽走在正确的轨道上 但需要注意的是 我确信
  • Conda:直接从 github 安装/升级

    我可以使用以下命令从 GitHub 安装 升级包吗conda 例如 与pip我可以 pip install git git github com scrappy scrappy master 安装scrappy直接从masterGitHub
  • python 中导入 timeit.timeit 变量

    我正在尝试使用timeit timeit 以便找出执行特定代码行需要多少时间 问题是这一行包含变量 我需要以某种方式导入它们 所以我的问题是如何导入 为了更清楚 代码看起来像这样 def func var1 aaa var2 aab t1
  • Android:使用 FLAG_SECURE 时更改窗口背景的颜色

    我有一个请求 当我的 Android 应用程序放入后台时 我会清空屏幕以隐藏敏感数据 使用以下方法很容易实现 getWindow addFlags WindowManager LayoutParams FLAG SECURE 困难的部分似乎
  • Python 如何比较“int”和“float”对象?

    文档关于数字类型指出 Python 完全支持混合算术 当二元算术运算符具有不同数值类型的操作数时 较窄 类型的操作数会扩展到另一个操作数 其中整数比浮点窄 浮点又比复数窄 混合类型的数字之间的比较使用相同的规则 以下行为支持这一点 gt g
  • Rails 5 - 对象关系阻抗以及如何构造多个继承的类/表

    EDIT我对原文进行了编辑 以便更容易理解 我了解对象关系阻抗问题 我了解 Rails STI 和多态性 Rails 方式 但它不是真正的 OO 多态性 我已经阅读了大量有关此问题的博客和问题 但仍然找不到这个问题的答案 class Per
  • 大O,你是如何计算/近似的?

    大多数拥有计算机科学学位的人肯定知道什么大O代表 它帮助我们衡量算法的扩展程度 但我很好奇 怎么办you计算或近似算法的复杂性 我将尽力在这里用简单的术语解释它 但请注意 这个主题需要我的学生几个月的时间才能最终掌握 您可以在第 2 章中找
  • OpenCV C++/Obj-C:正确的对象检测

    作为某种 假日项目 我正在玩 OpenCV 想要检测和测量东西 当前工作流程 早期 检测 转换为灰度 cv cvtColor 应用自适应阈值 cv adaptiveThreshold 应用 canny 边缘检测 cv Canny 查找轮廓
  • 我在 Windows 计算机上找不到 my.cnf [重复]

    这个问题在这里已经有答案了 我的电脑是Windows XP 我需要找到my cnf将所有权限恢复给 root 用户 我不小心删除了root用户的一些权限 我还留着密码 以root用户登录MySQL没有问题 但我无法更改表格 这是我的回答 W
  • Swift 中服务器的公钥字符串中的 Seckey

    我想使用 RSA 加密数据 我尝试在代码中生成密钥并且它正在工作 但我实际需要的是从服务器获取字符串形式的公钥 然后将其用作 Seckey 以便我可以使用它来加密使用 RSA 的数据 我尝试了这段代码 KeyString is the st