|
O'zbekiston respublikasi raqamli texnologiyalar vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti loyiha ishi Guruh: 13-21 Bajardi: Rahmonaliyev Toirjon Mahmudov Mohirjon Numonov Muxiddin Rustamov Farrux
|
bet | 10/10 | Sana | 16.12.2023 | Hajmi | 363,4 Kb. | | #120246 |
int p = 2;
int q = 1048581;
int[] factors = { 2, 3, 7, 17, 19, 37, 163, 263, 433, 683 };
int[] exponents = new int[factors.Length];
int[] congruences = new int[factors.Length];
int x = 0;
for (int i = 0; i < factors.Length; i++)
{
exponents[i] = (int)Math.Pow(factors[i], (p - 1) / factors[i]);
// ...
}
4. Har bir faktor uchun kongruensiyani topish uchun sikl yuritiladi. Bu, nuqtalar Q_x va Q_y uchun kongruensiyalarni topishga xizmat qiladi:
for (int i = 0; i < factors.Length; i++)
{
// ...
int Q_x_congruence = Q_x % factors[i];
int Q_y_congruence = Q_y % factors[i];
for (int j = 0; j < factors[i]; j++)
{
if ((int)Math.Pow(j, exponents[i]) % factors[i] == Q_x_congruence)
{
congruences[i] = j;
break;
}
}
}
5. Pohlig-Hellman algoritmidagi asosiy hisob-kitob qismi boshlanadi. factors ro'yxatidagi faktorlar va ularning darajalari bo'yicha sikllar yuritiladi. Diskret logarifmni topish uchun yordamchi x o'zgaruvchisi ishlatiladi:
for (int i = 0; i < factors.Length; i++)
{
int q_i = (q - 1) / factors[i];
int y_i = 1;
for (int j = 0; j < factors.Length; j++)
{
if (j != i)
{
// ...
y_i = (y_i + t * exponent) % factors[i];
}
}
int factor_i = (int)Math.Pow(factors[i], exponents[i]);
x += y_i * (q / factor_i) % q;
}
6. Natijada topilgan diskret logarifm log_P_Q hisoblanadi va ekranga chiqariladi:
int log_P_Q = x % q;
Console.WriteLine("log_P_Q: " + log_P_Q);
natijani log_P_Q o'zgaruvchisida topasiz. Ushbu dastur berilgan elliptik egri va nuqtalar uchun diskret logarifmni topadi Pohlig-Hellman algoritmi yordamida.
|
|
Bosh sahifa
Aloqalar
Bosh sahifa
O'zbekiston respublikasi raqamli texnologiyalar vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti loyiha ishi Guruh: 13-21 Bajardi: Rahmonaliyev Toirjon Mahmudov Mohirjon Numonov Muxiddin Rustamov Farrux
|