continue work on 1-6
This commit is contained in:
parent
5d4bf996c2
commit
f7f68e7b2d
10
Makefile
10
Makefile
@ -1,6 +1,8 @@
|
||||
CMAKE_OPTS=-DCMAKE_EXPORT_COMPILE_COMMANDS=1
|
||||
CMAKE_OPTS=-DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
all:
|
||||
all: clean run
|
||||
|
||||
build:
|
||||
mkdir -p build
|
||||
cd build && \
|
||||
cmake ${CMAKE_OPTS} .. && \
|
||||
@ -10,3 +12,7 @@ all:
|
||||
clean:
|
||||
rm -rf build
|
||||
rm -f compile_commands.json
|
||||
|
||||
run: build
|
||||
build/cryptopals
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 0318221f3ff621ba046eb8b4385f07e790912cdb
|
||||
Subproject commit a99d1d3784eebf2400653df97968a5584f1e20d8
|
60
src/set1.c
60
src/set1.c
@ -2,8 +2,10 @@
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include "lfcrypto.h"
|
||||
#include "lfvector.h"
|
||||
#include "lfinput.h"
|
||||
#include "lfparsing.h"
|
||||
#include "helpers.h"
|
||||
@ -98,8 +100,64 @@ static void challenge5() {
|
||||
free(answer);
|
||||
}
|
||||
|
||||
static void challenge6() {
|
||||
static void challenge6_vecdestroy(void *v) {
|
||||
if (v == NULL) {
|
||||
return;
|
||||
}
|
||||
vec_destroy((Vector *)v);
|
||||
free(v);
|
||||
}
|
||||
|
||||
static void challenge6() {
|
||||
char *input = get_input("input/1-6");
|
||||
size_t encoded_sz = 0;
|
||||
unsigned char *encoded = b64_decode(input, strlen(input), &encoded_sz);
|
||||
|
||||
|
||||
unsigned int smallest = UINT_MAX;
|
||||
size_t keysize = 0;
|
||||
for (size_t k = 2; k <= 20; ++k) {
|
||||
char a[41], b[41];
|
||||
strncpy(a, encoded, k);
|
||||
strncpy(b, encoded + k, k);
|
||||
unsigned int hd = hamming_distance_s(a, b) / (unsigned int)keysize;
|
||||
if (hd < smallest) {
|
||||
smallest = hd;
|
||||
keysize = k;
|
||||
}
|
||||
}
|
||||
/*
|
||||
for (unsigned char *c = encoded; *c != '\0'; ++c) {
|
||||
printf("%02x", *c);
|
||||
}
|
||||
printf("\n");
|
||||
*/
|
||||
/*
|
||||
|
||||
Vector *vec = malloc(sizeof(Vector));
|
||||
vec_init(vec, challenge6_vecdestroy);
|
||||
|
||||
// Account for remainders
|
||||
size_t vec_sz = encoded_sz / keysize;
|
||||
if (encoded_sz % keysize != 0) {
|
||||
++vec_sz;
|
||||
}
|
||||
for (size_t i = 0; i < vec_sz; ++i) {
|
||||
Vector *vec_t = malloc(sizeof(Vector));
|
||||
vec_init(vec_t, free);
|
||||
vec_push(vec, (void *)vec_t);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < encoded_sz; ++i) {
|
||||
unsigned char *c = malloc(sizeof(unsigned char));
|
||||
*c = encoded[i];
|
||||
vec_at(vec, i % keysize) = c;
|
||||
}
|
||||
|
||||
vec_destroy(vec);
|
||||
*/
|
||||
free(encoded);
|
||||
free(input);
|
||||
}
|
||||
|
||||
void set1() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user