Scream cipher
What counts as a “cipher”? (cipher vs encoding)
- Several comments debate whether SCREAM is truly a cipher or just an encoding, comparing it to ROT13 and base64.
- One side: classical definition of a substitution cipher says the “key” is the character-mapping table; by that standard ROT13 and SCREAM qualify as ciphers (albeit very weak ones).
- Other side: since the mapping is fixed and hard-coded, with no secret input, these are better described as encodings, similar to base64.
- Some note that terminology depends on historical vs modern cryptography usage, and on intent (obfuscation vs secrecy).
ROT13, Caesar, and monoalphabetic substitution
- Commenters liken SCREAM to Caesar/shift ciphers and ROT13; all are monoalphabetic substitution with essentially no real security.
- There’s playful talk about “post-quantum” ROT13/SCREAM and the silliness of relying on such schemes.
- A side thread jokes about the “security” of applying ROT13 multiple or fractional times.
Unicode, Zalgo, and data density hacks
- Multiple comments explore using Unicode combining marks:
- “Zalgo” text as a way to pack more info into a single grapheme cluster.
- A linked “zalgo256” scheme encodes bytes as stacks of combining marks on top of “A”, similar in spirit to SCREAM but more data-dense.
- Discussion of grapheme cluster limits and HN’s filtering of disruptive combining characters.
- Others mention using invisible Unicode characters to hide metadata in messages, or using emojis for similar low-stakes steganography (with jokes about emoji’s byte overhead).
Implementations, tricks, and language features
- Various short implementations are shared (Python, JS, Racket), including:
- Using
str.maketrans/translateto avoid manual cipher loops. - A JS one-liner mapping scream/unscream via index XOR.
- Racket code demonstrating hiding base64 text using invisible characters, plus discussion of threading macros and set vs dict comprehensions in Python.
- Using
XKCD and cultural references
- Multiple commenters connect SCREAM to a recent XKCD comic and note tool support for the “XKCD scream cipher”.
- There’s general humor: Serious Sam “scream” language, “sand people” talk, ghosts wanting an O-variant, and fears of accidentally summoning eldritch beings.
AI and cracking SCREAM
- Some experiment with ChatGPT decoding SCREAM as a generic monoalphabetic substitution cipher.
- Results are mixed: it can get close but makes notable errors without further guidance.