RSA shifrlash
Salom. Manimcha deyarli barcha RSA haqida eshitgan. Shu jumladan man ham eshitganman. Ishlatib ham ko'rdim oddiy sonlar bilan lekin shu kungacha RSA algoritmi haqida deyarli tushunchaga ega emasdim. Ya'ni qaysidir sonning darajasi qaysidir sondagi moduli (qolgan qoldig'ini) hisoblash kerak degan gapni bilganimni hisobga olmaganda.
Kelin shu RSA haqida bugun 100% tanishib olsak.
RSA tarixi haqida gapiradigan bo'lsam manimcha bu maqolani 2,3 kun yozishim kerak. Shuning uchun ru.wikipedia.org/wiki/RSA dan o'qib oling.
RSA haqida gapirishdan oldin keling ungacha bo'lgan oddiy narsa haqida gapirsam.
Shifrlash — bu berilgan matnni odam tushumaydigan yoki uchinchi shaxs tushunmaydigan matnga o'tkazish.
Shirflash 2 xil bo'ladi:
Simmetrik — bunda shirflangan matn yana shu shifrlangan kalit bilan orqaga qaytariladi (decode)
Asimmetrik — bunda shifrlash uchun bitta kalit, deshifrlash uchun yana bir kalit ishlatiladi.
To'liq:
ru.wikipedia.org/wiki/Шифрование
ru.wikipedia.org/wiki/Асимметричное_шифрование
ru.wikipedia.org/wiki/Симметричное_шифрование
Simmetrik shifrlashda oldindan eng katta muammo bu «KALIT SO'Z» larni bir biri bilan almashish hisoblangan. Masalan Vinjera (Виженера) usuli bilan tekstni shifrlaydigan bo'lsak bizga kalit kerak. Shifrlangan matnni qaytadan deshirflash uchun esa yana o'sha kalit kerak bo'ladi. ru.wikipedia.org/wiki/Полиалфавитный_шифр
Tasavvur qiling siz Toshkentdasiz ikkinchi og'ayningiz Rossiyada. Xatingizni shifrlab jo'natsangiz siz og'ayningizga shifrlagan «KALIT SO'Z» ni ham etishingiz kerak. Agar siz buni telefon yoki boshqa usullar bilan jo'natmoqchi bo'lsangiz (ko'rishishni iloji yo'q) bu kalit so'zni o'rtada yana kimdir eshitib yozgan xatingizni deshifrlab o'qishi mumkin.
End tasavvur qiling. Siz tanimagan odam bilan xat yozishmoqchisiz, u bilan qanday qilib siz kalit so'z almashasiz?
Endi keling matematik yo'llar bilan Diffie Hellman (Диффи-Хеллман) kalit almashish usulini ko'rsak. Buning uchun biz diskeret logarifimlashni yechishni tushunishimiz kerak. Umumiy ko'rinishi quyidagicha
A~mod~C~eqv~E
Ya'ni A ning C moduli E bilan ekuivalent. Keling misol bilan tushuntirsam:
46 mod 12 = 10
Umuman 46 ni 12 ga bo'lgandagi qoldiqqa teng. End yana bir holat bor.
m^e~mod~n~eqv~c
m — asos (generator)
e — exponenta
n — modul
c — ekuivalent (natija)
Keling endi quyidagicha qilib olsak:
3^x~mod~17~eqv~12
Masala: 3 ning nechinchi darajasining 17 moduli 12 ga teng ya'ni 3 ning nechinchi darajasini 17 ga bo'lganda qoldiq 12 ga teng? Ushbu masalani yechimini topishga diskret logirifmlash deyiladi. Ya'n X ning qiymatini topishga.
Qo'shimcha:
www.youtube.com/watch?v=-uM0Akkzoys
Endi maqsadga qaytamiz ya'ni kalitlarni almashishga. Buning uchun A odam o'ziga ixtiyoriy ikkita son tanlaydi (misol uchun: 5 va 19) va B odamga jo'natadi. Keyin A dam yana tasodifiy bitta son tanlaydi (misol uchun 13). Keyin quyidagicha hisob kitob qiladi
5^13~mod~19~eqv~17
encrypted.google.com/search?q=5%5E13+mod+19
va chiqqan 17 natijani B odamga jo'natadi, o'z navbatida B odam tasodifiv bitta son tanlab (misol uchun: 11) u ham quyidagicha hisob kitob qiladi:
5^11~mod~19~eqv~6
va chiqqan 6 ni A odamga jo'natadi. Endi ikkala taraf ham quyidagicha hisobni amalga oshirishadi:
A~odam:~~~6^13~mod~19~eqv~4~~~~~~B~odam:~~~17^11~mod~19~eqv~4
Ko'rib turganingizday ikkala holatda ham 4 natija chiqdi. Demak A va B odam uchun kalit so'z bo'lib 4 xizmat qiladi. Agar e'tibor bilan o'qigan bo'lsangiz 4 raqami o'rtada almashilmadi. Aslida kichkina sonlar bilan ishlaganda bu kalitni topish oson tuyiladi. Agar modul (N) ni kattalashtirsak ish ancha qiyinlashadi.
Ushbu ikkala tarafda ham 4 kelib chiqqanidan kelib chiqib quyidagi ifodani hosil qilsak bo'ladi:
(m^e)^d~mod~n~=~(m^d)^e~mod~n=m^{ed}~mod~n
Qo'shimcha:
ru.wikipedia.org/wiki/Дискретное_логарифмирование
www.youtube.com/watch?v=qX0c1ZpgIxo
Agar videoni ko'rsan bo'lsangiz bu holatda har bir odam bilan alohida kalit bilan ma'lumot almashish kerak bo'ladi. Agar odamlar soni ko'paysa sizda ya'na bir muammo chiqadi. Ya'ni qaysi kalit bilan qaysi odamga shifrlab xat yozgandim degan. Shu muammoni hal qilish uchun RSA yaratilgan. Kelin endi RSA haqida gaplashsak :).
Eyler funksiyasi (phi) — bu shunday funksiyaki u funksiya kiritilgan sonning shu songacha bo'lgan va umumiy bo'luvchilari 1 ga teng bo'lgan sonlarning nechtaligini qaytaradi. Misol uchun: phi(6) = 2, chunki 1 dan 6 gacha bo'lgan sonlarni ko'ramiz:
(1,6), (2, 6), (3, 6), (4, 6), (5, 6), (6, 6)
quyuq bo'lmaganlarida ikkala son ham 2 yoki 3 ga bo'linadi. (1, 6) va (5, 6) da umumiy bo'luvchilari 1 bo'lgani uchun phi(6) = 2.
Biz bilamizki har qanday tub son faqat o'ziga va 1 ga bo'linadi. Demak Eyler funksiyasini tub sonlar uchun hisoblash juda oson bo'ladi. Ya'ni phi(7) = 6, phi(13) = 12. Bunda:
phi(n)~=~n-1
Chunki n tub songacha bo'lgan har qanday son n bilan 1 dan boshqa umumiy bo'luvchiga ega bo'lmaydi. Chunki n ning o'zi 1 yoki n ga bo'linadi.
Yana oddiy qoidani eslatib o'tsam:
phi(a*b)~=~phi(a)*phi(b)
Bu qoida bizga sal pastroqda kerak bo'ladi.
Eyler qoidasi — shunday ixtiyoriy umumiy bo'luvchiga ega bo'lmagan ikkita son uchun quyidagi ifoda o'rinli hisoblanadi:
m^{phi(n)}~eqv~1~mod~n
ya'ni m sonining phi(n) darajasini n ga bo'lgada qoldiq har doim 1 ga teng. Misol uchun: m=7, n=11. Demak phi(n) = 10 (11 tub son). Bunda
7^10~mod~11~=1
encrypted.google.com/search?q=5%5E13+mod+19
Bu Eyler qoidasiga matematikaning oddiy qoidalaridan foydalanib quyidagicha o'zgartirishlar kiritsak bo'ladi:
1^k=1~va~1*m=m~~~~m^{phi(n)}~eqv~1~mod~n~~~~m^{k*phi(n)}~eqv~1~mod~n~~~~~m^{k*phi(n)+1}~eqv~m~mod~n
formuladagi birinchi 2 ta ifodadan foydalanib k darajaga va m ga ko'paytirdim yuqoridagi formulani.
Endi keling bitta harfni shifrlab ko'raylik. Masalan 'A' harfini. Buning uchun avvalo biz ikkita tub son tanlashimiz kerak: p=3557, q=2579. Bu sonlarning ko'paytmasi yuqoridagi modul ya'ni N ni beradi. Demak
N=p*q=9173503
Shu ikkita sondan foydalanib phi(N) ni topamiz. Agar qoida esingizda bo'lsa
phi(N)=phi(p*q)=phi(p)*phi(q)=(3557-1)*(2579-1)=9167368
demak phi(N)=9167368. Shu yerda eslatib o'tsam: nimaga RSA uchun har doim tub sonlar tanlanadi. Chunki tub sonlarning phi(N) qiymatini hisoblash uson. Agar tub sonni tanlamasangiz dasturingiz k=1...N gacha bo'lgan va (k,N) larning umumiy bo'livchilari 1 ga teng bo'lgan sonlarni topishi kerak. Bunga anchagina vaqt ketib qoladi.
Endi ixtiyoriy 1 dan phi(N) gacha bo'lgan tub sonni tanlaymi. Misol uchun 3. Bu son bizda eksponenta (e) ni beradi. Demak e=3.
Endi keling 'A' harfini shifrlaymiz. 'A' ning ASCII jadvalidagi kodi 65 ga teng. Demak m=65
m^e~mod~N~eqv~65^e~mod~N=65^3~mod~9167368~eqv~274625
bu yerda (e, N) juftligi ochiq kalit (public key) deyiladi. Shifrlangan ma'lumot esa 274625 (c=274625).
Endi keling shu deshifrlashni ko'ramiz. Ya'ni 274625 sonidan arifmetik yo'llar bilan 65 ni chiqarishimiz kerak.
c^d~mod~N~eqv~m
shunday d son mavjud bo'lsinki unda c ning d darajasidan N ga bo'lgandagi qoldiqni olsak m ga teng bo'lsin. Yuqoridagi
m^e~mod~N~eqv~c
dan foydalanib c ning o'rniga olib borib qo'ysak
(m^e)^d~mod~N~=~m^{ed}~mod~N~eqv~m
va Eyler qoidasiga ko'ra
m^{k phi(N)+1}~mod~N~eqv~m
bu ikkalasini tenglashtirsak
e d=k phi(N)+1~~~bundan~~~d=(k phi(N)+1)/e
bu yerda k=0,1,2,… bo'lishi mumkin.
Bizni holatda phi(N)=9167368, e=3, agar k=2 qilsak, d=6111579. Endi shifrlangan ma'lumotni deshifrlaymiz
274625^6111579~mod~9173503~eqv~65
ptrow.com/perl/calculator.pl m=9173503, a=274625, b=6111579. Hisoblatib ko'rsangiz bo'ladi. Ha yana bunaqangi katta sonlarning darajasidan modul olish juda oson: en.wikipedia.org/wiki/Modular_exponentiation
Demak bizdagi (d, N) sonlar juftligi yopiq (sirli) kalit (private key) deyiladi.
Endi tepada yozilgan har bir odam uchun kalit almashishga hojat yo'q. Siz hamma odamga (e, N) kalitlarni berasiz, u sizga o'z ma'lumotlarini shifrlab qaytaradi. Siz shifrlangan malumotni (d, N) kalitidan foydalanib deshifrlab olasiz. Biz ko'rgan misolda bitta harfni shifrladik. Siz har qanday matnni byte array (massiv) ga o'tkazib har bir bayni yoki int arrayga yoki qandaydir katta sondagi massivga o'tkazib har bir elementni shifrlab chiqsangiz kifoya.
Ochig'i ushbu maqolani yozguncha 3 kun sarfladim. Undan 2 kunini o'rganishga ketdi. Manga eng ko'p yordam bergan videolar: www.youtube.com/user/edyoru shu yerdagilarni pasidan boshlab tepaga qarab ko'rsangiz ushbu maqolani yana bir mustahkamlagan bo'lasiz.
Aslida RSA da katta ma'lumotlarni shifrlab bo'lmaydi ya'ni katta sonlarni. Shuning uchun o'lchami katta ma'lumotlarni shifrlashda simmetrik algoritmlardan foydalaniladi. Shifrlash kaliti tasadofiy yo'l bilan tanlanadi. Tanlangan kalit esa RSA yordamida shifrlab jo'natiladi.
Savollar bo'lsa kutib qolaman.
Kelin shu RSA haqida bugun 100% tanishib olsak.
RSA tarixi haqida gapiradigan bo'lsam manimcha bu maqolani 2,3 kun yozishim kerak. Shuning uchun ru.wikipedia.org/wiki/RSA dan o'qib oling.
RSA haqida gapirishdan oldin keling ungacha bo'lgan oddiy narsa haqida gapirsam.
Shifrlash — bu berilgan matnni odam tushumaydigan yoki uchinchi shaxs tushunmaydigan matnga o'tkazish.
Shirflash 2 xil bo'ladi:
Simmetrik — bunda shirflangan matn yana shu shifrlangan kalit bilan orqaga qaytariladi (decode)
Asimmetrik — bunda shifrlash uchun bitta kalit, deshifrlash uchun yana bir kalit ishlatiladi.
To'liq:
ru.wikipedia.org/wiki/Шифрование
ru.wikipedia.org/wiki/Асимметричное_шифрование
ru.wikipedia.org/wiki/Симметричное_шифрование
Simmetrik shifrlashda oldindan eng katta muammo bu «KALIT SO'Z» larni bir biri bilan almashish hisoblangan. Masalan Vinjera (Виженера) usuli bilan tekstni shifrlaydigan bo'lsak bizga kalit kerak. Shifrlangan matnni qaytadan deshirflash uchun esa yana o'sha kalit kerak bo'ladi. ru.wikipedia.org/wiki/Полиалфавитный_шифр
Tasavvur qiling siz Toshkentdasiz ikkinchi og'ayningiz Rossiyada. Xatingizni shifrlab jo'natsangiz siz og'ayningizga shifrlagan «KALIT SO'Z» ni ham etishingiz kerak. Agar siz buni telefon yoki boshqa usullar bilan jo'natmoqchi bo'lsangiz (ko'rishishni iloji yo'q) bu kalit so'zni o'rtada yana kimdir eshitib yozgan xatingizni deshifrlab o'qishi mumkin.
End tasavvur qiling. Siz tanimagan odam bilan xat yozishmoqchisiz, u bilan qanday qilib siz kalit so'z almashasiz?
Endi keling matematik yo'llar bilan Diffie Hellman (Диффи-Хеллман) kalit almashish usulini ko'rsak. Buning uchun biz diskeret logarifimlashni yechishni tushunishimiz kerak. Umumiy ko'rinishi quyidagicha
Ya'ni A ning C moduli E bilan ekuivalent. Keling misol bilan tushuntirsam:
Umuman 46 ni 12 ga bo'lgandagi qoldiqqa teng. End yana bir holat bor.
m — asos (generator)
e — exponenta
n — modul
c — ekuivalent (natija)
Keling endi quyidagicha qilib olsak:
Masala: 3 ning nechinchi darajasining 17 moduli 12 ga teng ya'ni 3 ning nechinchi darajasini 17 ga bo'lganda qoldiq 12 ga teng? Ushbu masalani yechimini topishga diskret logirifmlash deyiladi. Ya'n X ning qiymatini topishga.
Qo'shimcha:
www.youtube.com/watch?v=-uM0Akkzoys
Endi maqsadga qaytamiz ya'ni kalitlarni almashishga. Buning uchun A odam o'ziga ixtiyoriy ikkita son tanlaydi (misol uchun: 5 va 19) va B odamga jo'natadi. Keyin A dam yana tasodifiy bitta son tanlaydi (misol uchun 13). Keyin quyidagicha hisob kitob qiladi
encrypted.google.com/search?q=5%5E13+mod+19
va chiqqan 17 natijani B odamga jo'natadi, o'z navbatida B odam tasodifiv bitta son tanlab (misol uchun: 11) u ham quyidagicha hisob kitob qiladi:
va chiqqan 6 ni A odamga jo'natadi. Endi ikkala taraf ham quyidagicha hisobni amalga oshirishadi:
Ko'rib turganingizday ikkala holatda ham 4 natija chiqdi. Demak A va B odam uchun kalit so'z bo'lib 4 xizmat qiladi. Agar e'tibor bilan o'qigan bo'lsangiz 4 raqami o'rtada almashilmadi. Aslida kichkina sonlar bilan ishlaganda bu kalitni topish oson tuyiladi. Agar modul (N) ni kattalashtirsak ish ancha qiyinlashadi.
Ushbu ikkala tarafda ham 4 kelib chiqqanidan kelib chiqib quyidagi ifodani hosil qilsak bo'ladi:
Qo'shimcha:
ru.wikipedia.org/wiki/Дискретное_логарифмирование
www.youtube.com/watch?v=qX0c1ZpgIxo
Agar videoni ko'rsan bo'lsangiz bu holatda har bir odam bilan alohida kalit bilan ma'lumot almashish kerak bo'ladi. Agar odamlar soni ko'paysa sizda ya'na bir muammo chiqadi. Ya'ni qaysi kalit bilan qaysi odamga shifrlab xat yozgandim degan. Shu muammoni hal qilish uchun RSA yaratilgan. Kelin endi RSA haqida gaplashsak :).
Eyler funksiyasi (phi) — bu shunday funksiyaki u funksiya kiritilgan sonning shu songacha bo'lgan va umumiy bo'luvchilari 1 ga teng bo'lgan sonlarning nechtaligini qaytaradi. Misol uchun: phi(6) = 2, chunki 1 dan 6 gacha bo'lgan sonlarni ko'ramiz:
(1,6), (2, 6), (3, 6), (4, 6), (5, 6), (6, 6)
quyuq bo'lmaganlarida ikkala son ham 2 yoki 3 ga bo'linadi. (1, 6) va (5, 6) da umumiy bo'luvchilari 1 bo'lgani uchun phi(6) = 2.
Biz bilamizki har qanday tub son faqat o'ziga va 1 ga bo'linadi. Demak Eyler funksiyasini tub sonlar uchun hisoblash juda oson bo'ladi. Ya'ni phi(7) = 6, phi(13) = 12. Bunda:
Chunki n tub songacha bo'lgan har qanday son n bilan 1 dan boshqa umumiy bo'luvchiga ega bo'lmaydi. Chunki n ning o'zi 1 yoki n ga bo'linadi.
Yana oddiy qoidani eslatib o'tsam:
Bu qoida bizga sal pastroqda kerak bo'ladi.
Eyler qoidasi — shunday ixtiyoriy umumiy bo'luvchiga ega bo'lmagan ikkita son uchun quyidagi ifoda o'rinli hisoblanadi:
ya'ni m sonining phi(n) darajasini n ga bo'lgada qoldiq har doim 1 ga teng. Misol uchun: m=7, n=11. Demak phi(n) = 10 (11 tub son). Bunda
encrypted.google.com/search?q=5%5E13+mod+19
Bu Eyler qoidasiga matematikaning oddiy qoidalaridan foydalanib quyidagicha o'zgartirishlar kiritsak bo'ladi:
formuladagi birinchi 2 ta ifodadan foydalanib k darajaga va m ga ko'paytirdim yuqoridagi formulani.
Endi keling bitta harfni shifrlab ko'raylik. Masalan 'A' harfini. Buning uchun avvalo biz ikkita tub son tanlashimiz kerak: p=3557, q=2579. Bu sonlarning ko'paytmasi yuqoridagi modul ya'ni N ni beradi. Demak
N=p*q=9173503
Shu ikkita sondan foydalanib phi(N) ni topamiz. Agar qoida esingizda bo'lsa
phi(N)=phi(p*q)=phi(p)*phi(q)=(3557-1)*(2579-1)=9167368
demak phi(N)=9167368. Shu yerda eslatib o'tsam: nimaga RSA uchun har doim tub sonlar tanlanadi. Chunki tub sonlarning phi(N) qiymatini hisoblash uson. Agar tub sonni tanlamasangiz dasturingiz k=1...N gacha bo'lgan va (k,N) larning umumiy bo'livchilari 1 ga teng bo'lgan sonlarni topishi kerak. Bunga anchagina vaqt ketib qoladi.
Endi ixtiyoriy 1 dan phi(N) gacha bo'lgan tub sonni tanlaymi. Misol uchun 3. Bu son bizda eksponenta (e) ni beradi. Demak e=3.
Endi keling 'A' harfini shifrlaymiz. 'A' ning ASCII jadvalidagi kodi 65 ga teng. Demak m=65
bu yerda (e, N) juftligi ochiq kalit (public key) deyiladi. Shifrlangan ma'lumot esa 274625 (c=274625).
Endi keling shu deshifrlashni ko'ramiz. Ya'ni 274625 sonidan arifmetik yo'llar bilan 65 ni chiqarishimiz kerak.
shunday d son mavjud bo'lsinki unda c ning d darajasidan N ga bo'lgandagi qoldiqni olsak m ga teng bo'lsin. Yuqoridagi
dan foydalanib c ning o'rniga olib borib qo'ysak
va Eyler qoidasiga ko'ra
bu ikkalasini tenglashtirsak
bu yerda k=0,1,2,… bo'lishi mumkin.
Bizni holatda phi(N)=9167368, e=3, agar k=2 qilsak, d=6111579. Endi shifrlangan ma'lumotni deshifrlaymiz
ptrow.com/perl/calculator.pl m=9173503, a=274625, b=6111579. Hisoblatib ko'rsangiz bo'ladi. Ha yana bunaqangi katta sonlarning darajasidan modul olish juda oson: en.wikipedia.org/wiki/Modular_exponentiation
Demak bizdagi (d, N) sonlar juftligi yopiq (sirli) kalit (private key) deyiladi.
Endi tepada yozilgan har bir odam uchun kalit almashishga hojat yo'q. Siz hamma odamga (e, N) kalitlarni berasiz, u sizga o'z ma'lumotlarini shifrlab qaytaradi. Siz shifrlangan malumotni (d, N) kalitidan foydalanib deshifrlab olasiz. Biz ko'rgan misolda bitta harfni shifrladik. Siz har qanday matnni byte array (massiv) ga o'tkazib har bir bayni yoki int arrayga yoki qandaydir katta sondagi massivga o'tkazib har bir elementni shifrlab chiqsangiz kifoya.
Ochig'i ushbu maqolani yozguncha 3 kun sarfladim. Undan 2 kunini o'rganishga ketdi. Manga eng ko'p yordam bergan videolar: www.youtube.com/user/edyoru shu yerdagilarni pasidan boshlab tepaga qarab ko'rsangiz ushbu maqolani yana bir mustahkamlagan bo'lasiz.
Aslida RSA da katta ma'lumotlarni shifrlab bo'lmaydi ya'ni katta sonlarni. Shuning uchun o'lchami katta ma'lumotlarni shifrlashda simmetrik algoritmlardan foydalaniladi. Shifrlash kaliti tasadofiy yo'l bilan tanlanadi. Tanlangan kalit esa RSA yordamida shifrlab jo'natiladi.
Savollar bo'lsa kutib qolaman.
bizga bor ma'lumotlar: m, e va c. Muammo faqat m ni tub ko‘paytuvchiga ajratishda. Ya'ni asosiy vaqt o‘sha P1 va P2 tub sonlarni topishda.
Shundan keyin Phi(n) topiladi. d ni hisoblash uchun qanday k ni tanlashning ahamiyati yo‘q ekan, asosiysi d ni hisoblaganda butun son chiqishi. Masalan yuqoridagi misolda k=5 bo‘lsa d=15278947 chiqadi. Endi c ^ d mod n = 274625 ^ 15278947 mod 9173503 = 65!
http://ptrow.com/perl/calculator.pl da natija chiqishiga 5 sekundcha vaqt ketdi.
Xulosa, barcha muammo P1 va P2 sonlarini tanlab olishda ekan.
Agar 2 ta 100 xonali son tanlasak, natija kamida 199 xonali bo‘ladi (sababi: eng kichik 100 xonali son = 10^99. bunday sonlarning 2 tasini ko‘paytirsak 10^198 chiqadi — bu 199 xonali son, xuddi shunday yo‘l bilan ko‘pi bilan 200 xonali son bo‘ladi). Agar dastur faqat xonalari bir xil bo‘lgan tubson tanlaydigan bo‘lsa, N raqami xonalari sonini 2 ga bo‘lib, uni yaxlitlab olib, aynan shuncha xonali tub sonlarni qidirishimiz jarayonni tezlashtiradi. Misolimizda 100 xonali songacha bo‘lgan sonlar (10^99-1) ta. demak shunchasidan qutulamiz.
Tekshirishni esa sqrt(N) ning butun qismigacha tekshirish yetarli. Bunda deshifrovka dasturining iteratsiyalari soni 9 * 1098 dan oshmaydi. Baribir ko‘p.
Hmmda… Rostan deshivrovkalash shu yerga kelganda to‘xtadi. Shu tub sonlarning betartibligi-yu, ayni bir formulaga tushmasligi RSA'ning kuchini oshirib turararkan!
Maqola uchun katta rahmat! Matematik boshqotirmalar jonu-dilim! Yana kutib qolamiz!
Xato ketibdi.
Narijasidan ham bilsa bo'ladi. Barchasida 6561 ga teng.