iOS Swift中用Hash库实现SHA1转Base64编码(不支持CryptoKit)
解决方案
直接借助Hash Pod返回的哈希数据,结合Foundation原生的Base64编码能力即可实现,无需依赖CryptoKit,适配低部署版本的代码实现如下:
import Hash import Foundation // 生成SHA1哈希结果 let hashResult = Hash(message: "message", algorithm: .sha1) // 提取哈希对应的二进制数据 guard let hashData = hashResult.data else { // 这里根据业务需求处理哈希生成失败的场景,比如返回默认值或抛出错误 fatalError("SHA1 hash generation failed") } // 将二进制哈希数据转为标准Base64编码字符串 let base64Token = hashData.base64EncodedString(options: []) // 若需URL安全的Base64编码(可选),可手动替换特殊字符 let urlSafeBase64Token = base64Token .replacingOccurrences(of: "+", with: "-") .replacingOccurrences(of: "/", with: "_") .trimmingCharacters(in: CharacterSet(charactersIn: "="))
关键说明
- Hash Pod的
HashResult类型自带data属性,存储了哈希的原始二进制数据,这是转换的核心载体 base64EncodedString(options:)是Foundation框架的原生方法,最低支持iOS 2.0、macOS 10.4,完全满足低版本部署要求- 标准Base64中的
+、/字符在URL场景可能存在问题,若需URL安全格式,可通过字符替换实现
内容的提问来源于stack exchange,提问作者Karatekid430
相关产品推荐
相关产品推荐

