Before you use this
This tool exists for future you. Make sure: ① this page is cached or saved locally,
② a copy lives in a trusted repository or archive, and ③ you opened it from a source you control.
If not, stop and verify.
01 Whole-Note Decryption
FileData · JSON · v1.0 / v2.0A Meld Encrypt whole-note file is JSON with
version, hint, and encodedData fields, typically with a .md extension.
Plaintext Output
02 Inline Fragment Decryption
Inline · %%🔐 / %%🔐α / %%🔐βWrapped in
%%...%% or prefixed with 🔐α / 🔐β — both are auto-detected. Without a prefix, v2 is assumed.
Plaintext Output
03 Algorithm Archive
For Future Reference
The three constant sets below are reproduced exactly from Meld Encrypt's
src/services/CryptoHelper*.ts.
The full decryption logic lives in the <script> tag below — view source to audit.
v0 · Obsolete · earliest format
prefix : 🔐 / %%🔐 key = SHA-256(utf8(password)) iv = [196,190,240,190,188,78,41,132,15,220,84,211] // 12 bytes, hardcoded cipher = AES-256-GCM(key, iv).encrypt(utf8(text)) output = base64(cipher)
v1 · CryptoHelper · legacy whole-note + α inline
prefix : 🔐α / %%🔐α · FileData "version": "1.0"
salt = utf8("XHWnDAT6ehMVY2zD") // 16 bytes, hardcoded
key = PBKDF2-SHA256(utf8(password), salt, 1000) → AES-256
iv = random(16)
cipher = AES-256-GCM(key, iv).encrypt(utf8(text))
output = base64(iv ‖ cipher)
v2 · CryptoHelper2304 · current default
prefix : 🔐β / %%🔐β · FileData "version": "2.0" salt = random(16) iv = random(16) key = PBKDF2-SHA512(utf8(password), salt, 210000) → AES-256 cipher = AES-256-GCM(key, iv).encrypt(utf8(text)) output = base64(iv ‖ salt ‖ cipher)