Cryptic - keeps your secrets
summary
Cryptic is a Scala library that encrypts individual fields via an Encrypted-typeclass and defers transformations until explicit decryption using staged operations so map/flatMap build without exposing keys. It provides codecs (upickle, chill, FST) and requires an encrypt/decrypt function (currently synchronous) so you can plug AES, RSA, ECC and an AES/RSA hybrid; manifests store non-secret metadata like key IDs and key maps allow per-entity key usage. Toy ciphers illustrate APIs; real implementations hide Java crypto details.
AI-written summary · about
chapters (24)
- 0:00Cryptic and cryptography intro
- 1:05Secrets and encryption approaches
- 3:13Why use cryptic in Scala
- 5:18Operations and staged encryption
- 6:21Codecs and serialization
- 7:25Encrypting values
- 9:52Manifests and metadata
- 10:37Custom cryptographic functions
- 12:23Caesar cipher example
- 17:34Symmetric vs asymmetric
- 20:06Hybrid encryption schemes
- 21:55Supported algorithms overview
- 22:38AES in cryptic
- 24:04Symmetric trait details
- 25:11AES with passphrases
- 27:21Asymmetric trait and RSA
- 29:12Hybrid RSA and AES
- 30:38Elliptic curve support
- 31:22Quick start guide
- 32:28Key management
- 34:15Per-entity encryption keys
- 35:48Bouncy Castle custom crypto
- 36:30Lazy serialization
- 38:44Q&A
related talks
28mScalaZ and Cryptography
27mEnd-to-End Encryption for Streaming Data Pipelines
53mModern, Functional Cryptography (Part 2)
49mSecrets and Lies
59mModern, Functional Cryptography (Part 3)
51mClient-Side Field-Level Encryption for Apache Kafka Connect
58mModern, Functional Cryptography (Part 6)
34mUnlocking the unknowns: Cryptography Essentials
