博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS/swift之加密
阅读量:4290 次
发布时间:2019-05-27

本文共 4839 字,大约阅读时间需要 16 分钟。

参考:

/**  需在桥接文件导入头文件 ,因为C语言的库 #import 
#import
#import
字符串常用加密:MD5,sha1,base64 使用: let str = "welcome to hangge.com" let key = "67FG" // HMAC let hmacStr = str.hmac(algorithm: .SHA1, key: key) print("原始字符串:\(str)") print("key:\(key)") print("HMAC运算结果:\(hmacStr)") // SHA224 let SHA224 = str.hmac(algorithm: .SHA224, key: key) print("原始字符串:\(str)") print("key:\(key)") print("SHA224运算结果:\(SHA224)") // md5 let str1 = "欢迎来到zhuhai" let key2 = "你好" let md5 = str1.hmac(algorithm: .MD5, key: key2) print("原始字符串:\(str1)") print("key:\(key2)") print("md5运算结果:\(md5)") // 普通md5 let md55 = str1.md5 print("md55 = \(md55)") // 普通md5测试 print("md测试 = \("lacar我是牛人才怪lacar".md5)") print("md用户测试 = \("用户名".md5)") print("md我们测试 = \("我们".md5)") print("md123测试 = \("123".md5)") print("mdming测试 = \("ming".md5)") print("md你好测试 = \("你好".md5)") print("mdlacar测试 = \("lacar".md5)") base64的使用: let base64Str = "让天方夜谭天" let encodeStr = base64Str.encodeToBase64() let decodeStr = encodeStr.decodeBase64() */import UIKitimport Foundationenum CryptoAlgorithm { case MD5, SHA1, SHA224, SHA256, SHA384, SHA512 var HMACAlgorithm: 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) } var digestLength: Int { var result: Int32 = 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) }}class LYBJiamiExtention: NSObject { }extension String { var md5: String! { let str = self.cString(using: String.Encoding.utf8) let strLen = CC_LONG(self.lengthOfBytes(using: String.Encoding.utf8)) let digestLen = Int(CC_MD5_DIGEST_LENGTH) let result = UnsafeMutablePointer
.allocate(capacity: digestLen) CC_MD5(str!, strLen, result) return stringFromBytes(bytes: result, length: digestLen) } var sha1: String! { let str = self.cString(using: String.Encoding.utf8) let strLen = CC_LONG(self.lengthOfBytes(using: String.Encoding.utf8)) let digestLen = Int(CC_SHA1_DIGEST_LENGTH) let result = UnsafeMutablePointer
.allocate(capacity: digestLen) CC_SHA1(str!, strLen, result) return stringFromBytes(bytes: result, length: digestLen) } var sha256String: String! { let str = self.cString(using: String.Encoding.utf8) let strLen = CC_LONG(self.lengthOfBytes(using: String.Encoding.utf8)) let digestLen = Int(CC_SHA256_DIGEST_LENGTH) let result = UnsafeMutablePointer
.allocate(capacity: digestLen) CC_SHA256(str!, strLen, result) return stringFromBytes(bytes: result, length: digestLen) } var sha512String: String! { let str = self.cString(using: String.Encoding.utf8) let strLen = CC_LONG(self.lengthOfBytes(using: String.Encoding.utf8)) let digestLen = Int(CC_SHA512_DIGEST_LENGTH) let result = UnsafeMutablePointer
.allocate(capacity: digestLen) CC_SHA512(str!, strLen, result) return stringFromBytes(bytes: result, length: digestLen) } func stringFromBytes(bytes: UnsafeMutablePointer
, length: Int) -> String{ let hash = NSMutableString() for i in 0..
String { let str = self.cString(using: String.Encoding.utf8) let strLen = Int(self.lengthOfBytes(using: String.Encoding.utf8)) let digestLen = algorithm.digestLength let result = UnsafeMutablePointer
.allocate(capacity: digestLen) let keyStr = key.cString(using: String.Encoding.utf8) let keyLen = Int(key.lengthOfBytes(using: String.Encoding.utf8)) CCHmac(algorithm.HMACAlgorithm, keyStr!, keyLen, str!, strLen, result) let digest = stringFromResult(result: result, length: digestLen) result.deallocate() return digest } private func stringFromResult(result: UnsafeMutablePointer
, length: Int) -> String { let hash = NSMutableString() for i in 0..
String { guard let data = self.data(using: String.Encoding.utf8) else { print("加密失败"); return "" } return data.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0)) //系统提供的方法,iOS7之后可用 } /** * Base64 解密 * return 解密字符串 */ func decodeBase64() -> String { guard let data = Data(base64Encoded: self, options: Data.Base64DecodingOptions(rawValue: 0)) else { print("解密失败"); return "" } return String(data: data, encoding: String.Encoding.utf8)! } }

 

转载地址:http://llmgi.baihongyu.com/

你可能感兴趣的文章
JAVA泛型中的有界类型(extends super)
查看>>
炫酷进度条:Android 仿应用宝下载进度条
查看>>
Java程序内存的简单分析
查看>>
Javascript单例模式概念与实例
查看>>
SQL NULL 函数
查看>>
多例设计模式
查看>>
WebView的JavaScript与本地代码三种交互方式
查看>>
WebView的JavaScript与本地代码三种交互方式
查看>>
Android Studio里面配置Tesseract
查看>>
深入浅出JavaScript之this
查看>>
Android include标签的使用注意事项
查看>>
final成员变量和final局部变量
查看>>
Android数据加密之异或加密算法
查看>>
greenDao好的示例网址
查看>>
SDK无埋点技术在百分点的探索和实践
查看>>
Android自定义控件--仿安全卫士中的一键加速
查看>>
微信小程序快速入门
查看>>
Android EditText被软键盘遮盖处理
查看>>
JavaScript 中变量、作用域和内存问题的学习
查看>>
Android Tools Attributes,让布局设计所见即所得
查看>>