ဖိုင်လွှဲပြောင်းခြင်းသို့မဟုတ်ဒေါင်းလုပ်လုပ်ခြင်း, အထူးသဖြင့်ကြီးမားသောဖိုင်များ, ကြားဖြတ်နှောင့်ယှက်မှုများမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ဖိုင်ပေါင်းစည်းမှုကိုသေချာစေရန်ဖိုင်များကိုဖိုင်များလွှဲပြောင်းနေစဉ်ဖိုင်များကိုများသောအားဖြင့် hash နှင့်အတည်ပြုသည်။ PHP သည်အစွမ်းထက်သော hashing function ကိုထောက်ပံ့ပေးပြီး hash_update_stream function သည်သူတို့ထဲမှတစ်ခုဖြစ်သည်။ ၎င်းသည်ကြီးမားသောဖိုင်များ၏ hash တွက်ချက်မှုများကိုကိုင်တွယ်ရန်အထူးသဖြင့် breakpoint စဉ်ဆက်မပြတ်ဖိုင်များကိုစစ်ဆေးခြင်းအတွက်သင့်လျော်သည်။
ဤဆောင်းပါးသည်ဖိုင်များအားသမာဓိစောင့်သိမှုစိစစ်ရေးကိုအကောင်အထည်ဖော်ရန် Hash Hash သမာဓိစစ်ဆေးမှုကိုအကောင်အထည်ဖော်ရန် Files Instessions Insolvify Insolutify in download လုပ်ရန်သေချာစေရန်မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
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 ဖြစ်သည်။
ဖိုင်လွှဲပြောင်းမှုကာလအတွင်း, ဂီယာအဆက်ဖြတ်တောက်မှုအဆက်ပြတ်သွားလျှင်, breakpoint convertion ယန္တရားသည်ဆက်နွယ်မှုအနေအထားကနေ ဆက်. ဒေါင်းလုပ်လုပ်လိမ့်မည်။ breakpoint စဉ်ဆက်မပြတ်ကူးစက်ပြီးနောက်ဖိုင်သမာဓိကိုအတည်ပြုရန်ဖိုင်၏ hash တန်ဖိုးကိုများသောအားဖြင့်ဆာဗာဘက်တွင်တွက်ချက်သည်နှင့် client မှကူးစက်သော hash တန်ဖိုးနှင့်နှိုင်းယှဉ်လျှင်။
ဖိုင်ကို Bigfile.zip ဖိုင်ကိုဆက်လက်ကူးယူရန်သင် breakpoint တစ်ခုရှိသည်ဆိုပါစို့။ Transmission Prock တွင်ဖိုင်အချို့နှင့်ဤဖိုင်ကိုအနှောင့်အယှက်ဖြစ်စေနိုင်သည်ကိုစစ်ဆေးရန်လိုအပ်သည်ဆိုပါစို့။ အောက်ပါတို့သည် Hash သမာဓိစစ်ဆေးခြင်းကိုအကောင်အထည်ဖော်ရန်အဆင့်များဖြစ်သည်။
ကျွန်ုပ်တို့သည်ဖိုင် 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";
}
?>
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 တန်ဖိုးကိုနှိုင်းယှဉ်ခြင်း။
breakpoints ဆက်လက်တည်ရှိသည့်နေရာ၌ကျွန်ုပ်တို့သည်များသောအားဖြင့် "download လုပ်ထားသောအပိုင်း" hash value ကိုသိမ်းဆည်းထားလေ့ရှိပြီး, ထိုသို့ပြုလုပ်ရန် code ထဲမှ fech by file ၏ဖတ်အနေအထားကိုထိန်းချုပ်ရန် FSEEK ဖြင့်အသုံးပြုနိုင်ပြီးတွက်ချက်မှုသည်သတ်မှတ်ထားသောအနေအထားမှစတင်သည်။
// ဖိုင်စီးဆင်းမှု pointer ကိုသတ်မှတ်ထားသောနေရာသို့သတ်မှတ်ပါ(ဥပမာအားဖြင့်, breakpoint ကိုဆက်လက်တည်ရှိရာအပိုင်း)
fseek($fileStream, $resumePosition);
ကျွန်ုပ်တို့ဆက်လက်ဒေါင်းလုဒ်ပြုလုပ်သောအခါ Resumephosition တည်နေရာမှအချက်အလက်ပိတ်ပင်တားဆီးမှုများကိုဆက်လက်ဖတ်ရှုပြီး Hash ကိုနောက်ဆုံးပေါ်မွမ်းမံခြင်း, ဖိုင်တစ်ခုလုံး၏သမာဓိကိုအတည်ပြုသည်။
Hash_update_stream ကို အသုံးပြု. PHP သည်ကြီးမားသောဖိုင်များ၏ hash တန်ဖိုးကိုအထူးသဖြင့် breakpoint စဉ်ဆက်မပြတ်ထုတ်လွှင့်ခြင်းဖြင့်လွှဲပြောင်းသည့်အခါ SHP တန်ဖိုးကိုတွက်ချက်ရန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။ ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်လွှဲပြောင်းခြင်းလုပ်ငန်းစဉ်အတွင်းဖိုင်၏သမာဓိနှင့်မှန်ကန်မှုကိုသေချာစေရန်နှင့်ဖိုင်သည်အလယ်၌အဆက်ပြတ်ပြီးနောက်ဒေတာဆုံးရှုံးမှုသို့မဟုတ်အကျင့်ပျက်ခြစားမှုကိုရှောင်ရှားနိုင်သည်။
အကယ်. သင်သည် SoundPoint Pnirection ကိုထောက်ပံ့ရန်လိုအပ်သည့်ဖိုင် download သို့မဟုတ် upload system ကိုဖွင့်လှစ်နေပါက Hash Ver MStification အတွက် hash verification နှင့်ပေါင်းစပ်ပါက၎င်းသည်သင့်အားယုံကြည်စိတ်ချရသောအချက်အလက်သမာဓိအာမခံချက်ဖြင့်သင့်အားပေးလိမ့်မည်။