Open onmyway133 opened 1 year ago
Use AES.GCM method with 128 bits key
AES.GCM
import CryptoKit public extension Optional { func tryUnwrap() throws -> Wrapped { if let value = self { return value } else { throw NSError(domain: "", code: 0) } } } public struct Crypto { static func encrypt(input: Data, key: String) -> Data { do { let keyData = Data(key.data(using: .utf8)!.prefix(32)) let key = SymmetricKey(data: keyData) let sealed = try AES.GCM.seal(input, using: key) return try sealed.combined.tryUnwrap() } catch { return input } } static func decrypt(input: Data, key: String) -> Data { do { let keyData = Data(key.data(using: .utf8)!.prefix(32)) let key = SymmetricKey(data: keyData) let box = try AES.GCM.SealedBox(combined: input) let opened = try AES.GCM.open(box, using: key) return opened } catch { return input } } }
How to use
let key = "a secret key" let input = "hello world".data(using: .utf8)! let encrypted = Crypto.encrypt(input: input, key: key) let decrypted = Crypto.decrypt(input: encrypted, key: key) print(String(data: decrypted, encoding: .utf8)) // hello world
Use
AES.GCM
method with 128 bits keyHow to use