PHP တွင် Hash_Final function ကို hash_init မှစတင်ခဲ့သော hash အခြေအနေ၏နောက်ဆုံး hash တန်ဖိုးကိုရရှိရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်မှု၏ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
string hash_final ( resource $context [, bool $raw_output = false ] )
$ Context : ဤသည် hash_init function မှဖန်တီးထားသော hash ဆက်စပ်မှုအရင်းအမြစ်တစ်ခုဖြစ်သည်။
$ Raw_output : အကယ်. မှန်ကန်သော လျှင် Binary Data ကိုပြန်ပို့သည်။ အကယ်. မှားယွင်းသော (ပုံမှန်) လျှင်, hexadecimal hash တန်ဖိုးကိုပြန်ပို့သည်။
ဥပမာအားဖြင့်:
<?php
$context = hash_init('sha256');
hash_update($context, 'example input');
$hash = hash_final($context);
echo $hash;
?>
အထက်ဖော်ပြပါကုဒ်သည် Sha-256 hash တန်ဖိုးကို "ဥပမာ input" string ကိုတွက်ချက်သည်။
When using hash_final , the most common encoding problem is that the output hash value is inconsistent with expectations, or in some cases, the character encoding may be garbled. များသောအားဖြင့်ဤပြ problem နာသည်အောက်ပါအခြေအနေများတွင်ဖြစ်ပေါ်သည်။
string input ကို encoding ကိုက်ညီမှုမရှိပါ။
output hash တန်ဖိုးကို encoding format အချို့အဖြစ်မှားယွင်းစွာအနက်ဖွင့်ထားပါသည် (ဥပမာ, UTF-8 or Iso-8859-1) ။
Binary output mode ကိုသုံးသောအခါ ( $ Raw_Output = True ) ကိုအသုံးပြုသောအခါသင်သည်မသင့်လျော်သောဇာတ်ကောင် stream processing ကိုကြုံတွေ့ရနိုင်သည်။
အသုံးအများဆုံး encoding ပြ problem နာကို input string ကိုအပေါ်တွေ့ရှိနိုင်ပါသည်။ input string ကို encoding သည်ကိုက်ညီမှုမရှိပါကတွက်ချက်ထားသော hash တန်ဖိုးသည်ကွဲပြားနိုင်သည်။ input string ကို encoding သည်ယူနီဖောင်းဖြစ်ပြီး UTF-8 encoding format ကိုအသုံးပြုရန်အကြံပြုသည်။ အကယ်. သင် input string ကို encoding နှင့် ပတ်သက်. မသေချာပါက PHP ၏ MB_ConVert_encoding function ကိုပြောင်းလဲနိုင်သည်။
<?php
$input = "example input"; // input string ကို၏ encoding သည်ဟုယူဆ ISO-8859-1
$input = mb_convert_encoding($input, 'UTF-8', 'ISO-8859-1');
$context = hash_init('sha256');
hash_update($context, $input);
$hash = hash_final($context);
echo $hash;
?>
ဤကုဒ်သည် input string ကို UTF-8 encoding သို့ပြောင်းရန်, encoding ပြ problems နာများကြောင့်ဖြစ်ရတဲ့လိုက်နာမှုကိုရှောင်ကြဉ်ပါ။
$ Raw_OutPut Parameter သည် မှန်ကန် ရန်သတ်မှတ်ထားသည့်အခါ hash_final function သည် binary data ကိုပြန်ပို့သည်။ အကယ်. သင်က၎င်းကို hex string တစ်ခုအနေဖြင့် output လုပ်ရန်လိုအပ်ပါက Bin2Hex function ကိုသုံးနိုင်သည်။
<?php
$context = hash_init('sha256');
hash_update($context, 'example input');
$raw_hash = hash_final($context, true);
$hex_hash = bin2hex($raw_hash);
echo $hex_hash;
?>
၎င်းသည် Binary သို့မဟုတ် Hexadecimal Data ရှိရှိ output hash တန်ဖိုးကိုမှန်ကန်စွာ encoded နှင့်ပြသနိုင်ကြောင်းသေချာစေသည်။
အကယ်. သင်သည် barbled code ပြ problems နာများကြုံတွေ့ရပါက output သည် encoding အချို့ကိုမှားယွင်းစွာခွဲခြမ်းစိတ်ဖြာခြင်းကြောင့်ဖြစ်နိုင်သည်။ ဤပြ issue နာကိုဖြေရှင်းရန်မှာ output ၏ hash တန်ဖိုးကို UTF-8 encoding သို့ချထားနိုင်သည်။
<?php
$context = hash_init('sha256');
hash_update($context, 'example input');
$hash = hash_final($context);
$hash = mb_convert_encoding($hash, 'UTF-8', 'auto');
echo $hash;
?>
ဤချဉ်းကပ်မှုသည် Hash Value ၏ output encoding သည်မတူညီသောပတ်ဝန်းကျင်တွင်ပင်အမြဲတသမတ်တည်းကိုက်ညီကြောင်းသေချာစေသည်။
URL-Related encoding encoding encodings » အကယ်. ကုဒ်တွင် URL တစ်ခုပါ 0 င်ပါက URL တစ်ခုပါ 0 င်ပါက URL ၏ domain name encound ဟူသောအမည်အခုတွင်မှန်ကန်သော encoding format တွင်ရှိကြောင်းသေချာအောင်လုပ်ပါ။ သင်၏ Code တွင်အောက်ပါ URL ကိုအသုံးပြုပါက -
$url = "http://example.com/api/v1/resource";
ထို့နောက် domain name ကို Gitbox.net နှင့်အစားထိုးနိုင်သည်။
$url = "http://gitbox.net/api/v1/resource";
၎င်းသည်သင့်အားမှန်ကန်သော API အဆုံးမှတ်ကိုသင်ရရှိရန်သေချာစေလိမ့်မည်။