Virgil Crypto 库 Objective-C/Swift
介绍 | 库目的 | 安装 | 使用示例 | 文档 | 许可证 | 联系
介绍
Virgil Crypto 库 Objective-C/Swift 是一个针对各种加密算法的小型、灵活且方便的包装器。它可以用于小型微控制器,也可以用于高负载服务器应用程序。此外,它提供了一组自定义混合算法,这些算法结合不同的加密算法,以简单的方式解决常见的复杂加密问题。这消除了开发人员需要强大的加密技能的要求。
Virgil Security Objective-C/Swift 加密库使用 Swift 包装器 Virgil Security 加密库包装器 在 C 库 Virgil Security 加密库 上。
库目的
- 非对称密钥生成
- 数据和流的加密/解密
- 数字签名的生成/验证
- 双重摇杆算法支持
- 后量子算法支持:Round5(加密)和Falcon(签名)
- 使用 Virgil Core SDK 的加密方法
安装
VirgilCrypto 是一系列框架的集合。这些框架通过 Carthage 和 CocoaPods 分发。
所有框架都支持
- iOS 11.0+
- macOS 10.10+
- tvOS 11.0+
- watchOS 4.0+
COCOAPODS
CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它
$ gem install cocoapods
要使用 CocoaPods 将 VirgilCrypto 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它
target '<Your Target Name>' do
use_frameworks!
pod 'VirgilCrypto', '~> 6.1.0'
end
然后,执行以下命令
$ pod install
Carthage
Carthage 是一个去中心化的依赖管理器,它构建您的依赖并提供二进制框架。
您可以使用 Homebrew 使用以下命令安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 VirgilCrypto 集成到您的 Xcode 项目中,在您的项目根目录下创建一个名为 Cartfile 的空文件,并将其添加到您的 Cartfile
github "VirgilSecurity/virgil-crypto-x" ~> 6.1.0
链接预先构建的二进制文件
要将预构建框架链接到您的应用程序,请运行以下命令
$ carthage update --use-xcframeworks
这将构建每个依赖项或从 GitHub Releases 下载预编译的框架。
为 iOS/tvOS/watchOS 构建项目
在您的应用程序目标的“常规”设置选项卡中,在“链接框架和库”部分,从项目文件夹内的 Carthage/Build 文件夹中添加以下框架
- VirgilCrypto
- VirgilCryptoFoundation
- VSCCommon
- VSCFoundation
每个都检查“嵌入和签名”。
为macOS编译
在您的应用程序目标的“常规”设置选项卡中的“嵌入的二进制文件”部分,从磁盘上的Carthage/Build文件夹中拖放以下框架
- VirgilCrypto
- VirgilCryptoFoundation
- VSCCommon
- VSCFoundation
此外,您还需要为macOS上的调试和崩溃报告复制调试符号。
在应用程序目标的“构建阶段”设置选项卡中,单击加号图标,然后选择“新建文件复制阶段”。点击“目标”下拉菜单并选择“产品目录”。对于每个框架,拖放相应的dSYM文件。
Swift包管理器
Swift包管理器是苹果官方的Swift代码分发管理工具。
苹果官方文档可用于将框架添加到Xcode项目。
使用示例
生成密钥对
使用默认算法(EC_X25519)生成私钥
import VirgilCrypto
let crypto = try! VirgilCrypto()
let keyPair = try! crypto.generateKeyPair()
生成和验证签名
使用私钥生成和签名数据
import VirgilCrypto
let crypto = try! VirgilCrypto()
// prepare a message
let messageToSign = "Hello, Bob!"
let dataToSign = messageToSign.data(using: .utf8)!
// generate a signature
let signature = try! crypto.generateSignature(of: dataToSign, using: senderPrivateKey)
使用公钥验证签名
import VirgilCrypto
let crypto = try! VirgilCrypto()
// verify a signature
let verified = try! crypto.verifySignature(signature, of: dataToSign, with: senderPublicKey)
加密和解密数据
使用公钥加密数据
import VirgilCrypto
let crypto = try! VirgilCrypto()
// prepare a message
let messageToEncrypt = "Hello, Bob!"
let dataToEncrypt = messageToEncrypt.data(using: .utf8)!
// encrypt the message
let encryptedData = try! crypto.encrypt(dataToEncrypt, for: [receiverPublicKey])
使用私钥解密加密数据
import VirgilCrypto
let crypto = try! VirgilCrypto()
// prepare data to be decrypted
let decryptedData = try! crypto.decrypt(encryptedData, with: receiverPrivateKey)
// decrypt the encrypted data using a private key
let decryptedMessage = String(data: decryptedData, encoding: .utf8)!
导入和导出密钥
导出密钥
import VirgilCrypto
// generate a Key Pair
let crypto = VirgilCrypto()
let keyPair = try! crypto.generateKeyPair()
// export a Private key
let privateKeyData = try! crypto.exportPrivateKey(keyPair.privateKey, password: "YOUR_PASSWORD")
let privateKeyStr = privateKeyData.base64EncodedString()
// export a Public key
let publicKeyData = crypto.exportPublicKey(keyPair.publicKey)
let publicKeyStr = publicKeyData.base64EncodedString()
导入密钥
import VirgilCrypto
let crypto = VirgilCrypto()
let privateKeyStr = "MIGhMF0GCSqGSIb3DQEFDTBQMC8GCSqGSIb3DQEFDDAiBBBtfBoM7VfmWPlvyHuGWvMSAgIZ6zAKBggqhkiG9w0CCjAdBglghkgBZQMEASoEECwaKJKWFNn3OMVoUXEcmqcEQMZ+WWkmPqzwzJXGFrgS/+bEbr2DvreVgEUiLKrggmXL9ZKugPKG0VhNY0omnCNXDzkXi5dCFp25RLqbbSYsCyw="
let privateKeyData = Data(base64Encoded: privateKeyStr)!
// import a Private key
let privateKey = try! crypto.importPrivateKey(from: privateKeyData, password: "YOUR_PASSWORD")
//-----------------------------------------------------
let publicKeyStr = "MCowBQYDK2VwAyEA9IVUzsQENtRVzhzraTiEZZy7YLq5LDQOXGQG/q0t0kE="
let publicKeyData = Data(base64Encoded: publicKeyStr)!
// import a Public key
let publicKey = try! crypto.importPublicKey(from: publicKeyData)
文档
许可证
本库根据 3-clause BSD 许可证 发布。
支持
我们的开发者支持团队随时为您服务。
您可以在 Twitter 上找到我们,或通过以下电子邮件与我们联系 [email protected]。
此外,您还可以在我们支持的 Slack 群组中获得更多帮助 Slack。