CRDCrypt
这是一个简单的直接基于 Swift 扩展,为 Data 提供了 AES 256 位加密/解密功能,支持 iOS、macOS、watchOS 和 tvOS。
概述
我需要一个简单的加密/解密字符串和其他小数据的AES 256位加密方法,并使用可选的初始化向量来增加加密模式的随机性。结果是这个小代码库,它扩展了 Swift 类 Data
,提供了加密和解密方法,以及生成一个唯一的初始化向量,可以用于加密和解密调用中。
需求
- iOS 9.0+ / macOS 10.12+ / watchOS 3.0+ / tvOS 9.0+
- Xcode 10.2+
- Swift 5.0+
安装
您只需将以下文件从 GitHub 树复制到您的项目中:
-
Data+MyExtensions.swift
- 基于 Swift 的扩展,为内置的
Data
类提供加密/解密和生成初始化向量的功能。
- 基于 Swift 的扩展,为内置的
-
NSData+MyExtensions.m + .h
- 这是Objective C编写的一个加密/解密客户端过程,这些过程被Swift的
Data
类扩展所调用。
- 这是Objective C编写的一个加密/解密客户端过程,这些过程被Swift的
CocoaPods
或者,您可以将其作为Cocoapod进行安装
CocoaPods是Cocoa项目的依赖管理器。您可以使用以下命令进行安装
$ gem install cocoapods
构建CRDCrypt需要CocoaPods 1.7.0+
要使用CocoaPods将CRDKeychain集成到您的Xcode项目中,在您的Podfile
中指定它
target 'MyApp' do
use_frameworks!
# Pods for MyApp
pod 'CRDCrypt'
end
然后,运行以下命令
$ pod install
用法
该库易于使用。只需导入CRDCrypt并生成一个初始化向量
let iv = Data.generateInitializationVector()
然后,我们可以在加密调用中使用这个初始化向量来加密一些字符串数据,并使加密结果更具不可预测性,例如
let myStringToEncrypt = "This is the string I want to encrypt with the library."
let myPrivateKey = "This is my master key"
var encryptedData: Data? = nil
var myStringDecrypted: String? = nil
do {
encryptedData = try myStringToEncrypt.data(using: .utf8)?.aes256Encrypt(withKey: myPrivateKey, initializationVector: iv)
} catch let error as NSError {
print("\(error)")
}
解密时,我们使用与加密相同的初始化向量以及我们的密钥
if let encryptedData = encryptedData {
do {
myStringDecrypted = String(bytes: try encryptedData.aes256Decrypt(withKey: myPrivateKey, initializationVector: iv), encoding: .utf8)
} catch let error as NSError {
print("\(error)")
}
}
print("Unencrypted: \(myStringDecrypted)")
结论
希望这个小库/框架能够帮助您在下一个Swift项目中。我会根据时间和心情进行更新,当然我也欢迎您的所有反馈。
许可证
CRDCrypt遵循Apache 2.0许可证发布。有关详细信息,请参阅LICENSE。