No Description

AES.swift 2.5KB

    // // AES.swift // PaiAi // // Created by LISA on 2017/6/1. // Copyright © 2017年 yb. All rights reserved. // import UIKit private let key = "i29g8au38U3dI8dj" private let iv = "a2k49g8wJ3F3kf9k" // MARK: AES extension Data { fileprivate func AES(operation: CCOperation, key: String, iv: String) -> Data? { var digest_length = Swift.max(self.count * 2, 16) var digest = [UInt8](repeating: 0, count: digest_length) //AES encrypt let status = CCCrypt(operation, CCAlgorithm(kCCAlgorithmAES128), CCOptions(kCCOptionPKCS7Padding), key.bytes, key.lengthOfBytes(using: .utf8), iv.bytes, self.arrayOfBytes(), self.arrayOfBytes().count, &digest, digest.count, &digest_length) if status == CCCryptorStatus(kCCSuccess) { return Data(bytes: digest, count: digest_length) } return nil } func AES128EncryptToData() -> Data { return self.AES(operation: CCOperation(kCCEncrypt), key: key, iv: iv)! } func AES128EncryptToBase64Data() -> Data { return self.AES128EncryptToData().base64EncodedData() } func AES128EncryptToBase64String() -> String { return self.AES128EncryptToData().base64EncodedString() } func AES128DecryptFromBase64DataToData() -> Data { return Data(base64Encoded: self)!.AES128DecryptToData() } func AES128DecryptFromBase64DataToString() -> String { return Data(base64Encoded: self)!.AES128DecryptToString() } func AES128DecryptToData() -> Data { return self.AES(operation: CCOperation(kCCDecrypt), key: key, iv: iv)! } func AES128DecryptToString() -> String { return String.init(data: self.AES128DecryptToData(), encoding: String.Encoding.utf8) ?? "" } } extension String { func AES128EncryptToData() -> Data { return self.myData.AES128EncryptToData() } func AES128EncryptToBase64Data() -> Data { return self.myData.AES128EncryptToBase64Data() } func AES128EncryptToBase64String() -> String { return self.myData.AES128EncryptToBase64String() } func AES128DecryptFromBase64StringToData() -> Data { return (Data(base64Encoded: self)?.AES128DecryptToData())! } func AES128DecryptFromBase64StringToString() -> String { return (Data(base64Encoded: self)?.AES128DecryptToString())! } }