为 Swift 2、3、4 和 5 的 AES256CBC 加密
最方便和轻量级的 Swift 3、4 和 5 的 AES256 加密框架,甚至 在 Linux 上也能工作。对于 Swift 2,请使用标签 0.1.1。
独特功能集
- 纯 Swift 2、3、4 和 5 源代码中的 单个文件
- 原生 在 iOS、macOS、tvOS、watchOS 和 Linux 上运行
- 无额外依赖或头文件
- 加密/解密字符串的最大 便利性
- 内置生成兼容 32 个字符密码
- 自动字符串填充
- 自动处理和嵌入 随机初始化向量
请 关注 SwiftyBeaver 在 Twitter 上 以了解最新版本的更新。
要求
- iOS 8.0+、macOS X 10.9+、tvOS 9+、watchOS 2+、Linux、Docker
- Xcode 7+
安装
通过Carthage
您可以使用 Carthage 安装AES256CBC,只需将其添加到您的Cartfile文件中。
github "SwiftyBeaver/AES256CBC"
通过CocoaPods
要使用 CocoaPods,只需将其添加到您的Podfile文件中。
pod 'AES256CBC'
通过Swift Package Manager
要使用AES256CBC作为 Swift Package Manager 包,只需将以下内容添加到您的Package.swift文件的依赖关系中。
.Package(url: "https://github.com/SwiftyBeaver/AES256CBC.git")
或下载
- 从这里下载最新版本的zip文件。
- 将
/sources
文件夹拖放到您的项目中(确保已选中“如有需要则复制项目”) - 如果您愿意,可以将“sources”组重命名为“AES256CBC”
注意:如果以这种方式安装,则不需要使用import AES256CBC
。
使用方法
以下示例使用随机生成的32字符密码加密和解密字符串。在实际应用中,您应使用自己的32字符密码。
import AES256CBC
let str = "My little secret"
let password = AES256CBC.generatePassword() // returns random 32 char string
// get AES-256 CBC encrypted string
let encrypted = AES256CBC.encryptString(str, password: password)
// decrypt AES-256 CBC encrypted string
let decrypted = AES256CBC.decryptString(encrypted!, password: password)
在Ubuntu上使用Docker运行
我们test_in_docker.sh
脚本,它将创建一个临时Docker容器并在其中运行测试。
常见问题解答
为什么我得到的结果是nil?
如果出现任何错误,很可能是由于密码不是32个字符长,此时encryptString()
和decryptString()
会返回nil。
关于初始向量呢?
你不需要担心需要使用以使AES-256更加安全的重要初始向量。AES256CBC会自动为你生成一个随机的初始向量并将其添加到加密字符串的开始处。在解密过程中,AES256CBC会读取加密字符串的前16个字符并将它们作为初始向量,用于解密剩余的加密字符串。
它在哪里使用?
该框架被用于SwiftyBeaver的多个项目中,并与来自CryptoSwift的Marcin Krzyżanowski合作开发。
联系 & 贡献
如果您有任何问题,请通过专门的 SwiftyBeaver Twitter 账号联系 Sebastian。功能请求或错误报告最好以 Github Issue 的形式报告和讨论。
请提交您出色的成果,特别是错误修复和安全漏洞!每个新的错误修复、功能请求或新增/修改都应作为一个 专门的开源请求 提交,以简化讨论和合并。
感谢您进行测试、分享和贡献!
协议
AES256CBC 在 MIT 协议 下发布。核心加密逻辑是一个根据 Marcin Krzyżanowski 编写的 CryptoSwift 修改版,请阅读并尊重他的许可协议,该协议可在文件中间找到 AES256CBC.swift。