如何快速上手SwCrypt:iOS/macOS加密库的5分钟入门指南
【免费下载链接】SwCryptRSA public/private key generation, RSA, AES encryption/decryption, RSA sign/verify in Swift with CommonCrypto in iOS and OS X项目地址: https://gitcode.com/gh_mirrors/sw/SwCrypt
SwCrypt是一款专为iOS和macOS平台设计的Swift加密库,基于CommonCrypto框架实现了RSA密钥生成、加解密以及签名验证等核心功能。本文将通过简单易懂的步骤,帮助开发者在5分钟内快速掌握SwCrypt的基础用法,轻松为应用添加安全加密能力。
📦 1. 快速安装SwCrypt
使用CocoaPods安装(推荐)
在Podfile中添加以下依赖,执行pod install即可完成安装:
pod 'SwCrypt'手动集成源码
直接将项目中的核心文件添加到工程:
- SwCrypt.h
- SwCrypt.swift
🔑 2. RSA密钥对生成
RSA加密需要首先生成公私钥对,SwCrypt提供了简洁的API:
import SwCrypt // 生成2048位RSA密钥对 do { let (privateKey, publicKey) = try SwKeyConvert.PrivateKey.generateKeyPair(2048) print("私钥: \(privateKey.hexadecimalString())") print("公钥: \(publicKey.hexadecimalString())") } catch { print("密钥生成失败: \(error.localizedDescription)") }🔒 安全提示:生产环境建议使用4096位密钥长度,示例使用2048位仅为演示速度
🔐 3. 数据加密与解密
RSA加密(公钥加密)
// 待加密数据 let plainText = "Hello SwCrypt!".data(using: .utf8)! // 使用公钥加密 do { let encryptedData = try SwCrypt.RSA.encrypt( plainText, derKey: publicKey, tag: Data(), padding: .pkcs1, digest: .sha256 ) print("加密结果: \(encryptedData.hexadecimalString())") } catch { print("加密失败: \(error)") }RSA解密(私钥解密)
// 使用私钥解密 do { let (decryptedData, _) = try SwCrypt.RSA.decrypt( encryptedData, derKey: privateKey, tag: Data(), padding: .pkcs1, digest: .sha256 ) let decryptedText = String(data: decryptedData, encoding: .utf8)! print("解密结果: \(decryptedText)") // 输出: Hello SwCrypt! } catch { print("解密失败: \(error)") }✍️ 4. 数字签名与验证
生成签名(私钥签名)
// 待签名数据 let message = "需要签名的数据".data(using: .utf8)! // 使用私钥生成签名 do { let signature = try SwCrypt.RSA.sign( message, derKey: privateKey, padding: .pkcs15, digest: .sha256, saltLen: 0 ) print("签名结果: \(signature.hexadecimalString())") } catch { print("签名失败: \(error)") }验证签名(公钥验证)
// 使用公钥验证签名 do { let isValid = try SwCrypt.RSA.verify( message, derKey: publicKey, padding: .pkcs15, digest: .sha256, saltLen: 0, signedData: signature ) print("签名验证结果: \(isValid ? "有效" : "无效")") } catch { print("验证失败: \(error)") }📝 5. 密钥格式转换
SwCrypt支持多种密钥格式转换,满足不同场景需求:
PEM格式转DER格式
// PEM私钥转DER格式 let pemPrivateKey = "-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----" do { let derKey = try SwKeyConvert.PrivateKey.pemToPKCS1DER(pemPrivateKey) print("DER格式密钥长度: \(derKey.count) bytes") } catch { print("格式转换失败: \(error)") }DER格式转PEM格式
// DER私钥转PEM格式 let pemKey = SwKeyConvert.PrivateKey.derToPKCS1PEM(derKey) print("PEM格式密钥:\n\(pemKey)")🚀 6. 实际应用场景
安全存储密钥
使用SwKeyStore将密钥安全存储在钥匙串中:
// 存储密钥到钥匙串 try SwKeyStore.upsertKey(privateKey, keyTag: "com.example.app.privatekey") // 从钥匙串获取密钥 let storedKey = try SwKeyStore.getKey("com.example.app.privatekey")AES加密辅助
除RSA外,SwCrypt也支持AES加密:
// 生成AES密钥 let aesKey = SwCrypt.CC.generateRandom(32) // 256位密钥 let iv = SwCrypt.CC.generateRandom(16) // 16字节IV // AES-CBC加密 let cipherText = try SwCrypt.CC.crypt( .encrypt, blockMode: .cbc, algorithm: .aes, padding: .pkcs7Padding, data: plainText, key: aesKey, iv: iv )📚 常用API速查表
| 功能 | 核心类/方法 |
|---|---|
| RSA密钥生成 | SwKeyConvert.PrivateKey.generateKeyPair() |
| 数据加密 | SwCrypt.RSA.encrypt() |
| 数据解密 | SwCrypt.RSA.decrypt() |
| 签名生成 | SwCrypt.RSA.sign() |
| 签名验证 | SwCrypt.RSA.verify() |
| 密钥存储 | SwKeyStore.upsertKey() |
| 随机数生成 | SwCrypt.CC.generateRandom() |
🔍 故障排除小贴士
- 密钥格式错误:确保使用正确的密钥格式(PEM/DER),可通过
SwKeyConvert工具类进行转换 - 加密数据过长:RSA加密有长度限制,大文件建议使用AES加密后用RSA加密AES密钥
- 钥匙串访问问题:iOS应用需开启钥匙串访问权限,在 entitlements 中配置
通过以上步骤,您已经掌握了SwCrypt的核心功能。如需深入学习,可查看项目中的测试用例,其中包含更多详细用法示例。
⚠️ 安全警告:加密实现需遵循最佳实践,建议在生产环境中进行安全审计,确保符合数据保护标准。
【免费下载链接】SwCryptRSA public/private key generation, RSA, AES encryption/decryption, RSA sign/verify in Swift with CommonCrypto in iOS and OS X项目地址: https://gitcode.com/gh_mirrors/sw/SwCrypt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考