A cryptography library for Kotlin Multiplatform, which wraps well-known future-proof platform-native solutions like OpenSSL, CryptoKit, WebCrypto or JCA with a type-safe uniform API, aligned defaults as well as tested for cross-compatibility between platforms.
Add dependencies:
kotlin {
sourceSets {
commonMain.dependencies {
implementation("dev.whyoleg.cryptography:cryptography-core:0.6.0")
implementation("dev.whyoleg.cryptography:cryptography-provider-optimal:0.6.0")
}
}
}Use the library:
// get a hasher
val sha = CryptographyProvider.Default.get(SHA512).hasher()
// hash a message
sha.hash("Kotlin is Awesome".encodeToByteArray())For more, see the Getting Started guide and API Reference.
| Operation | Algorithms |
|---|---|
| Hashing | SHA224, SHA256, SHA384, SHA512, SHA3, SHA1, MD5, RIPEMD160 |
| MAC | AES-CMAC, HMAC |
| Digital Signatures | RSA-PSS, RSA-PKCS1, ECDSA, EdDSA, DSA |
| AEAD | AES-GCM, AES-CCM, ChaCha20-Poly1305 |
| Symmetric Encryption | AES-CBC, AES-CTR, AES-ECB, AES-OFB, AES-CFB, AES-CFB8 |
| Public-Key Encryption | RSA-OAEP, RSA-PKCS1, RSA-RAW |
| Key Agreement | ECDH, XDH, DH |
| Key Derivation | PBKDF2, HKDF |
Detailed documentation is available on the project website, including the full provider support matrix.