一、Swift3.0系统提供的base64加密方法(可逆)
extensionString{/**
* Base64 加密
* return 加密字符串
*/func encodeToBase64() ->String{ guardletdata = self.data(using:String.Encoding.utf8)else{ print("加密失败");return""}returndata.base64EncodedString(options: Data.Base64EncodingOptions(rawValue:0))//系统提供的方法,iOS7之后可用}/**
* Base64 解密
* return 解密字符串
*/func decodeBase64() ->String{ guardletdata = Data(base64Encoded: self,options: Data.Base64DecodingOptions(rawValue:0))else{ print("解密失败");return""}returnString(data: data,encoding:String.Encoding.utf8)! }}letbase64Str ="明哥"// 打印 "明哥"letencodeStr = base64Str.encodeToBase64()// 打印 "5piO5ZOl"letdecodeStr = encodeStr.decodeBase64()// 打印 "明哥"
打印截图
二、HMAC_SHA1/MD5/SHA1/SHA224… (不可逆)
// MARK: - 加密 HMAC_SHA1/MD5/SHA1/SHA224… /** 需在桥接文件导入头文件 ,因为C语言的库
-
#import <CommonCrypto/CommonDigest.h>
-
#import <CommonCrypto/CommonHMAC.h>
/enum CryptoAlgorithm {// 2,SHA(安全散列算法:Secure Hash Algorithm) // 不可逆/// 加密的枚举选项 HMACcaseMD5, SHA1, SHA224, SHA256, SHA384, SHA512varHMACAlgorithm: CCHmacAlgorithm {varresult: Int =0switchself {case.MD5: result = kCCHmacAlgMD5case.SHA1: result = kCCHmacAlgSHA1case.SHA224: result = kCCHmacAlgSHA224case.SHA256: result = kCCHmacAlgSHA256case.SHA384: result = kCCHmacAlgSHA384case.SHA512: result = kCCHmacAlgSHA512 }returnCCHmacAlgorithm(result) }vardigestLength: Int {varresult: Int32 =0switchself {case.MD5: result = CC_MD5_DIGEST_LENGTHcase.SHA1: result = CC_SHA1_DIGEST_LENGTHcase.SHA224: result = CC_SHA224_DIGEST_LENGTHcase.SHA256: result = CC_SHA256_DIGEST_LENGTHcase.SHA384: result = CC_SHA384_DIGEST_LENGTHcase.SHA512: result = CC_SHA512_DIGEST_LENGTH }returnInt(result) }}extensionString{/*
func: 加密方法
- parameter algorithm: 加密方式;
- parameter key: 加密的key
*/func hmac(algorithm: CryptoAlgorithm,key:String) ->String{letstr = self.cString(using:String.Encoding.utf8)letstrLen = Int(self.lengthOfBytes(using:String.Encoding.utf8))letdigestLen = algorithm.digestLengthletresult = UnsafeMutablePointer.allocate(capacity: digestLen)letkeyStr = key.cString(using:String.Encoding.utf8)letkeyLen = Int(key.lengthOfBytes(using:String.Encoding.utf8))// CCHmac是系统内部方法CCHmac(algorithm.HMACAlgorithm, keyStr!, keyLen, str!, strLen, result)letdigest = stringFromResult(result: result,leng