The Encryption framework is a Swift package that provides data encryption and decryption using the AES and RSA algorithms.
To install the framework using the Swift Package Manager, follow these steps:
- Open your project in Xcode.
- Select the
xcodeprojectfile in the navigator. - In the "Frameworks, Libraries, and Embedded Content" section, press the
+button. - Select
Add Other..., thenAdd package dependency. - Enter the framework URL in the search field: https://github.com/qodeca/Encryption
- Press
Add packageand confirm in the dialog window by pressingAdd package.
To use the encryption features in your code, you need to import the Encryption framework using import Encryption.
To use AES or RSA encryption, you will need to provide encryption keys to these algorithms. You can load these keys from a String or from a file in the application bundle. Be sure not to store sensitive keys in unencrypted form, as they could be retrieved from the application.
import Encryption
import CommonCrypto
classAESWrapper{privateletaes:AESinit(aesKey:AESKey){self.aes =.init(key: aesKey, options:CCOptions(ccPKCS7Padding))}func encrypt(message:String){letdecrypted=try!DecryptedValue(decryptedString: message)letencrypted=try! decrypted.encrypted(using: aes)print(encrypted)}func decrypt(message:String){letencrypted=try!EncryptedValue(encryptedString: message)letdecrypted=try! encrypted.decrypted(using: aes)print(try! decrypted.string())}}letaesKey=AESKey(
secret:"t6w9z$C&F)J@NcRf",
initialVector:"6CF105AB-4D16-44")letaesWrapper=AESWrapper(aesKey: aesKey)
aesWrapper.encrypt(message:"Hello World!")
aesWrapper.decrypt(message:"aE0Pq1ddC6a1agsa0RI2NQ==")import Encryption
import CommonCrypto
classRSAWrapper{privateletrsa:RSAinit(privateKey:RSAKey, publicKey:RSAKey){self.rsa =.init(publicKey: publicKey, privateKey: privateKey, padding:.OAEP)}func encrypt(message:String){letdecrypted=try!DecryptedValue(decryptedString: message)letencrypted=try! decrypted.encrypted(using: rsa)print(encrypted.base64String)}func decrypt(message:String){letencrypted=try!EncryptedValue(encryptedString: message)letdecrypted=try! encrypted.decrypted(using: rsa)print(try! decrypted.string())}}letrsaPublicKeyClient=try!RSAKey(
publicKey:""" MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTI9m6COiT141l0ROqI548PDlU 5IfkAI2VzKsC3AbXU8SVky1SVAbHPYqTWxJA5qpZgqO402XojmEIr2dk752udgB5 IB3PTzPT5D27QZTRKmTnZ7kBovdQIJnTDvnU6F3Nu2PPh+dosi6R7qzKLm5LgSOF L4JLwC5rCy2+kvk4hwIDAQAB""")letrsaPublicKeyServer=try!RSAKey(
publicKey:""" MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7/125XuLT7TWDnpZcjRakD9ng ygXzBVoOoXJcdr7UiSAMmd8YqpHZBx8PQGqZaqj/NDB9ZhUQalNZSwFRfoom+S01 R4QdkG4fzN366YpwXHL6zM5bVviVX9bBJbHMj2LTGMVq8an3BWpSoRCIo7ame0Tj FVWrW+78Cj3cxMnV+QIDAQAB""")letrsaPrivateKeyClient=try!RSAKey(
privateKey:""" MIICXAIBAAKBgQC7/125XuLT7TWDnpZcjRakD9ngygXzBVoOoXJcdr7UiSAMmd8Y qpHZBx8PQGqZaqj/NDB9ZhUQalNZSwFRfoom+S01R4QdkG4fzN366YpwXHL6zM5b VviVX9bBJbHMj2LTGMVq8an3BWpSoRCIo7ame0TjFVWrW+78Cj3cxMnV+QIDAQAB AoGAX1NSY99QJuO94dp1JcLIuzHqaYgm0h5hls+YXHg9tSk+3gTb0fcTczegMSyZ oOcrgBQnjj5H6gXv83QL3BXM2K0lj9Xb+drqlz7trrNxHiJvJZuhnqRqita1cTgo k6dABlxSHH4Zai7l4puiCXjWNzhzDTKpQb2f19gi+YZF4t0CQQDsIpqHOrH/w5G9 aJ4Byadq9X8KjIlqA8fvc27LHm+OSW7U9Eolj7yprrY9+ojQyCuuNUdjJ+dhBFIP DGGbGiXbAkEAy9ASgkIqYK0//NLpQ8w0e2YUVNE6pBvvYR3/QfLZ+2C6/2Wr3KiH EaGDxRgxrNzOnJJ1GGEtNoHx1VTMGHE9uwJAcP8KFUYIIYzzc8DZQ5+8xpkdpu2j YCDZDwOc9APnfB41tCAGTz0eGdCqErSNveLbzCxgsdlJhoprvhm9p1v22wJATutu D1RRloffjCWbP6518AZx/vnZrCxJACEec0n3UFh/cF/NMa9sRc51+L7KlXYW5xfr EZqnaEDfBM1GDnzi+wJBAML1lFZoKg0cPNAqKXGIvrfI9jPUgI4G8ITLPNkioZ0t bma0mK2oKM5Y3IISCtf99yJswvf4FFf521vftr+s7yg=""")letrsaPrivateKeyServer=try!RSAKey(
privateKey:""" MIICXgIBAAKBgQCTI9m6COiT141l0ROqI548PDlU5IfkAI2VzKsC3AbXU8SVky1S VAbHPYqTWxJA5qpZgqO402XojmEIr2dk752udgB5IB3PTzPT5D27QZTRKmTnZ7kB ovdQIJnTDvnU6F3Nu2PPh+dosi6R7qzKLm5LgSOFL4JLwC5rCy2+kvk4hwIDAQAB AoGAImHUNKZ0QmeyAMK0R6N/DDA+bVnhbyO58fEbXNWxO4u1egYkJwK/ersksH4t a8D6uWPPghbTz13FytPB41IilBBtpJGYz/9A2EMz6+wdQkBvmx130Wbnlr27jQPv rXXJM9UVRXMFjnspE5u+OnhWPwFAaiB8SAEoeUZkVGVg+VECQQDZr4hSaWt2HsCW gGzARiWgPwhpiTSqWctBacElcCx9pNpdGLzV18CjoV8D0Jo62gvJnazLFUhbWTF0 pr9dp0UbAkEArQmtYYY5p2LZh6Slu37GUy+KdIaLw4ozTjclNkGEwJoZE5We6Rv3 4ksFbyi2gv8ljACOdLN7mLaxZifdlD+NBQJBAJMyAXEQfayqkLlz75V4GVspJCwQ rf7+ptT9iLAjEMKI5WsMHixPLqC2roPq208uP8g+CShtpLa4MhvZ4Q6X278CQQCo Ke55B+RB+zwiqe1zIQqGz34ELrnniAjCa69bYiMsttXGBbORImAuaPBYDj4JYwNP Yz8OxVtJl8sh135s07ItAkEAij7iUcAjHrdMYrfAzhL190fm5G0v7ji7SG8ix38U FPMsJKfgpYJ/1zHdhJw57R86zbizpfaF06VFLm7x6XKV7g==""")letrsaWrapperClient=RSAWrapper(privateKey: rsaPrivateKeyClient, publicKey: rsaPublicKeyClient)letrsaWrapperServer=RSAWrapper(privateKey: rsaPrivateKeyServer, publicKey: rsaPublicKeyServer)
rsaWrapperServer.encrypt(message:"Hello World!")
rsaWrapperClient.decrypt(message:"aNlCRLZa1msSqQkCm0INRvgx++TKZ695pMwXPgmTOhmJceaJf4nEikyh5jbdH9cYEx8wQLbsraE16Ri86luoFd02mcRT0EBEXan2mRYnJVZhbRkdxgFJVipvTAt/fAp6+JcvoquN7boJvH2zzX3RxPkNbsGNqhUNaVk58p87YWc=")