
SwCrypt实战教程10个常见加密场景代码示例详解【免费下载链接】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/SwCryptSwCrypt是一个强大的Swift加密库基于iOS和macOS的CommonCrypto框架提供了RSA密钥生成、AES加解密、数字签名等完整加密功能。无论你是iOS开发新手还是经验丰富的开发者掌握SwCrypt都能让你的应用安全级别提升一个档次 1. 快速安装与项目集成使用CocoaPods安装SwCrypt是最简单的方式pod SwCrypt或者使用Swift Package Manager在Xcode中选择 File → Swift Packages → Add Package Dependency...输入仓库地址https://gitcode.com/gh_mirrors/sw/SwCrypt点击 Next → Next → Finish 2. RSA密钥生成与格式转换生成RSA密钥对是加密通信的基础// 生成2048位RSA密钥对 let (privateKey, publicKey) try! CC.RSA.generateKeyPair(2048) // DER格式转PEM格式 let privateKeyPEM try SwKeyConvert.PrivateKey.derToPKCS1PEM(privateKey) let publicKeyPEM SwKeyConvert.PublicKey.derToPKCS8PEM(publicKey) // PEM格式转DER格式 let privateKeyDER SwKeyConvert.PrivateKey.pemToPKCS1DER(privateKeyPEM) let publicKeyDER SwKeyConvert.PublicKey.pemToPKCS1DER(publicKeyPEM) 3. 私钥加密保护保护私钥安全至关重要SwCrypt支持OpenSSL兼容的私钥加密// 加密私钥 let encryptedPrivateKey try SwKeyConvert.PrivateKey.encryptPEM( privateKeyPEM, passphrase: myStrongPassword123, mode: .aes256CBC ) // 解密私钥 let decryptedPrivateKey try SwKeyConvert.PrivateKey.decryptPEM( encryptedPrivateKey, passphrase: myStrongPassword123 ) 4. RSA数据加密与解密使用RSA进行非对称加密保护敏感数据传输let sensitiveData 信用卡号1234-5678-9012-3456.data(using: .utf8)! let tag transaction.data(using: .utf8)! // 使用公钥加密 let encryptedData try CC.RSA.encrypt( sensitiveData, derKey: publicKey, tag: tag, padding: .oaep, digest: .sha1 ) // 使用私钥解密 let decryptedData try CC.RSA.decrypt( encryptedData, derKey: privateKey, tag: tag, padding: .oaep, digest: .sha1 )✍️ 5. 数字签名与验证确保数据完整性和身份验证let message 重要合同内容.data(using: .utf8)! // 使用私钥签名 let signature try CC.RSA.sign( message, derKey: privateKey, padding: .pss, digest: .sha256, saltLen: 16 ) // 使用公钥验证签名 let isValid try CC.RSA.verify( message, derKey: publicKey, padding: .pss, digest: .sha256, saltLen: 16, signedData: signature ) print(签名验证结果\(isValid ? 通过 : 失败)) 6. AES对称加密快速加密大量数据对于需要快速加密大量数据的场景AES是最佳选择let plainText 需要加密的敏感信息.data(using: .utf8)! let aesKey CC.generateRandom(32) // 256位AES密钥 let iv CC.generateRandom(16) // 初始化向量 // AES-CBC模式加密 let encrypted try CC.crypt( .encrypt, blockMode: .cbc, algorithm: .aes, padding: .pkcs7Padding, data: plainText, key: aesKey, iv: iv ) // AES-CBC模式解密 let decrypted try CC.crypt( .decrypt, blockMode: .cbc, algorithm: .aes, padding: .pkcs7Padding, data: encrypted, key: aesKey, iv: iv )️ 7. 带认证的加密AES-GCM/CCM需要同时保证机密性和完整性的高级场景let sensitiveData 用户隐私数据.data(using: .utf8)! let additionalData 元数据.data(using: .utf8)! let aesKey CC.generateRandom(16) // 128位AES密钥 let iv CC.generateRandom(12) // GCM推荐12字节IV // AES-GCM加密带认证标签 let (cipherText, tag) try CC.cryptAuth( .encrypt, blockMode: .gcm, algorithm: .aes, data: sensitiveData, aData: additionalData, key: aesKey, iv: iv, tagLength: 16 ) // AES-GCM解密并验证 let decryptedText try CC.cryptAuth( .decrypt, blockMode: .gcm, algorithm: .aes, data: cipherText, aData: additionalData, key: aesKey, iv: iv, tagLength: 16 ) 8. 安全哈希与HMAC数据完整性校验和消息认证let password myPassword123.data(using: .utf8)! // SHA-256哈希 let sha256Hash CC.digest(password, alg: .sha256) // SHA-512哈希 let sha512Hash CC.digest(password, alg: .sha512) // HMAC-SHA256消息认证码 let hmacKey CC.generateRandom(32) let hmac CC.HMAC(password, alg: .sha256, key: hmacKey) print(SHA-256哈希值\(sha256Hash.hexEncodedString())) print(HMAC值\(hmac.hexEncodedString())) 9. 密钥派生与存储安全地派生密钥并存储到iOS Keychainlet password userPassword.data(using: .utf8)! let salt CC.generateRandom(32) // PBKDF2密钥派生 let derivedKey CC.KeyDerivation.PBKDF2( password, salt: salt, prf: .sha256, rounds: 100000 ) // 存储私钥到Keychain try SwKeyStore.upsertKey( privateKeyPEM, keyTag: com.myapp.privateKey, options: [kSecAttrAccessible: kSecAttrAccessibleWhenUnlockedThisDeviceOnly] ) // 从Keychain读取私钥 let storedKey try SwKeyStore.getKey(com.myapp.privateKey) // 删除Keychain中的密钥 try SwKeyStore.delKey(com.myapp.privateKey) 10. 椭圆曲线加密与密钥交换现代加密算法的代表性能更优// 生成椭圆曲线密钥对 let (ecPrivateKey, ecPublicKey) try CC.EC.generateKeyPair(256) // 计算共享密钥Diffie-Hellman密钥交换 let partnerPublicKey ... // 对方的公钥 let sharedSecret try CC.EC.computeSharedSecret(ecPrivateKey, publicKey: partnerPublicKey) // 数字签名 let messageHash CC.digest(重要消息.data(using: .utf8)!, alg: .sha256) let signature try CC.EC.signHash(ecPrivateKey, hash: messageHash) // 验证签名 let verified try CC.EC.verifyHash(ecPublicKey, hash: messageHash, signedData: signature) 最佳实践与注意事项检查功能可用性在使用前检查系统是否支持相关加密功能// 检查所有加密功能是否可用 if CC.available() { print(所有加密功能可用) } // 或检查特定功能 let rsaAvailable CC.RSA.available() let aesAvailable CC.cryptorAvailable let hmacAvailable CC.hmacAvailable()错误处理最佳实践do { let encrypted try CC.RSA.encrypt(data, derKey: publicKey, tag: tag, padding: .oaep, digest: .sha1) // 处理加密成功 } catch CC.CCError.paramError { print(参数错误请检查密钥和输入数据) } catch CC.CCError.invalidKey { print(无效密钥请使用正确的密钥格式) } catch { print(加密失败\(error)) }性能优化建议对称加密对于大量数据使用AES而不是RSA密钥长度RSA使用2048位以上AES使用256位内存管理及时清除敏感数据的内存线程安全加密操作是线程安全的但密钥管理需要注意 总结SwCrypt为Swift开发者提供了完整的加密解决方案涵盖了从基础的哈希计算到高级的椭圆曲线加密。通过这10个实战示例你可以快速掌握✅ RSA密钥生成与格式转换✅ 数据加密与解密✅ 数字签名与验证✅ AES对称加密✅ 密钥安全存储✅ 椭圆曲线加密无论你是构建金融应用、安全通讯工具还是需要保护用户隐私的普通应用SwCrypt都能提供企业级的安全保障。立即开始使用SwCrypt让你的应用安全无忧核心文件路径参考主加密实现文件SwCrypt/SwCrypt.swift密钥转换工具SwCrypt/SwCrypt.swift#L86密钥存储管理SwCrypt/SwCrypt.swift#L3【免费下载链接】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),仅供参考