栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

快速实施HMAC和SHA1加密

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速实施HMAC和SHA1加密

问题解决了!首先,我没有正确使用字符串函数…我最终得到了:

    let hmacResult:String = "myStringToHMAC".hmac(HMACAlgorithm.SHA1, key: "myKey")

然后我忘记了我需要对hmac结果进行base64编码。所以我将问题中链接的字符串函数修改为…

enum HMACAlgorithm {    case MD5, SHA1, SHA224, SHA256, SHA384, SHA512    func toCCHmacAlgorithm() -> CCHmacAlgorithm {        var result: Int = 0        switch self {        case .MD5: result = kCCHmacAlgMD5        case .SHA1: result = kCCHmacAlgSHA1        case .SHA224: result = kCCHmacAlgSHA224        case .SHA256: result = kCCHmacAlgSHA256        case .SHA384: result = kCCHmacAlgSHA384        case .SHA512: result = kCCHmacAlgSHA512        }        return CCHmacAlgorithm(result)    }    func digestLength() -> Int {        var result: CInt = 0        switch self {        case .MD5: result = CC_MD5_DIGEST_LENGTH        case .SHA1: result = CC_SHA1_DIGEST_LENGTH        case .SHA224: result = CC_SHA224_DIGEST_LENGTH        case .SHA256: result = CC_SHA256_DIGEST_LENGTH        case .SHA384: result = CC_SHA384_DIGEST_LENGTH        case .SHA512: result = CC_SHA512_DIGEST_LENGTH        }        return Int(result)    }}extension String {    func hmac(algorithm: HMACAlgorithm, key: String) -> String {        let cKey = key.cStringUsingEncoding(NSUTF8StringEncoding)        let cData = self.cStringUsingEncoding(NSUTF8StringEncoding)        var result = [CUnsignedChar](count: Int(algorithm.digestLength()), repeatedValue: 0)        CCHmac(algorithm.toCCHmacAlgorithm(), cKey!, strlen(cKey!), cData!, strlen(cData!), &result)        var hmacdata:NSData = NSData(bytes: result, length: (Int(algorithm.digestLength())))        var hmacbase64 = hmacData.base64EnpredStringWithOptions(NSDatabase64EncodingOptions.Encoding76CharacterLineLength)        return String(hmacbase64)    }}

这给了我正确的结果

lGCtbW+DNHFraNoxPGK3trgM/98=


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号