用Swift 进行AES 加密、解密
来源:互联网 发布:快乐十分分析软件 编辑:程序博客网 时间:2024/06/10 05:13
最近在公司在用Swift 翻 oc 的项目,由于原来的加密方式都是用OC写的,现在要Swift
发篇文章,大家以后进行加密的时候,希望可以方便一些,不用再这么费劲
1.导入第三方库CryptoSwift
import CryptoSwift
CryptoSwift源码地址
算了,话不多说,直接上代码
public static func Endcode_AES_ECB(strToEncode:String)->String { // 从String 转成data let data = strToEncode.data(using: String.Encoding.utf8) // byte 数组 var encrypted: [UInt8] = [] do { encrypted = try AES(key: key, iv: iv, blockMode: .CBC, padding: PKCS7()).encrypt(data!.bytes) } catch AES.Error.dataPaddingRequired { // block size exceeded } catch { // some error } let encoded = NSData.init(bytes: encrypted, length: encrypted.count) //加密结果要用Base64转码 return encoded.base64EncodedString(options: NSData.Base64EncodingOptions.lineLength64Characters) }// MARK: AES-ECB128解密 public static func Decode_AES_ECB(strToDecode:String)->String { //decode base64 let data = NSData(base64Encoded: strToDecode, options: NSData.Base64DecodingOptions.init(rawValue: 0)) // byte 数组 var encrypted: [UInt8] = [] // 把data 转成byte数组 for i in 0..<16 { var temp:UInt8 = 0 data?.getBytes(&temp, range: NSRange(location: i,length:1 )) encrypted.append(temp) } // decode AES var decrypted: [UInt8] = [] do { decrypted = try AES(key: key, iv: iv, blockMode:.CBC, padding: PKCS7()).decrypt(encrypted) } catch AES.Error.dataPaddingRequired { // block size exceeded } catch { // some error } // byte 转换成NSData let encoded = NSData.init(bytes: decrypted, length: decrypted.count) var str = "" //解密结果从data转成string str = String(data: encoded as Data, encoding: String.Encoding.utf8)! return str }
DEMO地址
后续还会更新其他加密方式 ,以及原生加密等等,大家如果写了其他的加密,可以@我一下,一起学习
阅读全文
0 0
- 用Swift 进行AES 加密、解密
- Swift-AES之加密解密
- javascript进行aes加密、解密
- 使用Python进行AES加密和解密
- 使用java进行 AES 加密 解密
- AES加解密方式进行加密和解密
- 使用对称加密aes对文件进行zip加密解密
- 用AES来加密和解密文件
- 加密解密。(aes, java)
- AES加密解密类
- AES 加密/解密备忘
- java,AES加密,解密
- AES 加密解密 c#
- AES加密解密程序。
- AES加密和解密
- java AES加密解密
- java AES加密解密
- AES加密解密 应用
- 五、pandas系列---pandas库的数据类型运算
- Mysql 第一天
- Python3之多线程GIL、同步锁、信号量、死锁与递归锁、线程Queue、Event、定时器
- 2017.8.27 魔法王国
- webpack--概念7--模块解析
- 用Swift 进行AES 加密、解密
- Python中==和is的区别
- 递归问题
- HBase扫描操作Scan
- C++中vector用法详解
- 编译python时使用定制的sqlite动态库
- tensorflow实战一(分类交通标志)
- java随手笔记(二)
- 2 编写控制器