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/translate to 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.

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.