BMHCrypto is a pure Swift packages built on CryptoKit, adds useful extensions and ready to use.
Simplify usage of cryptographic operation such as hashing, encryption / decryption. Pure Swift, I am not gonna reinvent the wheel, package always will be based on CryptoKit or whatever released by Apple.
- iOS 13.0+ / tvOS 13.0+ / watchOS 6.0+ / macOS 10.15+
- Swift 5.0+
Swift Package Manager
Swift Package Manager is built into new versions of Xcode. To install BMHCrypto
with SPM:
-
Open your project in Xcode
-
Click "File" -> "Swift Packages" -> "Add Package Dependency..."
-
Paste the following URL:
https://github.com/muhasturk/BMHCrypto.git
- Click "Next" -> "Next" -> "Finish"
You can use The Swift Package Manager to install BMHCrypto
by adding the proper description to your Package.swift
file:
import PackageDescription
let package = Package(
name: "YOUR_PROJECT_NAME",
targets: [],
dependencies: [
.package(url: "https://github.com/muhasturk/BMHCrypto.git", from: "0.1.0")
]
)
Next, add BMHCrypto
to your targets dependencies like so:
.target(
name: "YOUR_TARGET_NAME",
dependencies: [
"BMHCrypto",
]
),
Then run swift package update
.
-
Insecure Hash
- MD5
- SHA1
Important: These algorithms aren’t considered cryptographically secure, but are provided for backward compatibility with older services that require them. For new services, avoid these algorithms.
-
Cryptographically Secure Hashes
- SHA256
- SHA384
- SHA512
-
Ciphers
- AES
- ChaChaPoly
-
Message Authentication Codes
- HMAC
- SymmetricKey
-
Public-Key Cryptography
Do not forget to import
import BMHCrypto
// Anything That Conforms DataProtocol
let plainText = "BMH"
// Returns String Representation
plainText.md5
plainText.sha1
plainText.sha256
plainText.sha384
plainText.sha512
- ChaChaPoly
// Share Same Key
let key = SymmetricKey(size: .bits256)
// Plain Data Could Be Anything
let data = Data()
// Encrypt
let encrypted = data.encryptChaChaPoly(with: key)
// Decrypt
let decrypted = encrypted.decryptChaChaPoly(with: key)
- AES
// Share Same Key
let key = SymmetricKey(size: .bits256)
// Plain Data Could Be Anything
let data = Data()
// Encrypt
let encrypted = data.encryptAES(with: key)
// Decrypt
let decrypted = encrypted?.decryptAES(with: key)
let key = SymmetricKey(size: .bits256)
// Shareable String Key
let savedKey = key.base64EncodedString
// Ready to Use SymmetricKey
let convertedKey = savedKey.asSymmetricKey
Mustafa Hasturk 📧 mustafa[at]hasturk.dev
Bug reports and pull requests are welcome.
BMHCrypto is released under the MIT license. See LICENSE for more information.