လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP နှင့် GMP ကိုအသုံးပြုနည်း

PHP နှင့် GMP ကိုအသုံးပြုနည်း

M66 2025-06-07

Ferma ၏သီအိုရီနှင့်အရည်အသွေးစစ်ဆေးခြင်းကိုနိဒါန်း

နံပါတ်သီအိုရီနှင့် cryptography တွင် fermat ၏သီအိုရီကိုအဓိကထောက်လှမ်းရေးတွင်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသည်။ အခြေခံအယူအဆတစ်ခုမှာ - တစ်ခုကိန်းတစ်ခုလျှင် n n သည်အဓိကနံပါတ်တစ်ဖြစ်သည်။ n n နှင့် နှင့်နှစ် ဦး နှစ်ဖက်ယှဉ်ပြိုင်ကိန်းနှင့်အတူ a a , ကျေနပ်သင့်ပါတယ် a n ? 1 1 m o d ? ? n a^{n-1} \equiv 1 \mod n ။ ဤအင်္ဂါရပ်ကို အခြေခံ. ကျွန်ုပ်တို့သည်လျင်မြန်စွာဖြစ်နိုင်ခြေရှိသောအဓိကနံပါတ်ကိုစမ်းသပ်ခြင်း algorithm ကိုတည်ဆောက်နိုင်သည်။

GMP တိုးချဲ့မှုကိုနိဒါန်း

GMP (GNU Multiple Precision Commitication Library) သည်ကြီးမားသောကိန်းဂဏန်းများကိုပြုပြင်ရန်အထူးပြုသည့်စွမ်းဆောင်ရည်မြင့်မားသောသင်္ချာတွက်ချက်မှုဆိုင်ရာစာကြည့်တိုက်ဖြစ်သည်။ PHP တွင် GMP extension ကိုတိုးမြှင့်ပြီးနောက် developer များသည်၎င်းတို့ပေးသည့်လုပ်ငန်းများကို သုံး. မြှင့်တင်ခြင်း, မွမ်းမံခြင်းလုပ်ငန်းများ,

Linux System တွင် GMP extension ကို install လုပ်ရန်အောက်ပါ command ကိုသုံးနိုင်သည်။

 sudo apt-get install php-gmp

Windows တွင် Extension = PHP_GMP.DLL PHP.INI ဖိုင်တွင် PHP_GMP.DLL နှင့် 0 န်ဆောင်မှုကိုပြန်လည်စတင်ပါ။

Ferma ၏ Theorem Test Function Function ကိုအကောင်အထည်ဖော်ခြင်း

အောက်တွင်ဖော်ပြထားသော PHP နှင့် GMP အပေါ် အခြေခံ. fermat test function ကိုအသုံးပြုသည်။ ၎င်းသည်ကြီးမားသောနံပါတ်များသည်အဓိကနံပါတ်တစ်ခု၏ဖြစ်နိုင်ခြေကိုဆုံးဖြတ်ရန်အသုံးပြုသည်။

function fachest ($ n, $ k) {
    လျှင် ($ == 2) လျှင်
        စစ်မှန်ပါလိမ့်မည် // 2 သည်အဓိကနံပါတ်ဖြစ်သည်။
    IF ($ n <2 || $ n% 2 == 0) လျှင်
        တုံ့ပြန်ပါ။ // (2) ထက်နည်းသောနံပါတ်များသည်အဓိကနံပါတ်များမဟုတ်ပါ}
    အတွက် ($ i = 0; $ i <$ ++; $ i ++)
        $ a = gmp_random_range (2, $ n - 2); // အကွာအဝေးတွင်ကျပန်းနံပါတ်များကို $ r = gmp_powm ($ a, $ n - 1, $ n); // ^ (n-1) mod n တွက်ချက်
        if (GMP_CMP ($ R, 1)! = 0) {
            တုံ့ပြန်ပါ။ // fermat onorem အခြေအနေများနှင့်မတွေ့ဆုံပါ}
    }
    စစ်မှန်ပါလိမ့်မည် // စာမေးပွဲများစွာကိုပြည့်မီခြင်း,

ဤလုပ်ဆောင်ချက်တွင် Parameter $ n သည်တရားစီရင်ရန်လိုအပ်သည့်ကြီးမားသောကိန်းတစ်ခုဖြစ်ပြီး $ K သည် ကျပန်းစမ်းသပ်မှုများဖြစ်သည်။ ရလဒ်များ၏တိကျမှန်ကန်မှုကိုပိုမိုမြင့်မားလေလေ။

စမ်းသပ်မှုဥပမာ - ကြီးမားသောနံပါတ်များကိုစစ်ဆေးပါ

လုပ်ဆောင်ချက်၏အမှန်တကယ်အကျိုးသက်ရောက်မှုကိုအောက်ပါကုဒ်များဖြင့်စစ်ဆေးနိုင်သည်။

$ n = gmp_init ("123456789098765732121"); // စာမေးပွဲနံပါတ် $ k = 10; // စမ်းသပ်မှု 10 ခုကိုလုပ်ဆောင်သည် $ ရလဒ် = fermattest ($ n, $ k);

လျှင် ($ ရလဒ်) {
    echo "ဒါနဲ့ပတ်သက်ပြီးချုပ်";
} အခြား
    Echo "Non-Prime",
}

အထက်ဖော်ပြပါဥပမာတွင်ကျွန်ုပ်တို့သည်စမ်းသပ်ခြင်းအတွက်ပိုမိုကြီးမားသောနံပါတ်ကိုရွေးချယ်သည်။ Ferma Test ၏သဘောသဘာဝပေါ် မူတည်. စမ်းသပ်မှုများစွာသည်အခြေအနေများနှင့်ကိုက်ညီပါကနံပါတ်ကို "prime" ဟုသတ်မှတ်နိုင်သည်။

အကျဉ်းချုပ်နှင့်လျှောက်လွှာဇာတ်လမ်းများ

PHP မှ GMP တိုးချဲ့မှုမှတစ်ဆင့် developer များသည် Fermat ၏ Theorem ၏အဓိကထောက်လှမ်းရေး algorithm ကိုလျင်မြန်စွာအကောင်အထည်ဖော်နိုင်သည်။ ဤနည်းလမ်းသည် Encryption system များတွင်ကြီးမားသောနံပါတ်စိစစ်ခြင်းကဲ့သို့သောကြီးမားသောနံပါတ်များကိုထိရောက်စွာစစ်ဆေးရန်လိုအပ်သည့် application scarios များအတွက်အလွန်သင့်လျော်သည်။

GMP ချဲ့ထွင်မှုစွမ်းရည်သည်ထိုထက်မကပါ။ Fermat Test အပြင်၎င်းသည်သင်္ချာ, အနှုတ်, မြှောက်ခြင်း, ကွဲပြားခြင်း, ၎င်းသည် PHP သည်ကြီးမားသောသင်္ချာဆိုင်ရာပြ problems နာများကိုကိုင်တွယ်ရန် PHP အတွက်မရှိမဖြစ်လိုအပ်သောကိရိယာတစ်ခုဖြစ်သည်။

ဆက်စပ်အကြောင်းအရာ