summaryrefslogtreecommitdiff
path: root/set2/task11.c
diff options
context:
space:
mode:
Diffstat (limited to 'set2/task11.c')
-rw-r--r--set2/task11.c61
1 files changed, 7 insertions, 54 deletions
diff --git a/set2/task11.c b/set2/task11.c
index 60483e0..e344a60 100644
--- a/set2/task11.c
+++ b/set2/task11.c
@@ -1,83 +1,36 @@
#include "../lib/lib2.h"
#include "../lib/lib.h"
-int random_number_between(int min, int max)
-{
- return (rand() % (max-min) + min);
-}
-
-
-int generate_random_bytes(char *buf, int length_key_bytes)
-{
- int random_number;
- int i;
- for(i=0;i<length_key_bytes;i++) {
- buf[i] = (char) random_number_between(0,255);
- }
-
-}
-
-char *encrypt_with_random_bytes(char *toencrypt, int length, int ecb)
-{
- int toappend_before = random_number_between(5,10);
- int toappend_after= random_number_between(5,10);
-
- char random_bytes[10];
- char key[16];
-
- char *result = malloc(length+toappend_before+toappend_after+1);
- char *ciphertext = malloc(length+toappend_before+toappend_after+1);
-
- generate_random_bytes(random_bytes, toappend_before);
-
- memcpy(result, random_bytes, toappend_before);
- memcpy(&result[toappend_before], toencrypt, length);
-
- generate_random_bytes(random_bytes, toappend_after);
-
- memcpy(&result[length+toappend_before], random_bytes, toappend_after);
-
- generate_random_bytes(key, 16);
-
-
- if(ecb)
- aes_ecb(result, (length+toappend_before+toappend_after), ciphertext, key, 128, 1);
- else {
- char iv[16];
- memset(iv, 0, 16);
- aes_cbc(result, (length+toappend_before+toappend_after), ciphertext, key, iv, 1);
- }
-
- return ciphertext;
-}
int main(int argc, char **argv)
{
- // set seed
+
// srand(1);
int i;
// encrypt ecb mode
char *cleartext = "Ok, dann mach ich mal einen richtigen Satz. Vielleicht ist das ECB mit so vielen gleichen Bloecken total ueberfordert. Oder der Satz muss einfach laenger sein. Man brauch also wirklich wohl erstmal ein bisschen Text, bevor man ECB erkennen kann";
char *ciphertext;
char *ciphertext_cbc;
- char iv[16];
+ char iv[17];
memset(iv, 0, 16);
-
ciphertext = encrypt_with_random_bytes(cleartext, strlen(cleartext), 1);
ciphertext_cbc = encrypt_with_random_bytes(cleartext, strlen(cleartext), 0);
- //aes_ecb(cleartext, strlen(cleartext), ciphertext, "BUMMS", 128, 1);
- //aes_cbc(cleartext, strlen(cleartext), ciphertext_cbc, "BUMMS", iv, 1);
+// aes_ecb(cleartext, strlen(cleartext), ciphertext, "BUMMS", 128, 1);
+// aes_cbc(cleartext, strlen(cleartext), ciphertext_cbc, "BUMMS", iv, 1);
if(string_is_ecb_encrypted(ciphertext_cbc, strlen(cleartext), 16))
printf("Das ist wohl ECB (ist es aber nicht!)\n");
if(string_is_ecb_encrypted(ciphertext, strlen(cleartext), 16))
printf("Das ist wohl ECB (richtig)\n");
+
/*
for(i=0;i<strlen(cleartext);i++)
printf("%c", ciphertext_cbc[i]);
*/
+ free(ciphertext);
+ free(ciphertext_cbc);
return 0;
}