RSA алгоритмінің реализациясы C#

Бағдарламалау
RSA ақпаратты шифрлеуде және қолтаңба қоюда да қатар қолданылатын ең алғашқы жүйелердің бірі. Оның алгоритмі үлкен бүтін сандарды факторизациялаудың қиындығына негізделген. Толығырақ Википедияда

Бүгін сол RSA-ның C# тіліндегі реализациясын жасап көреміз. Пікірлерде қосылып отырсаңыздар болады)

Қысқаша:
  1. p және q кездейсоқ үлкен жай сандар таңдалады.(Мысалға, 1024 биттік)
  2. n =p*q — модулі есептеледі
  3. f(n)=(p-1)*(q-1) — n cанынан Эйлер функциясының мәні есептеледі
  4. e — public exponent, мұндағы 1<e<f(n), f(n)-мен өзара жай сан болуы тиіс
  5. d — private exponent, мұндағы d*e=1 mod f(n). Евклидтің кеңейтілген алгоритмімен есептеледі
  6. {e,n} жұбы — RSA ашық кілті
  7. {d,n} жұбы — RSA жабық кілті

Мәселелер:
  1. C#-та 2^1024 шамасындағы санды қамитын диапазондағы тип жоқ. Сондықтан, ондай диапазондағы сандардың мәнін сақтап, олармен қажетті математикалық амалдарды орындайтын жаңа класс құру керек болады. — BigNumbersOperation
  2. 1024 биттік кездейсоқ жай санды генерациялайтын метод

Жоғарыда айтылып кеткен BigNumbersOperation класының коды өте көп болып кеткендіктен, жаңа постқа жариялауды эөн көрдім.

7 пікір

avatar
Шифрлеу теориясында әбден қинаған алгоритмдеодің бірі ғой… Қаншама адам «лето»-ға қалған еді...)))
avatar
Криптографияның магистрда кездесетінін де білмеппіз ғой))
avatar
Биз казыр осыларды отип жатырмыз, ширкин осыларды жаксы билетин мугалим болса гой а не тек ананы исте мынаны исте деп койып журе бермейтин. Шын уйреткиси келетин мугалим…
avatar
ЕНУ ма? Алгебра және геометрия кафедрасында Алтынгүл Сериковна деген апай бар… Алгоритмдерін жақсы біледі және жақсы түсіндіреді…
avatar
Кай такырыптарды тусинбей жатырсыздар?
avatar
RSA-ди тусинбейтин неси бар, буквально 3-4 формула гана колданылады. Букил проблема улкен сандармен жумыс истегенде болады на самом деле.
avatar
Қосу оператор кез келген сан үшін жасап қойдым.
Тек қана тіркелген және авторизациядан өткен қолданушылар пікір қалдыра алады.