12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import UIKit
- private let key = "i29g8au38U3dI8dj"
- private let iv = "a2k49g8wJ3F3kf9k"
- 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)
-
- 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())!
- }
- }
|