diff --git a/tp/tp1/README.md b/tp/tp1/README.md index 4975f2c..4b490aa 100644 --- a/tp/tp1/README.md +++ b/tp/tp1/README.md @@ -25,7 +25,7 @@ le bit $b_0$ est remplacé par un bit, calculé par une fonction linéaire $f$. -Vous disposez d'un [fichier](src/ex1/file.crypt) crypté avec un lfsr, en faisant +Vous disposez d'un [fichier](src/ex2/file.crypt) crypté avec un lfsr, en faisant un XOR de chacun des octets avec les valeurs successives du registre. L'état initial du registre était `0xa7`, et la fonction utilisée diff --git a/tp/tp1/src/ex3/fichier.crypt b/tp/tp1/src/ex3/fichier.crypt new file mode 100644 index 0000000..37b4742 Binary files /dev/null and b/tp/tp1/src/ex3/fichier.crypt differ diff --git a/tp/tp1/src/ex3/key1.k b/tp/tp1/src/ex3/key1.k new file mode 100644 index 0000000..7fc6ef4 --- /dev/null +++ b/tp/tp1/src/ex3/key1.k @@ -0,0 +1 @@ +÷Nà {q2‘*:¬¨œÇmfU#© `í±Å?&Q3 \ No newline at end of file diff --git a/tp/tp1/src/ex3/xtea.c b/tp/tp1/src/ex3/xtea.c new file mode 100644 index 0000000..549caf6 --- /dev/null +++ b/tp/tp1/src/ex3/xtea.c @@ -0,0 +1,11 @@ +void encrypt(uint32_t v[2], uint32_t const key[4]) +{ + unsigned int i; + uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9; + for (i=0; i < 32; i++) { + v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]); + sum += delta; + v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum>>11) & 3]); + } + v[0]=v0; v[1]=v1; +}