all repos — cryptopals-challenges @ 7a18aab19ba7dd59eab63c419004f6cae256bf1e

cryptopals-challenges

Implement character frequency histogram for ch. 3
x1phosura x1phosura@x1phosura.zone
Thu, 14 Apr 2022 01:26:40 -0700
commit

7a18aab19ba7dd59eab63c419004f6cae256bf1e

parent

0e4aa9c416921fbac9ee1d855621fb45292d4980

2 files changed, 29 insertions(+), 1 deletions(-)

jump to
M set1/Makefileset1/Makefile

@@ -5,7 +5,7 @@ DEBUG = -0g -ggdb

LINK = SRC_DIR = src OUT_DIR = bin -TARGETS = base64 fixed-xor +TARGETS = base64 fixed-xor char-freq-analize all: $(TARGETS)
A set1/src/char-freq-analyze.c

@@ -0,0 +1,28 @@

+#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +int main() +{ + size_t i; + int8_t ciphertext[] = "\x1b\x37\x37\x33\x31\x36\x3f\x78\x15\x1b\x7f\x2b" + "\x78\x34\x31\x33\x3d\x78\x39\x78\x28\x37\x2d\x36" + "\x3c\x78\x37\x3e\x78\x3a\x39\x3b\x37\x36"; + uint8_t byte_freq[256]; + memset(byte_freq, 0, sizeof(byte_freq)); + + // get histogram (count byte occurences) + for (i = 0; i < sizeof(ciphertext)-1; ++i) { + byte_freq[ciphertext[i]] += 1; + } + + for (i = 0; i < sizeof(byte_freq); ++i) { + if (byte_freq[i] != 0) { + printf("%x occurs %d times\n", i, byte_freq[i]); + } + } + + return EXIT_SUCCESS; +} +