Yordamida hal qilish uchun 55 modul 569 indeksini topishimiz kerak
Elisning maxfiy kalitini ???? topish uchun Diskret logarifmlash muammosini hal qilish uchun indekslarni hisoblash usulidan foydalaning?
Download 1.05 Mb.
|
1 2
Bog'liqLoyha ishi
- Bu sahifa navigatsiya:
- Asil Xabar nima edi
Elisning maxfiy kalitini 𝑎 topish uchun Diskret logarifmlash muammosini hal qilish uchun indekslarni hisoblash usulidan foydalaning?
Elisning maxfiy kalitini 𝑎 hisoblash usuli yordamida topish uchun biz Elisning ochiq kaliti h ning g generatoriga va p moduliga nisbatan diskret logarifm masalasini hal qilishimiz kerak . Ya'ni, g^𝑎 ≡ h (mod p) bo'ladigan 𝑎 butun sonini topishimiz kerak. Hisoblash usuli generatorning ketma-ket quvvatlarini hisoblashni o'z ichiga oladi g moduli p, biz Elisning ochiq kaliti h ga teng bo'lgan quvvatni topmagunimizcha. Ya'ni, h ga teng bo'lgan quvvatni topgunimizcha, g ^ 1 mod p, g ^ 2 mod p, g ^ 3 mod p va hokazolarni hisoblaymiz. function findSecretKey(g, h, p) { let power = 1; let table = {}; for (let i = 0; i < p-1; i++) { table[power] = i; power = (power * g) % p; } let inverse = modInverse(g, p); let y = h; for (let i = 0; i < p-1; i++) { if (table[y] != undefined) { return table[y] + i*(p-1); } y = (y * inverse) % p; } return null; } function modPow(base, exp, mod) { if (exp == 0) { return 1; } if (exp % 2 == 0) { let temp = modPow(base, exp/2, mod); return (temp * temp) % mod; } else { return (base * modPow(base, exp-1, mod)) % mod; } } function modInverse(a, m) { let m0 = m; let y = 0, x = 1; if (m == 1) { return 0; } while (a > 1) { let q = Math.floor(a / m); let t = m; m = a % m, a = t; t = y; y = x - q * y; x = t; } if (x < 0) { x += m0; } return x; } let h = 234; let g = 5; let p = 373; let a = findSecretKey(g, h, p); console.log("Alice's secret key",[a] ); U shbu misolda biz hisoblash usuli yordamida findSecretKey Elisning maxfiy kalitini hisoblash funktsiyasini aniqlaymiz. Funktsiya uchta argumentni oladi: g generator, h Elisning ochiq kaliti va p modul. Funktsiya 𝑎 qiymatini g^𝑎 ≡ h (mod p) sifatida qaytaradi yoki null agar bunday qiymat mavjud bo'lmasa.
Shuningdek, biz bazaning modulli darajali koʻrsatkichini maʼlum modul boʻyicha maʼlum modul koʻrsatkichiga va berilgan modulga modulli teskari sonni hisoblash modPow funksiyasini aniqlaymiz.modInverse
Keyin biz Elisning maxfiy kalitini topish uchun ushbu funksiyalardan foydalanamiz 𝑎. Biz h, g va p qiymatlarini mos ravishda ElGamal tizimining ochiq kalitiga, generatoriga va moduliga o'rnatamiz. Keyin dan foydalanamiz findSecretKey funktsiyasi
Asil Xabar nima edi? ElGamal kriptotizimi uchun hisoblash usulidan foydalangan holda 𝑎 Elisning maxfiy kalitini topish va keyin shifrlangan matnning shifrini ochish va asl xabarni tiklash uchun ushbu kalitdan foydalanish uchun JavaScript- da misol keltiramiz : function findSecretKey(g, h, p) { let power = 1; let table = {}; for (let i = 0; i < p-1; i++) { table[power] = i; power = (power * g) % p; } let inverse = modInverse(g, p); let y = h; for (let i = 0; i < p-1; i++) { if (table[y] != undefined) { return table[y] + i*(p-1); } y = (y * inverse) % p; } return null; } function modPow(base, exp, mod) { if (exp == 0) { return 1; } if (exp % 2 == 0) { let temp = modPow(base, exp/2, mod); return (temp * temp) % mod; } else { return (base * modPow(base, exp-1, mod)) % mod; } } function modInverse(a, m) { let m0 = m; let y = 0, x = 1; if (m == 1) { return 0; } while (a > 1) { let q = Math.floor(a / m); let t = m; m = a % m, a = t; t = y; y = x - q * y; x = t; } if (x < 0) { x += m0; } return x; } let h = 234; let g = 5; let p = 373; let ciphertext = [86, 110]; let a = findSecretKey(g, h, p); let c1 = ciphertext[0]; let c2 = ciphertext[1]; let s = modPow(c1, a, p); let m = (c2 * modInverse(s, p)) % p; console.log("Asl xabar: " ,[m]); Ushbu misolda biz hisoblash usuli yordamida findSecretKey Elisning maxfiy kalitini hisoblash funktsiyasini aniqlaymiz. Shuningdek, biz mos ravishda modulli darajani va modulli teskari ni hisoblash uchun modPow va funksiyalarini aniqlaymiz .modInverse
Biz h, g va p qiymatlarini mos ravishda ElGamal tizimining ochiq kalitiga, generatoriga va moduliga o'rnatamiz. findSecretKey Keyin funksiyadan Elisning maxfiy kalitining qiymatini hisoblash uchun foydalanamiz 𝑎.
Biz jo'natuvchi tomonidan yuborilgan xabar Elisning ochiq kaliti (h, p, g) yordamida shifrlangan deb taxmin qilamiz va natijada olingan shifrlangan matn massivda saqlanadi ciphertext . Shifrlangan matn massividan c1 va c2 qiymatlarini chiqaramiz. Biz s = c1^𝑎 mod p ni hisoblaymiz, bu xabarni shifrlash uchun ishlatiladigan umumiy maxfiy kalit . Keyin biz s modulining modulli teskarisini hisoblaymiz va uni shifrlangan matnning ikkinchi komponentiga ko'paytiramiz va asl xabarni tiklaymiz.
Ushbu kodning chiqishi asl xabarning qiymati bo'lib, bu misolda 42 ga teng. Download 1.05 Mb. Do'stlaringiz bilan baham: |
1 2
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling