# cryptanalysis

Published articles for cryptanalysis.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Analysis of PPPP "encryption"

DevFeed: [Analysis of PPPP "encryption"](<https://devfeed.tech/articles/analysis-of-pppp-encryption-36629.md>)

Original publisher: [Read original article](<https://palant.info/2026/01/05/analysis-of-pppp-encryption/>)

Author: Wladimir Palant

Published: 2026-01-05T15:50:53Z

Content type: article

Language: en

Sources: [Almost Secure](<https://devfeed.tech/sources/almost-secure.md>)

Topics: [Encryption](<https://devfeed.tech/topics/encryption.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [Network](<https://devfeed.tech/topics/network.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>)

Tags: [analysis](<https://devfeed.tech/tags/analysis.md>), [ascii](<https://devfeed.tech/tags/ascii.md>), [cryptanalysis](<https://devfeed.tech/tags/cryptanalysis.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [lan](<https://devfeed.tech/tags/lan.md>), [network](<https://devfeed.tech/tags/network.md>), [pull-request](<https://devfeed.tech/tags/pull-request.md>), [theory](<https://devfeed.tech/tags/theory.md>)

### AI overview

This analysis examines weaknesses in PPPP "encryption." It explains that app keys are reduced to a four-byte effective key and that the scheme is vulnerable to known-plaintext attacks. For LAN camera discovery when the app and traffic are unknown, the article describes sending all possible encrypted search packets, with at most 157,092 ciphertexts, and notes a pull request to update the device-detection script.

### Source excerpt

My first article on the PPPP protocol already said everything there was to say about PPPP "encryption": Keys are static and usually trivial to extract from the app. No matter how long the original key, it is mapped to an effective key that's merely four bytes long. The "encryption" is extremely susceptible to known-plaintext attacks, usually allowing reconstruction of the effective key from a single encrypted packet. So this thing is completely broken, why look any further? There is at least one situation where you don't know the app being used so you cannot extract the key and you don't have any traffic to analyze either. It's when you are trying to scan your local network for potential hidden cameras. This script will currently only work for cameras using plaintext communication. Other cameras expect a properly encrypted "LAN search" packet and will ignore everything else. How can this be solved without listing all possible keys in the script? By sending all possible ciphertexts of course! TL;DR: What would be completely ridiculous with any reasonable protocol turned out to be quite possible with PPPP. There are at most 157,092 ways in which a "LAN search" packet can be encrypted. I've opened a pull request to have the PPPP device detection script adjusted. Note: Cryptanalysis isn't my topic, I am by no means an expert here. These issues are simply too obvious. Contents Mapping keys to effective keys Redundancies within the effective key ASCII to the rescue How large is n? How many ciphertexts is that? Understanding the response Mapping keys to effective keys The key which is specified as part of the app's "init string" is not being used for encryption directly. Nor is it being fed into any of the established key stretching algorithms. Instead, a key represented by the byte sequence b1,b2,...,bnb_1, b_2, \ldots, b_n is mapped to four bytes k1,k2,k3,k4k_1, k_2, k_3, k_4 that become the effective key. These bytes are calculated as follows (⌊x⌋\lfloor x \rfloor means r

## Visualising SipHash

DevFeed: [Visualising SipHash](<https://devfeed.tech/articles/visualising-siphash-38930.md>)

Original publisher: [Read original article](<https://idea.popcount.org/2013-10-09-visualising-siphash>)

Author: Marek

Published: 2013-10-08T22:00:00Z

Content type: tutorial

Language: en

Sources: [Marek Majkowski](<https://devfeed.tech/sources/marek-majkowski.md>)

Topics: [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [hash](<https://devfeed.tech/topics/hash.md>), [C](<https://devfeed.tech/topics/c.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [code](<https://devfeed.tech/tags/code.md>), [cryptanalysis](<https://devfeed.tech/tags/cryptanalysis.md>), [hash](<https://devfeed.tech/tags/hash.md>), [pixel](<https://devfeed.tech/tags/pixel.md>), [program](<https://devfeed.tech/tags/program.md>), [random](<https://devfeed.tech/tags/random.md>), [xor](<https://devfeed.tech/tags/xor.md>)

### AI overview

An article visualises SipHash's SipRound using differential cryptanalysis. It explains the 256-bit internal state, the operations used by SipRound, and how flipping individual input bits affects the output.

### Source excerpt

Visualising SipHash Siphash is a PRF using a "SipRound" primitive as a building block. The recommended SipHash variant, SipHash-2-4, is running two SipRounds after every message block and four rounds at the end to finalise the hash. SipRound SipRound is a simple construct - it mangles 256 bits of internal state using just a few operations on 64 bit registers: - 4 bit rotations - 2 rotations by 32 bits - 4 xors - 4 additions Here's an equivalent code in C (from csiphash): Differential...

## Cryptanalysis with N-Grams

DevFeed: [Cryptanalysis with N-Grams](<https://devfeed.tech/articles/cryptanalysis-with-n-grams-40260.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2012/02/03/cryptanalysis-with-n-grams/>)

Published: 2012-02-03T13:52:16Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Computing](<https://devfeed.tech/topics/computing.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [Decoding](<https://devfeed.tech/topics/decoding.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Python](<https://devfeed.tech/topics/python.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [code](<https://devfeed.tech/tags/code.md>), [computing](<https://devfeed.tech/tags/computing.md>), [cryptanalysis](<https://devfeed.tech/tags/cryptanalysis.md>), [decoding](<https://devfeed.tech/tags/decoding.md>), [linguistics](<https://devfeed.tech/tags/linguistics.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [natural-language-data](<https://devfeed.tech/tags/natural-language-data.md>), [ngrams](<https://devfeed.tech/tags/ngrams.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [substitution-cipher](<https://devfeed.tech/tags/substitution-cipher.md>), [techniques](<https://devfeed.tech/tags/techniques.md>)

### AI overview

This tutorial explains how to decode substitution ciphers using n-gram-based word segmentation and a local-search algorithm over possible decryptions. It introduces the relevant concepts, implements the approach in Python, and tests it on historical substitution ciphers.

### Source excerpt

This post is the third post in a series on computing with natural language data sets. For the first two posts, see the relevant section of our main content page. A Childish Bit of Fun In this post, we focus on the problem of decoding substitution ciphers. First, we'll describe a few techniques humans use to crack ciphers. We'll find these unsatisfactory, and move on to a simplistic algorithm which does a local search on the space of all possible decryptions, where we utilize our word segmentation algorithm from last time to determine the likelihood that a decryption is correct.