Choose a primitive

Select your use case to identify the correct primitive, then follow the link for guidance on using the primitive.

Encrypt data...

Primitive Details
Authenticated Encryption with Associated Data (AEAD) - Suitable for most needs
- Accepts plaintexts up to 2 32 bytes
- Provides plaintext confidentiality and verifies integrity and authenticity
Streaming AEAD - For data that is too large to be processed in a single step
Deterministic AEAD - Produces same ciphertext for a given plaintext and key
Key Management System (KMS) Envelope AEAD - Encrypts every plaintext with new AEAD key
- Encrypts every AEAD key with KMS
Hybrid Encryption
- Not authenticated
- Useful when senders cannot store secrets (private key)

These primitives are all able to bind ciphertext to its context .

Ensure authenticity and integrity of data by...

Primitive Details
Message Authentication Code (MAC) - Very fast
- Only verifiable by parties who can also create MACs
Digital Signature - Verifiable by parties who cannot create signatures

Miscellany

Primitive Details
JSON Web Tokens (JWTs) - Can additionally convert to / from JSON Web Key (JWK) format
KMS-Encrypted Primitive - Doesn't require interacting with the KMS every time the primitive is used (e.g. to encrypt a plaintext), unlike KMS Envelope AEAD

Have a question?

Create an issue in the language-specific GitHub repository linked on the Tink organization page .

Design a Mobile Site
View Site in Mobile | Classic
Share by: