Encrypt text locally using AES-256-GCM and a versioned PBKDF2-SHA256 JSON envelope, or authenticate and decrypt it.
Memory-only processing. Reset clears this workspace. No password recovery or breach lookup.
Envelope v1 has exactly version, algorithm, kdf, iterations, salt, iv and ciphertext. AES-256-GCM uses a random 16-byte salt, 12-byte IV, 128-bit appended authentication tag and PBKDF2-HMAC-SHA256 (600,000 iterations when encrypting; 100,000–1,000,000 accepted). Binary fields use canonical padded Base64. AAD is UTF-8: NIMZOA-AES-ENVELOPE followed by a NUL, then fixed-order version, algorithm, kdf, iterations entries, each encoded as key.length:key=UTF8ByteLength(value):value followed by LF. Values are strings of their JSON scalar values; JSON key insertion order does not matter. Plaintext ≤200,000 UTF-8 bytes; envelope ≤300,000 bytes; password ≤1024 bytes. Inputs are memory-only, cleared on reset/unmount; JavaScript strings cannot be guaranteed securely erased. Wrong password or tampering returns no partial plaintext. Keep your password separately; no recovery service exists.
Processing uses your browser memory. Inputs are not included in page analytics. Text tools accept up to 200,000 UTF-8 bytes unless a tighter limit is stated. Worker operations time out after 45 seconds and can be cancelled. Clipboard and downloads require an explicit action.
Enter your values locally; no inputs are uploaded.
Check validation feedback before reviewing the browser-generated result.
Review the explanation, copy supported outputs or reset the workspace.
AES-256-GCM with a 128-bit tag authenticates the ciphertext. PBKDF2-HMAC-SHA256 derives the key from a password and random 16-byte salt. Encryption uses 600,000 iterations and a fresh random 12-byte IV.
Envelope v1 has exactly version, algorithm, kdf, iterations, salt, iv and ciphertext. AES-256-GCM uses a random 16-byte salt, 12-byte IV, 128-bit appended authentication tag and PBKDF2-HMAC-SHA256 (600,000 iterations when encrypting; 100,000–1,000,000 accepted). Binary fields use canonical padded Base64. AAD is UTF-8: NIMZOA-AES-ENVELOPE followed by a NUL, then fixed-order version, algorithm, kdf, iterations entries, each encoded as key.length:key=UTF8ByteLength(value):value followed by LF. Values are strings of their JSON scalar values; JSON key insertion order does not matter. Plaintext ≤200,000 UTF-8 bytes; envelope ≤300,000 bytes; password ≤1024 bytes. Inputs are memory-only, cleared on reset/unmount; JavaScript strings cannot be guaranteed securely erased. Wrong password or tampering returns no partial plaintext. Keep your password separately; no recovery service exists.
Processing takes place locally in browser memory. Inputs are not sent to a processing service, persisted by this tool or included in analytics. Ordinary page requests may still be logged. Clipboard and downloads require explicit actions.
AES-256-GCM with a 128-bit tag authenticates the ciphertext. PBKDF2-HMAC-SHA256 derives the key from a password and random 16-byte salt. Encryption uses 600,000 iterations and a fresh random 12-byte IV.
Version 1 contains exactly version, algorithm, kdf, iterations, salt, iv and ciphertext. Binary values are canonical padded Base64. Ciphertext includes the appended 16-byte GCM tag. Unsupported fields, duplicates, malformed values and out-of-range iterations are rejected.
AAD is UTF-8 text beginning NIMZOA-AES-ENVELOPE plus a NUL. In fixed order version, algorithm, kdf, iterations, append key.length:key=UTF8ByteLength(value):value and LF. Scalar values are converted to strings; JSON field insertion order does not affect authentication.
Authentication fails with a controlled generic message and no partial plaintext. Metadata modifications, incorrect key derivation or a changed IV also prevent successful authentication.
No. The tool has no password recovery service. Keep the password separately from the envelope. Inputs remain in browser memory; reset clears the controls and result, though JavaScript strings cannot be guaranteed securely erased.
Plaintext is limited to 200,000 UTF-8 bytes, the JSON envelope to 300,000 bytes and the password to 1024 bytes. Accepted PBKDF2 iterations are integer values from 100,000 to 1,000,000. Work runs in a cancellable, time-bounded Worker.