aescryptable
                                
                                 aescryptable copied to clipboard
                                
                                    aescryptable copied to clipboard
                            
                            
                            
                        AES encryption/decryption with random iv 🔒
AESCryptable 🔒
Provides Advanced Encryption Standard (AES) capabilities.
- [x] Relies on native CCCrypt(viaimport CommonCrypto).
- [x] Uses Cipher Block Chaining (CBC)mode with randomInitialization Vector (IV).
- [x] Works (only) with 256-bit key size. This is by design.
- [x] Uses kCCOptionPKCS7PaddingasCCOptionsby default.
Integration
Xcode 11+

(More on the topic from WWDC 2019: Adopting Swift Packages in Xcode and Creating Swift Packages.)
Via Package.swift
In your Package.swift, add AESCryptable as a dependency:
dependencies: [
  // 🔐 AES encryption/decryption with random iv. Swift 5 and up.
  .package(url: "https://github.com/backslash-f/aescryptable", from: "1.0.0")
],
Associate the dependency with your target:
targets: [
  .target(name: "App", dependencies: ["AESCryptable"])
]
Run: swift build
Usage
import AESCryptable
do {
  // encrypt
  let aes = try AES(keyString: "01234567890123456789012345678901")
  let encryptedData = try aes.encrypt("The black knight always triumphs!")
  // decrypt
  let decryptedString = try aes.decrypt(encryptedData)
  print(decryptedString) // The black knight always triumphs!
} catch {
  print(error)
}
(Refer to the test class for a high-level overview.)
Demo
Clone the repo and use AESCryptable.playground to see the code in action:
