Skip to content

Crypto Steps

The Crypto step provides nine cryptographic operations — hashing, HMAC, AES and RSA encryption/decryption, and key/password generation. Select the operation from a dropdown and the form adapts to show the relevant fields.

These are commonly needed for verifying webhook signatures, building API authentication headers, encrypting sensitive data in transit, and generating secure tokens.

Crypto step editor showing HMAC operation with data, secret key, algorithm, and encoding fields

Create a one-way hash of data.

FieldDescription
DataText to hash
AlgorithmSHA-256 (default), SHA-512, or MD5
EncodingHex (default) or Base64

Output: { "result": "a3f2b8c..." }

Create a keyed hash for message authentication — the standard way to verify webhook signatures.

FieldDescription
DataText to authenticate (e.g., the raw webhook payload)
Secret KeyShared secret key
AlgorithmSHA-256 (default), SHA-512, or MD5
EncodingHex (default) or Base64

Output: { "result": "d4e5f6a..." }

Encrypt data using AES-256 symmetric encryption.

FieldDescription
DataText to encrypt
KeyAES-256 key (hex, base64, or raw string — raw strings are hashed to derive the key)
AlgorithmAES-256-GCM (default, recommended) or AES-256-CBC
EncodingHex (default) or Base64

Output: { "result": "encrypted...", "iv": "abc123...", "authTag": "def456..." }

The iv (initialization vector) and authTag (GCM only) are required for decryption. Pass the full output object to the Decrypt step.

Decrypt AES-encrypted data. Accepts the output from an Encrypt step directly.

FieldDescription
DataEncrypted data — accepts the Encrypt step’s output object, a JSON string, or individual fields
KeySame key used for encryption
AlgorithmMust match the encryption algorithm
EncodingMust match the encryption encoding

Output: { "result": "original text" }

Encrypt data using an RSA public key.

FieldDescription
DataText to encrypt
KeyRSA public key in PEM format
PaddingOAEP (default, recommended) or PKCS#1 v1.5
OAEP HashSHA-256 (default), SHA-384, or SHA-512
EncodingBase64 (default) or Hex

Output: { "result": "encrypted..." }

Decrypt RSA-encrypted data using a private key.

FieldDescription
DataEncrypted string
KeyRSA private key in PEM format
PaddingMust match encryption padding
OAEP HashMust match encryption hash
EncodingMust match encryption encoding

Output: { "result": "original text" }

Generate a new RSA public/private key pair.

FieldDescription
Key Size2048 (default), 3072, or 4096 bits

Output: { "publicKey": "-----BEGIN PUBLIC KEY-----...", "privateKey": "-----BEGIN PRIVATE KEY-----..." }

Generate a random AES-256 encryption key (32 bytes).

FieldDescription
EncodingHex (default) or Base64

Output: { "key": "a1b2c3d4..." }

Generate a secure random password.

FieldDescription
Length4–128 characters (default: 16)
CharactersAll, alphanumeric, alpha, uppercase, lowercase, numbers, or special

Output: { "password": "xK9#mP2&..." }

Most services sign webhook payloads with HMAC. Here’s a typical verification flow:

  1. Crypto (HMAC) — compute HMAC-SHA256 of {{ initial.rawBody }} with the shared secret
  2. If — compare {{ crypto-hmac.result }} against {{ initial.headers.x-signature }}
  3. Continue or return a 401
  1. Generate AES Key — or load one from {{ $env.ENCRYPTION_KEY }}
  2. Encrypt (AES) — encrypt the sensitive value
  3. Data Store Set — store the encrypted result
  4. Decrypt (AES) — retrieve and decrypt when needed

Some APIs (AWS Signature V4, Twilio) require HMAC-based authentication headers:

{{ crypto-hmac.result }}

Use the HMAC step to compute the signature, then pass it as a header in an HTTP step.