• swift aes 加密


    1、需要引入 libSystem.dylib

    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中不可以对变量使用取地址操作 
  • 相关阅读:
    php中的多态
    面向对象的继承与组合
    PHP中的__call和__callStatic方法
    PHP中的__set和__get方法
    PHP中对象的本质
    mysql字符串查找(统计客源)
    linux查看文件大小
    mysql常用字符串操作函数大全,以及实例
    mysql滑动订单问题
    mysql列反转Pivoting
  • 原文地址:https://www.cnblogs.com/shuleihen/p/4686343.html
Copyright © 2020-2023  润新知