PHP တွင်ဒစ်ဂျစ်တယ်လက်မှတ်များသည်အချက်အလက်သမာဓိနှင့်အထောက်အထားကိုစစ်ဆေးခြင်းကိုသေချာစေရန်အရေးကြီးသောနည်းလမ်းများဖြစ်သည်။ ဒေတာ (ဆေးထည့်ခြင်း) ကိုအစာကြေ။ စာဝှက်ခြင်းဖြင့်စာဝှက်ခြင်းဖြင့် private key ဖြင့်စာဝှက်ခြင်းဖြင့်ပေးပို့သူသည်အချက်အလက်များကိုကိုယ်တိုင်ကိုယ်ကျပို့ဆောင်ခြင်းနှင့်ထုတ်လွှင့်စဉ်အတွင်းနှင့်အတူအနှောင့်အယှက်မပေးနိုင်ကြောင်းသက်သေပြနိုင်သည်။ ဒီဆောင်းပါးက Hash_final နဲ့ Opensslsl_Ssign ကိုပေါင်းစပ်ပြီးဒီဂျစ်တယ်လက်မှတ်ရေးထိုးမှုဖြစ်စဉ်ကိုအကောင်အထည်ဖော်ရန်မည်သို့ပေါင်းစပ်ရမည်ကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။
Hash_init , hash_update နှင့် hash_final အပါအ 0 င် hash အစာတန်များထုတ်လုပ်ရန်အတွက် PHP သည်လုပ်ငန်းဆောင်တာများကိုထောက်ပံ့ပေးသည်။ ဤလုပ်ဆောင်ချက်များသည် streaming operations များကိုထောက်ပံ့ပေးပြီးဖိုင်ကြီးများသို့မဟုတ်အစိတ်အပိုင်းများတွင်ကူးစက်သောအချက်အလက်များကိုလုပ်ဆောင်ရန်အတွက်သင့်တော်ပါသည်။
OpenSSL_Sign သည် datafible encryption digest ထုတ်လုပ်ရန်အချက်အလက်များကိုလက်မှတ်ရေးထိုးရန် private key ကိုအသုံးပြုသည်။ လက်မှတ်ရေးထိုးထားသောအချက်အလက်များကို public key ကို အသုံးပြု. အတည်ပြုနိုင်သည်။
ကျွန်ုပ်တို့သည်ရိုးရှင်းသောဇာတ်လမ်းတစ်ပုဒ်တွင်ပြသပါမည်။
$context = hash_init('sha256');
ဤတွင်ကျွန်ုပ်တို့သည် Sha-256 algorithm ကိုသုံးသည်။ အမှန်တကယ်လိုအပ်ချက်များအပေါ် အခြေခံ. အခြား algorithms များကိုလည်းသင်ရွေးချယ်နိုင်သည်။
$dataParts = [
'ပထမစာပိုဒ်,ဖြစ်ကောင်း uploaded ဖိုင်၏အစိတ်အပိုင်းတစ်ခုကနေ。',
'ဒုတိယစာပိုဒ်,ဖြစ်ကောင်း streaming သို့မဟုတ် logging ၏အစိတ်အပိုင်းတစ်ခု。',
'နောက်ဆုံးအပိုဒ်,ပြီးပြည့်စုံသောဒေတာပိတ်ပင်တားဆီးမှုဖွဲ့စည်း。'
];
foreach ($dataParts as $part) {
hash_update($context, $part);
}
ဤကုဒ်သည်ကြီးမားသောအချက်အလက်များ၏အပြောင်းအလဲနဲ့နည်းလမ်းကိုထည့်သွင်းပြီး ,
$finalDigest = hash_final($context, true); // မူရင်း binary format ကိုအသုံးပြုခြင်း
Signature အတွက်မူလ binary data ကိုရနိုင်အောင်ဒုတိယ parameter ကိုစစ်မှန်တဲ့အချက်ကို စစ်မှန်တဲ့ အချက်ကိုသတိပြုပါ။
$privateKey = file_get_contents('/path/to/private_key.pem');
$pkeyid = openssl_pkey_get_private($privateKey);
if (!$pkeyid) {
die('ပုဂ္ဂလိကသော့ချက်တင်ခြင်းမအောင်မြင်ပါ');
}
$signature = '';
if (!openssl_sign($finalDigest, $signature, $pkeyid, OPENSSL_ALGO_SHA256)) {
die('လက်မှတ်မအောင်မြင်ပါ');
}
openssl_free_key($pkeyid);
ဤတွင်အစာကြေငြာချက်ကို Openssl_Sign မှတဆင့် private key ကို သုံး. algorithm ကိုသတ်မှတ်သည် (Sha-256) ကိုသတ်မှတ်ထားသည်။
URLS, JSON, JSON သို့မဟုတ်အခြား binary chinary thanks များတွင်လွယ်ကူသောထုတ်လွှင့်ရန်အတွက် SIFFARE64 ကိုသင် base64 ကို encoding လုပ်နိုင်သည်။
$encodedSignature = base64_encode($signature);
echo "အဖြစ်လက်မှတ်ရေးထိုးခဲ့သည်: " . $encodedSignature;
လက်မှတ်ကိုအတည်ပြုရန်နှင့်သက်ဆိုင်သော public key နှင့် openssll_Verify ကို အသုံးပြုနိုင်သည်။
$publicKey = file_get_contents('https://gitbox.net/keys/public_key.pem');
$pubkeyid = openssl_pkey_get_public($publicKey);
$isValid = openssl_verify($finalDigest, base64_decode($encodedSignature), $pubkeyid, OPENSSL_ALGO_SHA256);
if ($isValid === 1) {
echo "လက်မှတ်အတည်ပြုအောင်မြင်မှုအောင်မြင်ခဲ့သည်";
} elseif ($isValid === 0) {
echo "မမှန်ကန်သောလက်မှတ်";
} else {
echo "အတည်ပြုခြင်းလုပ်ငန်းစဉ်တွင်အမှားတစ်ခုဖြစ်ပွားခဲ့သည်";
}
Openssl_Sign ဖြင့် Hash_init / hash_update / hash_final ကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် opensssl_sign နှင့်အတူပိုမိုလုံခြုံသောဒစ်ဂျစ်တယ်လက်မှတ်ရေးယန္တရားကိုအကောင်အထည်ဖော်နိုင်သည်။ ဤနည်းလမ်းသည်အချက်အလက်ကြီးများကိုအစိတ်အပိုင်းများတွင်လုပ်ဆောင်ရန်လိုအပ်သည့်အခြေအနေများအတွက်အထူးသဖြင့်သင့်လျော်သည်။ ပုဂ္ဂလိကသော့များ၏လုံခြုံရေးကိုကာကွယ်ရန်နှင့်ထုတ်လွှင့်နေစဉ်အချက်အလက်များကိုလက်မှတ်ရေးထိုးရန်မမေ့ပါနှင့်။