#include "../lib/lib.h" #include "../lib/lib2.h" #include "../lib/lib3.h" #include "../lib/lib4.h" #include "../lib/lib5.h" #include int main() { // sha1 key srand(time(NULL)); char key[20]; char hex_key[40]; char *encrypted; char *msg = "Hallo verschlüssele mich bitte"; struct dh_param dh; dh_init(&dh); // 1^X is always one; so the modulo will always be one for p > 1 // g = p; p^X mod p is always 0 because its a multiple of p // g = p-1; (p-1)^X mod p; not all rest groups are used, or some // much more likely? dh.p = "8"; dh.g = "7"; int i; for(i=0;i<10000;i++) { dh_generate_secret_keys(&dh); dh_generate_public_keys(&dh); dh_get_session_key(&dh); } sha1_key_from_dh(&dh, key); hex_binary_to_string(key, hex_key, 20); //printf("key is: %s\n", hex_key); // encrypt a message with AES-CBC generate_random_bytes(iv, 16); int enc_length = aes_cbc_padded(msg, strlen(msg), &encrypted, key, iv, 1); char *hex_enc = malloc(enc_length + 16); hex_binary_to_string(encrypted, hex_enc, enc_length); //printf("encryted message: %s\n", hex_enc); }