如何加载密钥并使用 RSA 加密 Swift
How to Load a Key and Encrypt With RSA Swift
如何在不使用库或 API 的情况下从文件加载 public 或私钥,然后在 Swift 中用它加密或解密数据?
您可以使用 OS X 的内置 OpenSSL 来生成和加密或 OS X 和 Swift.
的组合
OpenSSL 命令:
- openssl genrsa -out rsaPrivateKey.pem 4096(2048 也可以
– 经销商选择)
- openssl rsa -in rsaPrivateKey.pem -out rsaPrivateKey.key
- openssl req -new -key rsaPrivateKey.key -out rsaCertReq.crt(这个
步骤需要基本信息,iOS需要密码,所以设置一个
当它询问时)
- openssl x509 -req -days 10000 -in rsaCertReq.crt -signkey
rsaPrivateKey.key -out rsaCert.crt
- openssl x509 -outform der -in rsaCert.crt -out publicKey.der
- openssl pkcs12 -export -out privateKey.pfx -inkey rsaPrivateKey.key
-in rsaCert.crt
最后,从 iOS 的角度来看,重要的文件是 publicKey.der 和 privateKey.pfx。您将使用 publicKey.der 加密数据,并使用 privateKey.pfx 解密。
加密在iOS
在iOS中,Certificate, Key, and Trust ServicesAPI除了提供对密钥的编码和解码的支持功能外,还提供了基本的区块加密、解密、签名和验证功能使用以下 SecKey 函数的数据:
SecKeyEncrypt—使用指定密钥加密数据块。
SecKeyDecrypt—使用指定的密钥解密数据块。
SecKeyRawSign—使用指定的密钥对数据块进行签名。
SecKeyRawVerify—根据数据块和指定密钥验证签名。
Apple 文档
Encrypting and Hashing Data
您可以在 Apple 文档中找到有关如何使用这些函数的示例 Certificate, Key, and Trust Services Tasks for iOS
import UIKit
import CoreFoundation
为 Security.h
使用桥接头文件
#import <Security/Security.h>
好的,我为您做了一些研究,这就是我得出的结论(基于我在 this related question 中看到的答案)。
There is an open source GitHub project in Swift called Heimdall 这是 Apple 安全框架的一个很好的包装器。 GitHub 页面上的自述文件显示 "Swift 1.2" 但 Xcode 7 和 Swift 2.0 将在任何一天完成,因此希望它会尽快更新。
如果你想跳过使用开源的东西,那么你需要直接调用苹果的安全框架。查找包含这些调用的示例代码:SecKeyEncrypt
和
SecKeyDecrypt
.
这两个调用(以及 SecKey.h 中的所有内容)似乎是 C 函数,但我链接到的 Apple 文档似乎表明可能有 Swift API可用。
如何在不使用库或 API 的情况下从文件加载 public 或私钥,然后在 Swift 中用它加密或解密数据?
您可以使用 OS X 的内置 OpenSSL 来生成和加密或 OS X 和 Swift.
的组合OpenSSL 命令:
- openssl genrsa -out rsaPrivateKey.pem 4096(2048 也可以
– 经销商选择)
- openssl rsa -in rsaPrivateKey.pem -out rsaPrivateKey.key
- openssl req -new -key rsaPrivateKey.key -out rsaCertReq.crt(这个
步骤需要基本信息,iOS需要密码,所以设置一个
当它询问时)
- openssl x509 -req -days 10000 -in rsaCertReq.crt -signkey
rsaPrivateKey.key -out rsaCert.crt
- openssl x509 -outform der -in rsaCert.crt -out publicKey.der
- openssl pkcs12 -export -out privateKey.pfx -inkey rsaPrivateKey.key
-in rsaCert.crt
最后,从 iOS 的角度来看,重要的文件是 publicKey.der 和 privateKey.pfx。您将使用 publicKey.der 加密数据,并使用 privateKey.pfx 解密。
加密在iOS
在iOS中,Certificate, Key, and Trust ServicesAPI除了提供对密钥的编码和解码的支持功能外,还提供了基本的区块加密、解密、签名和验证功能使用以下 SecKey 函数的数据:
SecKeyEncrypt—使用指定密钥加密数据块。
SecKeyDecrypt—使用指定的密钥解密数据块。
SecKeyRawSign—使用指定的密钥对数据块进行签名。
SecKeyRawVerify—根据数据块和指定密钥验证签名。
Apple 文档
Encrypting and Hashing Data
您可以在 Apple 文档中找到有关如何使用这些函数的示例 Certificate, Key, and Trust Services Tasks for iOS
import UIKit
import CoreFoundation
为 Security.h
#import <Security/Security.h>
好的,我为您做了一些研究,这就是我得出的结论(基于我在 this related question 中看到的答案)。
There is an open source GitHub project in Swift called Heimdall 这是 Apple 安全框架的一个很好的包装器。 GitHub 页面上的自述文件显示 "Swift 1.2" 但 Xcode 7 和 Swift 2.0 将在任何一天完成,因此希望它会尽快更新。
如果你想跳过使用开源的东西,那么你需要直接调用苹果的安全框架。查找包含这些调用的示例代码:SecKeyEncrypt
和
SecKeyDecrypt
.
这两个调用(以及 SecKey.h 中的所有内容)似乎是 C 函数,但我链接到的 Apple 文档似乎表明可能有 Swift API可用。