VirgilCrypto 7.0.1

VirgilCrypto 7.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 未提供声明
发布上次发布2023年8月

SanjoDeundiakSergey SeroshtanEvgenyOleksandr DeundiakEvgeny 维护。



  • Virgil Security

Virgil Crypto 库 Objective-C/Swift

Build Status CocoaPods Compatible Carthage compatible Platform GitHub license

介绍 | 库目的 | 安装 | 使用示例 | 文档 | 许可证 | 联系

介绍

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