Rotate-18 Cipher
Letters get ROT13, digits get ROT5, everyone's rotated
- encrypted_txt
ROT18 is what you get when you run ROT13 on the letters and ROT5 on the digits in one pass. It's not a rotation by 18 places - despite the name, there's no 18-step alphabet shift - it's a composite: letters shift 13, numbers shift 5. Both halves are self-inverse, so the whole thing is self-inverse too: run ROT18 twice and you're back to the original message. The Rot18 node packages that up for you inside ComfyUI.
Why would you reach for it? Because it's the "scramble everything, both text and numbers" option. ROT13 alone leaves digits untouched, which means a clue containing dates or IDs stays suspiciously legible. ROT5 alone leaves words readable. ROT18 hides both at once while staying a fixed, keyless, one-step operation - the kind of light obscurity a puzzle maker uses for a mid-tier clue, or a workflow builder uses to obfuscate a numeric seed before passing it along.
The inputs are the pack's standard classical template with no key (the rotation is fixed):
- text - the message, plain string, multiline.
- alphabet -
ENGLISHby default. Leave it; the composite behavior assumes the standard 26-letter alphabet. - mode - encrypt or decrypt. Identical operations again - the toggle is cosmetic, a side effect of the self-inverse property.
- keep_formatting - on by default: case and punctuation preserved; only letters and digits transform. Off: lowercase, no spaces.
Output is encrypted_txt, a STRING.
It sits with the other Rot* nodes under ARG Toolkit/Cryptography/Classical. Install via ComfyUI Manager (search "ComfyUI ARG Toolkit"), restart, done:
cd ComfyUI/custom_nodes
git clone https://github.com/AzelusLightvale/ComfyUI-ARG-Toolkit
No model downloads; the pack's secretpy dependency handles the actual cipher work and installs automatically.
A useful trick if you're on the solving side: ROT18 is just two independent rotations stacked, so you can attack the digits and letters separately. Run a suspected ROT18 string through a plain ROT13 to un-scramble the letters, then ROT5 to un-scramble the numbers - or use this node twice, since it's its own undo. And the usual amateur-project caveat applies: the pack's tests cover the common cases, so keep inputs to normal alphanumeric text and this node will never surprise you, because there's genuinely nothing about it that can surprise you.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hello World! | — |
| alphabet | STRING | ENGLISH | Input your alphabet here. If left blank, uses the alphabet default to the cipher. Uses standard connected format ('abcdef'), but can also accept the alphabets defined in secretpy in alphabets.py. |
| mode | BOOLEAN | true | Toggle between encrypting or decrypting a message. |
| keep_formatting | BOOLEAN | true | Toggle between preserving the format of the message or remove all spaces, punctuations, and convert to lowercase. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| encrypted_txt | STRING | — |