From aee2d7ffd05212dec25f6b8886e5f9cc74477a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= Date: Thu, 9 Apr 2026 12:20:52 +0200 Subject: [PATCH] moved rsa encryption to a function --- main.c | 61 +++++++++++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/main.c b/main.c index 9512184..60ed194 100644 --- a/main.c +++ b/main.c @@ -156,6 +156,41 @@ euklidian_result_t euklidian_algorigthm_extended(unsigned __int128 a, unsigned _ return res; } +void kinai_maradek_tetel() { + // sum(i: 1,2): Ci * Yi * Mi mod M + // M: P*Q, Mp: M/P, Mq: M/Q + // C1: c^(d mod P-1) mod P + // C2: c^(d mod Q-1) mod Q +} + +unsigned __int128 rsa_encrypt(uint64_t *m, prime_test_t *p, prime_test_t *q) { + unsigned __int128 n = p->prime * q->prime; + print_uint128(n); + printf("\n"); + + unsigned __int128 fi_n = (p->prime - 1) * (q->prime - 1); + print_uint128(fi_n); + printf("\n"); + + // 2. kulcsgeneralas + uint64_t e = 0; + do { + e = rand64(); + } while (e <= 1 && e >= fi_n && prime_test(e, p->base)); // the p and q base is used everywhere anyways, i wont pass in another arg + + 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 c; +} + int main() { uint64_t m = 0; printf("give input for m: \n"); @@ -173,33 +208,7 @@ int main() { pthread_join(thread_p, NULL); pthread_join(thread_q, NULL); - printf("\n"); - unsigned __int128 n = p.prime * q.prime; - print_uint128(n); - printf("\n"); - - unsigned __int128 fi_n = (p.prime - 1) * (q.prime - 1); - print_uint128(fi_n); - printf("\n"); - - // 2. kulcsgeneralas - uint64_t e = 0; - do { - e = rand64(); - } while (e <= 1 && e >= fi_n && prime_test(e, base)); - - 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; }