No Description

AES.swift 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // AES.swift
  3. // PaiAi
  4. //
  5. // Created by LISA on 2017/6/1.
  6. // Copyright © 2017年 yb. All rights reserved.
  7. //
  8. import UIKit
  9. private let key = "i29g8au38U3dI8dj"
  10. private let iv = "a2k49g8wJ3F3kf9k"
  11. // MARK: AES
  12. extension Data {
  13. fileprivate func AES(operation: CCOperation, key: String, iv: String) -> Data? {
  14. var digest_length = Swift.max(self.count * 2, 16)
  15. var digest = [UInt8](repeating: 0, count: digest_length)
  16. //AES encrypt
  17. let status = CCCrypt(operation, CCAlgorithm(kCCAlgorithmAES128),
  18. CCOptions(kCCOptionPKCS7Padding),
  19. key.bytes, key.lengthOfBytes(using: .utf8),
  20. iv.bytes,
  21. self.arrayOfBytes(), self.arrayOfBytes().count,
  22. &digest, digest.count, &digest_length)
  23. if status == CCCryptorStatus(kCCSuccess) {
  24. return Data(bytes: digest, count: digest_length)
  25. }
  26. return nil
  27. }
  28. func AES128EncryptToData() -> Data {
  29. return self.AES(operation: CCOperation(kCCEncrypt), key: key, iv: iv)!
  30. }
  31. func AES128EncryptToBase64Data() -> Data {
  32. return self.AES128EncryptToData().base64EncodedData()
  33. }
  34. func AES128EncryptToBase64String() -> String {
  35. return self.AES128EncryptToData().base64EncodedString()
  36. }
  37. func AES128DecryptFromBase64DataToData() -> Data {
  38. return Data(base64Encoded: self)!.AES128DecryptToData()
  39. }
  40. func AES128DecryptFromBase64DataToString() -> String {
  41. return Data(base64Encoded: self)!.AES128DecryptToString()
  42. }
  43. func AES128DecryptToData() -> Data {
  44. return self.AES(operation: CCOperation(kCCDecrypt), key: key, iv: iv)!
  45. }
  46. func AES128DecryptToString() -> String {
  47. return String.init(data: self.AES128DecryptToData(), encoding: String.Encoding.utf8) ?? ""
  48. }
  49. }
  50. extension String {
  51. func AES128EncryptToData() -> Data {
  52. return self.myData.AES128EncryptToData()
  53. }
  54. func AES128EncryptToBase64Data() -> Data {
  55. return self.myData.AES128EncryptToBase64Data()
  56. }
  57. func AES128EncryptToBase64String() -> String {
  58. return self.myData.AES128EncryptToBase64String()
  59. }
  60. func AES128DecryptFromBase64StringToData() -> Data {
  61. return (Data(base64Encoded: self)?.AES128DecryptToData())!
  62. }
  63. func AES128DecryptFromBase64StringToString() -> String {
  64. return (Data(base64Encoded: self)?.AES128DecryptToString())!
  65. }
  66. }