Skip to content

Obfuscation

Stage metadata, hints, and completion messages can be obfuscated in the rendered HTML so puzzle content isn't trivially readable in page source.

Not cryptography

This is view-source-grade obfuscation, not security. It defeats casual Ctrl+U inspection of the generated HTML, it does not resist an attacker who runs the page's JavaScript or inspects values at runtime. Don't rely on it to protect anything sensitive.

The goal is just to hide the information a little, not to police players. Someone who wants to "hack" their way to an answer and enjoys that is having exactly as much fun as intended, let them.

How it works

The build-time obfuscator XORs the UTF-8 plaintext bytes with the UTF-8 obfuscation_key bytes (repeating the key as needed), then base64-encodes the result. A matching JavaScript decoder shipped in the theme performs the inverse in the browser.

Set obfuscation_key = "" in config.toml to disable obfuscation entirely (passthrough), useful during local development when you want to read stage data straight from the rendered HTML.

Answers are separate

Stage answers don't use this XOR scheme at all. Only a SHA-256 hash of the trimmed, lowercased answer ever reaches the client, see Stages for details.