DevLab

Diffie-Hellman Alqoritmi

Asan
diffie-hellmanmath
3000 ms
256 MB

Alice və Bob etibarsız bir kanal (məsələn, internet) üzərindən məxfi məlumat paylaşmaq istəyirlər. Lakin kimsənin onların sirlərini ələ keçirməməsi üçün onlar ortaq bir məxfi açar (secret key) yaratmalıdırlar. Bunun üçün onlar məşhur Diffie-Hellman açar mübadiləsi alqoritmindən istifadə edirlər.

Alqoritm aşağıdakı addımlarla işləyir:

  • Addım 0: Hər iki tərəfə əvvəlcədən ictimai (public) olan iki rəqəm verilir: bir sadə ədəd olan p və generator adlanan g.

  • Addım 1: Alice özü üçün gizli bir a açarı seçir (1 < a < p). Bob da eyni qayda ilə özü üçün gizli bir b açarı seçir.

  • Addım 2: Hər kəs özünün ictimai açarını (public key) hesablayıb qarşı tərəfə göndərir:

    Alice-in ictimai açarı:

    A = ga (mod p)

    Bob-un ictimai açarı:

    B = gb (mod p)

  • Addım 3: Alice və Bob bir-birlərinin ictimai açarlarını qəbul etdikdən sonra yekun ortaq məxfi açarı (s) hesablayırlar:

    Alice hesablayır:

    s = Ba (mod p)

    Bob hesablayır:

    s = Ab (mod p)

Riyaziyyatın möcüzəsi nəticəsində hər iki hesablama eyni nəticəni verir! İndi Alice və Bob yalnız ikisinin bildiyi ortaq s sirrini paylaşırlar.

Sizin vəzifəniz verilmiş p, g, a və b dəyərlərinə əsasən Alice-in ictimai açarını (A), Bob-un ictimai açarını (B) və onların ortaq məxfi açarını (s) hesablayan proqram yazmaqdır.

Giriş verilənləri:

Birinci sətirdə ictimai olaraq paylaşılan iki tam ədəd: p və g verilir.

İkinci sətirdə isə Alice və Bob-un gizli açarları olan iki tam ədəd: a və b verilir.

Çıxış verilənləri:

Tək bir sətirdə, aralarında boşluq olmaqla üç ədəd çap edin:

  1. Alice-in ictimai açarı (A)

  2. Bob-un ictimai açarı (B)

  3. Ortaq məxfi açar (s)

1Nümunə 1:
Giriş:
23 5 4 3
Çıxış:
4 10 18
2Nümunə 2:
Giriş:
17 3 5 5
Çıxış:
5 5 14

Məhdudiyyətlər

2 ≤ p ≤ 1000

1 ≤ g, a, b < p

REDAKTOR
Giriş edin
Giriş:
23 5 4 3
Çıxış:
4 10 18