- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我确实像这样使用 OpenSSL 生成私钥:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 563 -nodes -subj "//C=LT\ST=Vilnius\L=Vilnius\O=Briedis\OU=Org\CN=www.example.com"
key.pem 文件包含 base64 格式的私钥。删除了 BEGIN 和 END 标记。以及新线路。应用这些更改后,私钥如下所示:
let privteKeyString = “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“
从base64到SecKey的转换:
let privateKeyData = Data(privteKeyString.utf8)
var error: Unmanaged<CFError>?
let secKey = SecKeyCreateWithData(privateKeyData as! NSData, [
kSecAttrKeyType: kSecAttrKeyTypeRSA,
kSecAttrKeySizeInBits: 4096,
kSecAttrKeyClass: kSecAttrKeyClassPrivate,
] as NSDictionary, &error)
执行后出现 -50 错误。
私钥base64转SecKey的方法是什么?
最佳答案
通常所有 RSAPrivateKey 都不是普通的 RSAPrivateKey,而是 PrivateKeyInfo(请参阅 RFC 5208 的第 5 节)。 IOS 不支持 PrivateKeyInfo key 结构。在这种情况下,需要转换为 RSAPrivateKey。从 PrivateKeyInfo 创建 iOS SecKey 的步骤:
使用 OpenSSL 将私钥.pem 转换为 DER 格式。
openssl rsa -in key.pem -outform der -out key.der
将 key.der 文件拖放到 Xcode 项目中。
加载并打印私钥作为 vanilla RSAPrivateKey:
let keyUrl = Bundle.main.url(forResource: "key", withExtension: "der")
let keyDerData = try? Data(contentsOf: keyUrl!)
print(keyDerData?.base64EncodedString())
将原始 RSAPrivateKey 原始数据转换为 SecKey。
var error: Unmanaged<CFError>?
let secKey = SecKeyCreateWithData(keyDerData as! NSData, [
kSecAttrKeyType: kSecAttrKeyTypeRSA,
kSecAttrKeySizeInBits: 4096,
kSecAttrKeyClass: kSecAttrKeyClassPrivate,
] as NSDictionary, &error)
关于ios - 将私有(private) base64 编码 key 转换为 SecKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54919088/
我想在 Swift 中进行 RSA 加密,但我在这一行遇到了一个奇怪的错误: var publicKey:SecKeyRef = KeyFormatter.getPublicKeyRefere
我尝试用 制作我自己的 SecKey exponent: let exponent = "10001" modulus: let modulus = "D6250B831F82EC984513922E
编辑 添加了所需请求的屏幕截图。 我正在尝试使用 Swift 4 制作一个 MacOs 应用程序。此应用程序与需要 RSA 加密的 API 进行通信。 Google 没有给出可以解释如何做到这一点的结
我在 从 NSData 创建 SecKey 时遇到问题。基本上,我的客户端-服务器通信基于使用私钥创建的签名并使用公钥在服务器上进行验证。 我正在两个设备之间实现 session 传输,为了继续通信,
我将一把 key 保存到钥匙串(keychain)中,然后读回它来比较结果。问题是:值(value)观现在不同了。知道哪里出了问题吗? 下面是我读写 SecKey 的方法: var privateKe
我正在尝试升级我从 this answer 获得的代码用于生成 CSR,从 Swift 2 到 Swift 3。 我已经升级了大部分代码,但原始答案的 Utility block 中的以下代码因错误而
我想使用 RSA 加密数据,我尝试在我的代码中生成 key 并且它正在运行,但我实际需要的是从服务器获取公钥作为字符串,然后将其用作 Seckey 这样我就可以使用它使用 RSA 加密数据,我试过这段
当我尝试运行特定应用程序的协同设计时,出现错误: /Users/xxx/xxxxxx/xxxxx.app: 替换现有签名 SecKey API 返回:-67671 (null)/Users/xxx/x
我使用 SecKeyGeneratePair 生成了一个 keeper。 var publicKeyPtr, privateKeyPtr: Unmanaged? let
目前我正在使用 iOS 安全框架生成一个 RSAKeyPair statusCode = SecKeyGeneratePair(keyPairAttributes as CFDictionary, &
我正在使用 swift 3 开发一个 iOS 应用。 我需要将 SecKey(这是用户 RSA 公钥引用)导出到字符串(例如 base64),以便通过生成的 QRCode 共享它。 它也必须以其他方式
我想将 ECPublicKey 转换为 PEM 格式,如下所示 "-----BEGIN PUBLICKEY-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEo0WcFr
我正在尝试在我的 iOS 应用程序和 watchOS 等效应用程序之间同步私有(private)非对称 key 。我尝试使用 SecKeyCopyExternalRepresentation 将其导出
我在swift中做一个涉及RSA加密的项目,遇到一个指针问题如下: 我有一个全局 var publicKey: SecKey?可选值,我需要获取 UnsafeMutablePointer?>指向它的指
我在尝试构建我的 iOS 应用程序时收到以下错误。此错误仅在构建发布配置时发生。此外,我将 CocoaPods 用于我的第三方依赖项,并且这些构建通过 SSH 在 Jenkins 上运行。 SecKe
我正在尝试使用 key 对加密来验证我的应用程序和我的 PHP 服务器之间的身份。为此,我需要在我的应用程序中生成公钥后将其发送到服务器。 if let pubKey = NSData(base64E
我想在 swift 中固定 ssl 公钥,我阅读了很多如何做到这一点的示例,最后想到我找不到的是如何比较 SecKey 对象格式的两个公钥。示例: let serverPublicKey = SecT
我用 SecKeyGeneratePair 创建了一个公钥/私钥对(椭圆曲线)。 如何使用 SecKey 实例在 Swift 中使用 OpenSSL 生成 CSR? 最佳答案 据我所知,Apple 自
我正在尝试从 iOS 上的 SecKey 获取 PEM 编码 key 。 EC 私钥存储在 Keychain 上。 我从 SecKey 对象获取数据对象: if #available(iOS
我确实像这样使用 OpenSSL 生成私钥: openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 563 -n
我是一名优秀的程序员,十分优秀!