Chcę zrealizować szyfrowanie RSA 512bit, czyli zrealizować działanie:
c = t^e mod n.
c - zaszyfrowane dane
t - dane do szyfrowania
e - wykładnik potęgi liczba pierwsza
n - moduł 512 bitowy
W czym jest problem? Otóż mam rozwiązanie, które realizuje szybkie potęgowanie modularne i spokojnie daje sobie radę z działaniem np 57^65537mod71 i głowię się jak przerobić poniższy kod aby można było zrobić dzielenie modulo przez n będące liczbą składającą się ze 150 cyfr (gdzieś wyczytałem, że liczba 512 bitowa ma w rozwinięciu dziesiętnym 154 cyfry, ale nie był podany wzór jak to liczyć... Nie ukrywam, że przydałby się)
Wiem że jeśli t^e będzie mniejsze od n to działanie t^e mod n = t^e
ale tak będzie, gdy t=10 i e będzie mniejsze od 150, więc trochę małe...
Mój pomysł był taki by napisać funkcję która działa na tablicy char i przy pomocy wielu odejmowań i porównywaniu otrzymanego wyniku z n będzie realizować dzielenie modulo n. Będzie to jednak bardzo nieefektywne i zajmie dużo pamięci operacyjnej... Czy istnieje jakiś sprytny algorytm którym można będzie policzyć takie rzeczy bez zbędnego zajmowania pamięci?
A może istnieje gotowa biblioteka w C szyfrująca RSA i nie wiem o jej istnieniu?
Chcę docelowo przenieść szyfrowanie RSA do atmegi 32. Może dla AVR jest gotowa biblioteka szyfrująca?
c = t^e mod n.
c - zaszyfrowane dane
t - dane do szyfrowania
e - wykładnik potęgi liczba pierwsza
n - moduł 512 bitowy
W czym jest problem? Otóż mam rozwiązanie, które realizuje szybkie potęgowanie modularne i spokojnie daje sobie radę z działaniem np 57^65537mod71 i głowię się jak przerobić poniższy kod aby można było zrobić dzielenie modulo przez n będące liczbą składającą się ze 150 cyfr (gdzieś wyczytałem, że liczba 512 bitowa ma w rozwinięciu dziesiętnym 154 cyfry, ale nie był podany wzór jak to liczyć... Nie ukrywam, że przydałby się)
Kod: C / C++
Wiem że jeśli t^e będzie mniejsze od n to działanie t^e mod n = t^e
ale tak będzie, gdy t=10 i e będzie mniejsze od 150, więc trochę małe...
Mój pomysł był taki by napisać funkcję która działa na tablicy char i przy pomocy wielu odejmowań i porównywaniu otrzymanego wyniku z n będzie realizować dzielenie modulo n. Będzie to jednak bardzo nieefektywne i zajmie dużo pamięci operacyjnej... Czy istnieje jakiś sprytny algorytm którym można będzie policzyć takie rzeczy bez zbędnego zajmowania pamięci?
A może istnieje gotowa biblioteka w C szyfrująca RSA i nie wiem o jej istnieniu?
Chcę docelowo przenieść szyfrowanie RSA do atmegi 32. Może dla AVR jest gotowa biblioteka szyfrująca?