This single file decrypts any SecurePaper document, even if securepaper.app no longer exists. Save it with your important papers. It runs entirely in your browser: nothing you type ever leaves this page.
Read the QR codes with any QR scanner app and paste the decoded text here.
QR chunking: long documents are split into codes of the form SP:<n>/<total>|<chunk>.
Concatenate the chunks in order (1, 2, 3, …) to recover the full code text.
v2 (current): 2|<base64> where base64 decodes to iv(12 bytes) || ciphertext || tag(16 bytes),
AES-256-GCM. The key is 64 hex characters (32 bytes).
v2 passphrase: 2p|<iterations>|<base64> where base64 decodes to
salt(16) || iv(12) || ciphertext || tag(16). Key = PBKDF2-SHA256(passphrase, salt, iterations, 32 bytes), AES-256-GCM.
v1 (legacy): a hex string whose first 6 characters are a fragment of the IV (ignore them),
the rest is AES-256-CBC ciphertext (PKCS#7 padding). The legacy key string is <64 hex key>iv<32 hex IV>.
Any standard cryptography library can decrypt these formats; this page does it with the browser's built-in WebCrypto.