လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> breakpoint အပေါ်ဖိုင်စဉ်ဆက်မပြတ်ထုတ်လွှင့်ခြင်း၏ hash သမာဓိစစ်ဆေးအတည်ပြုခြင်း

breakpoint အပေါ်ဖိုင်စဉ်ဆက်မပြတ်ထုတ်လွှင့်ခြင်း၏ hash သမာဓိစစ်ဆေးအတည်ပြုခြင်း

M66 2025-05-27

ဖိုင်လွှဲပြောင်းခြင်းသို့မဟုတ်ဒေါင်းလုပ်လုပ်ခြင်း, အထူးသဖြင့်ကြီးမားသောဖိုင်များ, ကြားဖြတ်နှောင့်ယှက်မှုများမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ဖိုင်ပေါင်းစည်းမှုကိုသေချာစေရန်ဖိုင်များကိုဖိုင်များလွှဲပြောင်းနေစဉ်ဖိုင်များကိုများသောအားဖြင့် hash နှင့်အတည်ပြုသည်။ PHP သည်အစွမ်းထက်သော hashing function ကိုထောက်ပံ့ပေးပြီး hash_update_stream function သည်သူတို့ထဲမှတစ်ခုဖြစ်သည်။ ၎င်းသည်ကြီးမားသောဖိုင်များ၏ hash တွက်ချက်မှုများကိုကိုင်တွယ်ရန်အထူးသဖြင့် breakpoint စဉ်ဆက်မပြတ်ဖိုင်များကိုစစ်ဆေးခြင်းအတွက်သင့်လျော်သည်။

ဤဆောင်းပါးသည်ဖိုင်များအားသမာဓိစောင့်သိမှုစိစစ်ရေးကိုအကောင်အထည်ဖော်ရန် Hash Hash သမာဓိစစ်ဆေးမှုကိုအကောင်အထည်ဖော်ရန် Files Instessions Insolvify Insolutify in download လုပ်ရန်သေချာစေရန်မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ hash_update_stream function ကဘာလဲ။

Hash_update_Stream function သည် PHP ရှိ function တစ်ခုဖြစ်ပြီး stream အချက်အလက်များကိုစာဖတ်ခြင်းလုပ်ငန်းစဉ်တွင် Hash တန်ဖိုးများကိုတွက်ချက်သည်။ hash_update နှင့်မတူဘဲ, အဆုံးစွန်သောဒေတာတစ်ခုလုံးကိုတစ်ချိန်တည်းတွင်မှတ်ဉာဏ်ထဲသို့ 0 င်ရောက်ရန်လိုအပ်သည်။ Hash Collections အတွက်ဖိုင်များစီးဆင်းမှုကိုတဖြည်းဖြည်းဖတ်နိုင်သည်။

 bool hash_update_stream ( resource $context , resource $stream [, int $length ] )
  • $ Context : များသောအားဖြင့် hash_init အားဖြင့်ဖန်တီးသော hash အရင်းအမြစ်။

  • $ stream : များသောအားဖြင့် fopen မှတဆင့်ရရှိသော file stream အရင်းအမြစ်။

  • $ အရှည် - ဖတ်ရမည့် Bytes အရေအတွက်မှာပုံမှန်အားဖြင့် 8192 bytes ဖြစ်သည်။

2 ။ breakpoint မှာဖိုင်စဉ်ဆက်မပြတ်ထုတ်လွှင့်ခြင်း၏ hem စိစစ်အတည်ပြု

ဖိုင်လွှဲပြောင်းမှုကာလအတွင်း, ဂီယာအဆက်ဖြတ်တောက်မှုအဆက်ပြတ်သွားလျှင်, breakpoint convertion ယန္တရားသည်ဆက်နွယ်မှုအနေအထားကနေ ဆက်. ဒေါင်းလုပ်လုပ်လိမ့်မည်။ breakpoint စဉ်ဆက်မပြတ်ကူးစက်ပြီးနောက်ဖိုင်သမာဓိကိုအတည်ပြုရန်ဖိုင်၏ hash တန်ဖိုးကိုများသောအားဖြင့်ဆာဗာဘက်တွင်တွက်ချက်သည်နှင့် client မှကူးစက်သော hash တန်ဖိုးနှင့်နှိုင်းယှဉ်လျှင်။

ဖိုင်ကို Bigfile.zip ဖိုင်ကိုဆက်လက်ကူးယူရန်သင် breakpoint တစ်ခုရှိသည်ဆိုပါစို့။ Transmission Prock တွင်ဖိုင်အချို့နှင့်ဤဖိုင်ကိုအနှောင့်အယှက်ဖြစ်စေနိုင်သည်ကိုစစ်ဆေးရန်လိုအပ်သည်ဆိုပါစို့။ အောက်ပါတို့သည် Hash သမာဓိစစ်ဆေးခြင်းကိုအကောင်အထည်ဖော်ရန်အဆင့်များဖြစ်သည်။

3 ။ နမူနာကုဒ်: ဖိုင်သမာဓိကိုအတည်ပြုရန် hash_update_stream ကို သုံးပါ

ကျွန်ုပ်တို့သည်ဖိုင် bigfile.zip ဖိုင်တစ်ခုကို download လုပ်ရန်လိုအပ်ပြီး breakpoint သို့ပြောင်းရွှေ့သောအခါဖိုင်၏သမာဓိကိုစစ်ဆေးရန်လိုအပ်သည်ဆိုပါစို့။ အောက်ပါကုဒ်များသည် breakpoint ဆက်လက်လုပ်ဆောင်နေစဉ် hash_update_stream function ကို အသုံးပြု. ဖိုင်တစ်ခု၏ hash ကိုမည်သို့တွက်ချက်ရမည်ကိုပြသသည်။

 <?php
// ကန ဦး hash အခြေအနေ(အသုံးပြု SHA256 algorithm)
$hashContext = hash_init('sha256');

// ဖိုင်စီးကိုဖွင့်ပါ
$fileStream = fopen('https://m66.net/bigfile.zip', 'rb');
if (!$fileStream) {
    die("ဖိုင်ကိုဖွင့ ်. မရပါ!\n");
}

// ဖိုင်၏ hash တန်ဖိုးကိုတွက်ချက်ပါ
while (!feof($fileStream)) {
    // ဖိုင်ကိုဖတ်ပြီး Hash ကိုမွမ်းမံပါ
    $data = fread($fileStream, 8192);
    hash_update_stream($hashContext, $data);
}

// နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
$fileHash = hash_final($hashContext);

// output ဖိုင်၏ hash တန်ဖိုး
echo "တင်သွင်းခြင်းSHA-256hash တန်ဖိုး:$fileHash\n";

// ဖိုင်စီးကိုပိတ်ပါ
fclose($fileStream);

// 假设已经在服务器端生成并存储了တင်သွင်းခြင်း正确hash တန်ဖိုး
$serverStoredHash = 'abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890';

// 比较本地计算的hash တန်ဖိုး与服务器存储的hash တန်ဖိုး
if ($fileHash === $serverStoredHash) {
    echo "ဖိုင်သမာဓိစစ်ဆေးခြင်းအောင်မြင်ခဲ့သည်!\n";
} else {
    echo "ဖိုင်အတည်ပြုချက်မအောင်မြင်ပါ,ဖိုင်သည်အကျင့်ပျက်ခြစားမှုသို့မဟုတ်နှောင့်ယှက်ခဲ့ကြပေမည်!\n";
}
?>

4 ။ ကုဒ်ရှင်းပြချက်

  • Hash_init : hash value ကိုထုတ်လုပ်ရန် hash context ကိုအစပြုပြီး Sha256 algorithm ကိုရွေးချယ်ပါ။

  • FOPEN : download လုပ်သည့်ဖိုင်စီးကိုဖွင့်ပါ။ ဒီမှာ https://m66.net/bigfile.zip ကို နမူနာဖိုင်လိပ်စာအဖြစ်အသုံးပြုပါ။

  • hash_update_stream ဒေတာပိတ်ပင်တားဆီးမှုအရွယ်အစားအချိန်ကိုဖတ်ပါ။ 8192 bytes ဖြစ်သည်။

  • hash_final : ဖိုင်၏နောက်ဆုံး hash တန်ဖိုးကိုရရှိသည်။

  • ဖိုင်အတည်ပြုခြင်း - တွက်ချက်ထားသည့် Hash Value ကို server ၏သမာဓိကိုစစ်ဆေးရန်ဆာဗာတွင်မှန်ကန်သော hash တန်ဖိုးကိုနှိုင်းယှဉ်ခြင်း။

5 ။ breakpoint စဉ်ဆက်မပြတ်ဂီယာဘယ်အချိန်မှာ hash အတည်ပြု

breakpoints ဆက်လက်တည်ရှိသည့်နေရာ၌ကျွန်ုပ်တို့သည်များသောအားဖြင့် "download လုပ်ထားသောအပိုင်း" hash value ကိုသိမ်းဆည်းထားလေ့ရှိပြီး, ထိုသို့ပြုလုပ်ရန် code ထဲမှ fech by file ၏ဖတ်အနေအထားကိုထိန်းချုပ်ရန် FSEEK ဖြင့်အသုံးပြုနိုင်ပြီးတွက်ချက်မှုသည်သတ်မှတ်ထားသောအနေအထားမှစတင်သည်။

 // ဖိုင်စီးဆင်းမှု pointer ကိုသတ်မှတ်ထားသောနေရာသို့သတ်မှတ်ပါ(ဥပမာအားဖြင့်, breakpoint ကိုဆက်လက်တည်ရှိရာအပိုင်း)
fseek($fileStream, $resumePosition);

ကျွန်ုပ်တို့ဆက်လက်ဒေါင်းလုဒ်ပြုလုပ်သောအခါ Resumephosition တည်နေရာမှအချက်အလက်ပိတ်ပင်တားဆီးမှုများကိုဆက်လက်ဖတ်ရှုပြီး Hash ကိုနောက်ဆုံးပေါ်မွမ်းမံခြင်း, ဖိုင်တစ်ခုလုံး၏သမာဓိကိုအတည်ပြုသည်။

6 ။ အကျဉ်းချုပ်

Hash_update_stream ကို အသုံးပြု. PHP သည်ကြီးမားသောဖိုင်များ၏ hash တန်ဖိုးကိုအထူးသဖြင့် breakpoint စဉ်ဆက်မပြတ်ထုတ်လွှင့်ခြင်းဖြင့်လွှဲပြောင်းသည့်အခါ SHP တန်ဖိုးကိုတွက်ချက်ရန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။ ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်လွှဲပြောင်းခြင်းလုပ်ငန်းစဉ်အတွင်းဖိုင်၏သမာဓိနှင့်မှန်ကန်မှုကိုသေချာစေရန်နှင့်ဖိုင်သည်အလယ်၌အဆက်ပြတ်ပြီးနောက်ဒေတာဆုံးရှုံးမှုသို့မဟုတ်အကျင့်ပျက်ခြစားမှုကိုရှောင်ရှားနိုင်သည်။

အကယ်. သင်သည် SoundPoint Pnirection ကိုထောက်ပံ့ရန်လိုအပ်သည့်ဖိုင် download သို့မဟုတ် upload system ကိုဖွင့်လှစ်နေပါက Hash Ver MStification အတွက် hash verification နှင့်ပေါင်းစပ်ပါက၎င်းသည်သင့်အားယုံကြည်စိတ်ချရသောအချက်အလက်သမာဓိအာမခံချက်ဖြင့်သင့်အားပေးလိမ့်မည်။

မကြာသေးမီ ဆောင်းပါးများ