swift aes 加密
2015-07-29 16:42
393 查看
1、需要引入 libSystem.dylib
2、添加NSData 类扩展,代码如下
3、swift中指针的使用
c/c++中指针对应swift中的UnsafePointer & UnsafeMutablePointer
UnsafePointer 类型指向的内容不可变;UnsafeMutablePointer 类型指向的内容可以修改
swift中不可以对变量使用取地址操作
2、添加NSData 类扩展,代码如下
extension NSData{ func AES128Crypt(operation:CCOperation,keyData:NSData)->NSData?{ let keyBytes = keyData.bytes let keyLength = Int(kCCKeySizeAES256) let dataLength = self.length let dataBytes = self.bytes let cryptLength = Int(dataLength+kCCBlockSizeAES128) var cryptPointer = UnsafeMutablePointer<UInt8>.alloc(cryptLength) let algoritm: CCAlgorithm = CCAlgorithm(kCCAlgorithmAES128) let option: CCOptions = CCOptions(kCCOptionECBMode + kCCOptionPKCS7Padding) var numBytesEncrypted = UnsafeMutablePointer<Int>.alloc(1) numBytesEncrypted.initialize(0) var cryptStatus = CCCrypt(operation, algoritm, option, keyBytes, keyLength, nil, dataBytes, dataLength, cryptPointer, cryptLength, numBytesEncrypted) if CCStatus(cryptStatus) == CCStatus(kCCSuccess) { let len = Int(numBytesEncrypted.memory) var data:NSData = NSData(bytesNoCopy: cryptPointer, length: len) numBytesEncrypted.dealloc(1) return data } else { numBytesEncrypted.dealloc(1) cryptPointer.dealloc(cryptLength) return nil } } static func test(){ let keyString = "12345678901234567890123456789012" let keyData: NSData! = (keyString as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData! let message = "Don´t try to read this text. Top Secret Stuff" let data: NSData! = (message as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData! let result:NSData? = data.AES128Crypt(CCOperation(kCCEncrypt), keyData: keyData) println("encrypt = \(result)") let oldData = result?.AES128Crypt(CCOperation(kCCDecrypt), keyData: keyData) println("decrypt = \(oldData)") } }
3、swift中指针的使用
c/c++中指针对应swift中的UnsafePointer & UnsafeMutablePointer
UnsafePointer 类型指向的内容不可变;UnsafeMutablePointer 类型指向的内容可以修改
swift中不可以对变量使用取地址操作
相关文章推荐
- 开源 Swift AutoLayout 框架 SnapKit 介绍
- swift教程中文手册
- swift UItableView和自定义uitableViewCell
- Network(NSURLSession) - iOS 8 Swift Programming cookBook 读书笔记
- Swift开发教程--如何对字符串进行md5加密
- swift之函数式编程(二)
- 一些Swift小知识点的整理
- SwiftCommon之Camera相机
- SwiftCommon之Image
- SwiftCommon之Message弹窗
- SwiftCommon之Location位置
- SwiftCommon之String字符串
- SwiftCommon之Path路径
- SwiftCommon之Dictionary字典
- SwiftCommon之Device设备信息
- SwiftCommon之日期Date
- SwiftCommon之Cookie处理
- Swift:subscript
- OC和swift互相调用。
- swift 之函数式编程(一)