Compare commits

...

2 Commits

Author SHA1 Message Date
ab5e2ab4cc removed sample data 2026-03-29 17:09:23 +02:00
f72b2156cb working encryption with sample data 2026-03-29 17:09:08 +02:00

28
main.c
View File

@@ -48,7 +48,7 @@ uint64_t quick_pow(uint64_t *d_binary, uint64_t a, uint64_t n, uint64_t length)
}
bool prime_test(uint64_t n, int a) {
printf("\n\nprime test: %ju\n", n);
// printf("\n\nprime test: %ju\n", n);
// Miller Rabin prime test
// choose a base: a, which should be a prime so that (n, a) = 1
// then do 2 rounds of tests provided the first one did not fail
@@ -84,10 +84,10 @@ bool prime_test(uint64_t n, int a) {
for (int i = 0; i <= r; i++) {
if (first_qp_res == n - 1) {
free(d_binary);
printf("true\n");
// printf("true\n");
return true;
} else if (first_qp_res < n - 2) {
printf("first_qp_res became smaller then n!!\n");
// printf("first_qp_res became smaller then n!!\n");
break;
} else {
first_qp_res = (uint64_t)(((unsigned __int128)first_qp_res * first_qp_res) % n);
@@ -108,9 +108,9 @@ void *prime_thread_worker(void *arg) {
do {
result_ptr->prime = rand64();
printf("\nGenerating a new prime number (%p). Candidate: ", result_ptr);
printf("%ju", result_ptr->prime);
printf("\n");
// printf("\nGenerating a new prime number (%p). Candidate: ", result_ptr);
// printf("%ju", result_ptr->prime);
// printf("\n");
} while (!prime_test(result_ptr->prime, result_ptr->base));
return NULL;
@@ -157,6 +157,10 @@ euklidian_result_t euklidian_algorigthm_extended(unsigned __int128 a, unsigned _
}
int main() {
uint64_t m = 0;
printf("give input for m: \n");
scanf("%ju", &m);
srand(time(NULL));
uint64_t base = 2;
@@ -186,8 +190,16 @@ int main() {
e = rand64();
} while (e <= 1 && e >= fi_n && prime_test(e, base));
euklidian_result_t test = euklidian_algorigthm_extended(192, 11);
printf("test lnko: %ju\n", test.lnko);
euklidian_result_t calc_d = euklidian_algorigthm_extended(fi_n, e);
__int128 d = calc_d.y;
uint64_t length = 0;
uint64_t *nyenye = dec_to_bin(e, &length);
unsigned __int128 c = quick_pow(nyenye, m, n, length);
free(nyenye);
printf("\nc: ");
print_uint128(c);
return 0;
}