Live data from Hacker News

Scream cipher

sethmlarson.dev

101–110 of 112 posts

Re: Scream cipher

#101
post #62

I have been using ROT13, but I’ve been looking for a post-quantum replacement so definitely I’m going to convert to SCREAM. It’s generally understood that qubits are unable to represent or even discern the little squiggly bits above normal Latin letters. Thank you for this important contribution to cryptography!

I wonder if Chatgpt can decrypt all of them just by analyzing vowel frequency, and then trying to find the algo on the internet.

Not perfectly. I grabbed a random encoded line from these comments, and asked ChatGPT to decode it[1]. It determined the plaintext was:

> Immediately thought of Moby, infact a quick search for this title... coincidental, but I would mention it in the page if I were you.

and noted that it had "preserved punctuation and capitalization from the ciphertext". The actual plaintext should be:

> Immediately thought of XKCD, infact a quick search for this title gives me XKCD, it could be coincidental, but I would mention it in the page if I were you.

I've hit my free usage limit so can't currently prompt it further about its mistake.

[1] https://chatgpt.com/share/68cf17a6-8478-8011-a44e-64d43ad8a4...

Re: Scream cipher

#102
post #28

https://xkcd.com/3054/

I got nerd sniped by this xkcd and was happily working my way through an implementation and realized that the accent combiners work with any character. It is trivial to add bad steganography to your bad encryption.

r̊e̝q̝ůěs̔t͞ p̊e̝a͞c̍e̊ t̠a̗lks

Re: Scream cipher

#103
post #74

It's not necessary to write the ciphering logic. CIPHER, UNCIPHER = str.maketrans(CIPHER), str.maketrans(UNCIPHER) print(s := 'STREAM CIPHER'.translate(CIPHER)) print(s.translate(UNCIPHER))

NICE!!

It's truly an honour to have been able to teach the PSF's Security Developer-in-Residence something about the implementation of a simple substitution cipher in Python. ;) (In all seriousness, thanks for all your excellent work. The many projects you help out with — and advocate for — in the Python ecosystem, including CPython itself, are all far better off for it.)

Re: Scream cipher

#104

Earlier quoted context omitted.

I wonder if Chatgpt can decrypt all of them just by analyzing vowel frequency, and then trying to find the algo on the internet.

Not perfectly. I grabbed a random encoded line from these comments, and asked ChatGPT to decode it[1]. It determined the plaintext was: > Immediately thought of Moby, infact a quick search for this title... coincidental, but I would mention it in the page if I were you. and noted that it had "preserved punctuation and capitalization from the ciphertext". The actual plaintext should be: > Immediately thought of XKCD,…

I pushed it a bit and it didn’t do so hot.

https://chatgpt.com/share/68cf3b9f-decc-8007-8a5d-cc7b583d0e...

Re: Scream cipher

#106
post #23
post #3

... in the same sense that ROT13 or base64 would be a cipher.

Rot 13 is a cipher. It's a substitution cipher, and more specifically a shift cypher or Caesar cipher. It's not a secure cipher but it is one. Base64 is an encoding. It's an algorithm, no attempt at secrecy, thus not a cipher.

If you use base64 with the intention of hiding the encoded information, surely it’s as much a cipher as rot13 is, right?

Re: Scream cipher

#107
post #17

Earlier quoted context omitted.

… and no, since neither the enciphering nor the deciphering do a 1:1 mapping for all possible input code points.

That's not a requirement. Pigpen is a substitution cipher.

You will find that the pigpen cipher has a 1:1 mapping between its input alphabet and its output alphabet, and that a 1:1 mapping is a necessity for full invertibility.

Re: Scream cipher

#108

Earlier quoted context omitted.

NICE!!

It's truly an honour to have been able to teach the PSF's Security Developer-in-Residence something about the implementation of a simple substitution cipher in Python. ;) (In all seriousness, thanks for all your excellent work. The many projects you help out with — and advocate for — in the Python ecosystem, including CPython itself, are all far better off for it.)

<3 Thanks for the kind words!! :)

Re: Scream cipher

#109

Most of these are short/long vowel markings, except last one which is (probably) implosion. And rest are frontal/back and wide/narrow A. But Swedish "Å" is just stupidity "O", because they started pronouncing "O" as "U" and "U" as "Y". -- Can you pronounce these screams?

The last one is the ogonek, it usually indicates nasalization: https://en.m.wikipedia.org/wiki/Ogonek

Re: Scream cipher

#110

Earlier quoted context omitted.

I had fun writing a Racket version: #lang racket/base (require net/base64 threading) (define FIRST-INVISIBLE-CHAR 917760) (define (invis-encode str) (list->string (for/list ([c (in-list (string->list str))] #:do [(define cnum (char->integer c))] #:when ( char (+ cnum FIRST-INVISIBLE-CHAR))))) (define (invis-decode str) (list->string (for/list ([c (in-list (string->list str))] #:do [(define plaintxt-c (- (char->intege…

Threading is done with the wave character ~ in Racket? I can't decide if I hate it or not (am used to Clojure's ->). I think my pinky finger doesn't like ~.

In this case ~> is a macro from a widely used package (https://docs.racket-lang.org/threading/index.html) so if you defined an alias for it (or forked the package) you could use any valid identifier.
Post reply on HN