Live data from Hacker News

Hiding messages in a deck playing cards

asherfalcon.com

31–40 of 42 posts

Re: Hiding messages in a deck playing cards

#31

Good stuff. You could get much better bandwidth than this by tokenizing and using something like a Huffman or arithmetic code on token frequencies. As a simple example, if you set your tokens to be all English words - let's say there are between 500k and 1 million - that's about 9-10 bits per word. I am sure you could do much better than this as well

You can get much better than that by taking a well-known LLM model and encoding a series of offsets from the most likely sequence of tokens, especially if you are OK with the message being slightly different.

https://arxiv.org/abs/2306.04050

https://bellard.org/ts_zip/

Re: Hiding messages in a deck playing cards

#32
post #8

Earlier quoted context omitted.

TIL about Lehmer codes... and "poker encoding" ;) (I just prefer poker to solitaire...) Someone else mentioned that the orientation of the cards (up or down) and possibly even the front-back facingness of the card (facing up, facing down) would add another 2 possible bits to the available encoding space. (Of course, at that point you'd have to also encode which side of the whole deck is the "top"...) My own thought w…

> "...which side of the whole deck is the 'top'..." A dark line drawn across the top of the deck would be enough. Though it would ruin the stealth factor of the cards. Also, the pattern on the back of some playing decks isn't symmetrical, so that could be used as well.

Decode it both ways and see which isn't gibberish.

Re: Hiding messages in a deck playing cards

#34
post #7

Earlier quoted context omitted.

https://deckcrypt.github.io/ 45 characters according to the blog post and this demo

45 code points in a custom 5-bit encoding representing 32 characters; 28 bytes (with 1 to 4 bits left over) of 8-bit ASCII.

7 characters of UTF-32

Re: Hiding messages in a deck playing cards

#35
post #24

Pet peeve: the blog post mentions _decimal_ and _denary_ several times, but in reality, there are no decimal numbers involved in any part of the computation. This is a common mistake made by people who haven't fully internalized the distinction between numbers (which have no intrinsic representation) and _numerals_ which are the encodings of numbers. When you are converting a permutation to its index, you are not con…

> This is a common mistake made by people who haven't fully internalized the distinction between numbers (which have no intrinsic representation) and _numerals_ which are the encodings of numbers.

Counterpoint: it doesn’t matter.

Re: Hiding messages in a deck playing cards

#36
post #24

Pet peeve: the blog post mentions _decimal_ and _denary_ several times, but in reality, there are no decimal numbers involved in any part of the computation. This is a common mistake made by people who haven't fully internalized the distinction between numbers (which have no intrinsic representation) and _numerals_ which are the encodings of numbers. When you are converting a permutation to its index, you are not con…

Pet Peeve: Pointless Pedantry.

Always Adore: Amazing Alliteration.

Re: Hiding messages in a deck playing cards

#37
post #29

How about just assigning a number to every sentence in every language known to man, and using the absurdly huge number of deck combinations to identify them? Impractical, but possible.

225 bits

Oh! Duh, the article explicitly said that and I totally missed it as a number. I just thought, "That's only around 28 bytes... That's not a lot."

Thanks.

Re: Hiding messages in a deck playing cards

#38
post #24

Pet peeve: the blog post mentions _decimal_ and _denary_ several times, but in reality, there are no decimal numbers involved in any part of the computation. This is a common mistake made by people who haven't fully internalized the distinction between numbers (which have no intrinsic representation) and _numerals_ which are the encodings of numbers. When you are converting a permutation to its index, you are not con…

> people who haven't fully internalized the distinction between numbers

Or people whose first intuition is that the space measured by 52! permutations, which are painfully obviously based on taking the suit and rank of each card which makes it unique, can be covered with even remote adequacy by considering only the card color, which only narrows down the card to one of two sets of 26.

Re: Hiding messages in a deck playing cards

#39
Thanks for your post. It sent me to the 3 hour rabbit hole figuring out how to maximise bandwidth given those 104 card-tokens (52x2 for face up/down cards) in real life. I wanted the solution to be practical for, say, two people in prison cells. So the math should be really simple.

My best attempt so far is assigning about ~20 tokens to most popular words (the, and, you...), another ~30 to popular trigrams (ing, ion, tio...), another ~30 to digrams (th, er, on...) and the rest to single letters. The number of unique tokens to be adjusted to the occurrence frequency of corresponding words/trigrams/digrams in natural language.

If the encoder runs out of a token, she just skips it (assuming the decoder will calculate this token is already used and guessing to add it) up until the point where the words become unrecognisable by the decoder. Encoder is also free to use synonyms to avoid running of tokens fast.

Not quite strict system, but my rough assessment gives it 80-100 letters per deck. Should be enough to plan a jailbreak :)

Re: Hiding messages in a deck playing cards

#40
post #8

Earlier quoted context omitted.

TIL about Lehmer codes... and "poker encoding" ;) (I just prefer poker to solitaire...) Someone else mentioned that the orientation of the cards (up or down) and possibly even the front-back facingness of the card (facing up, facing down) would add another 2 possible bits to the available encoding space. (Of course, at that point you'd have to also encode which side of the whole deck is the "top"...) My own thought w…

> "...which side of the whole deck is the 'top'..." A dark line drawn across the top of the deck would be enough. Though it would ruin the stealth factor of the cards. Also, the pattern on the back of some playing decks isn't symmetrical, so that could be used as well.

Use a casino decommissioned deck. They typically have either a hole punched in them, or a corner cut off. Either way it won't be symmetric, but still perfectly plausible as a cheap deck of cards.
Post reply on HN