ژ.ب ٦٢٩

چەند شێوازێک بۆ درووستکردنی وشە و ژمارەی تێکەڵ لە PHP


یەکێک لە ئەو کارانەی کە لەسەر ئینتەرنێت جێبەجێی دەکەین، درووستکردن و پاشەکەوتکردنی وشەی نهێنیی هەژمارە جیاوازەکانمانە، بۆ ئەو مەبەستەش هەموو توێژینەوەکان ئەوەیان دەرخستووە کە وەک مرۆڤ لە تەمەڵییدا تا ئەمڕۆش ژمارە و وشەی سادەی وەک ١٢٣٤٥٦ بەکار دەبەین وەک وشەی نهێنی.

لە زۆرینەی زمانەکانی پرۆگرامنووسین دا و لە ئەم بابەتەدا بەتایبەت کە پەیوەندیدارە بە زمانی PHP، ئامرازی تایبەت هەیە بۆ درووستکردنی وشەی تێکەڵ بۆ ئاسانکردنەوەی ئەو پرۆسانەی کە پێویستییان بە ئەو شێوازە وشە تێکەڵە هەیە، بۆ نموونە دانی پێشنیار بە بەکارهێنەرانی ماڵپەڕت لە کاتی خۆتۆمارکردن بۆ ئەوەی وشەی نهێنی پتەوتر هەڵبژێرن، یان لە هەر شوێنێکی دیکە کە پێویست بە Randomness/تێکەڵیی بکات.

درووستکردنی وشە و ژمارەی تێکەڵ لە PHP

تێبینی: ئەم بابەتە تەنیا بۆ تیشک خستنەسەر ئەو Function ـانەن کە لە زمانەکەدا هەن بەبێ پێویستکردن بە نووسینی کۆدی تایبەت، لە ئەم بابەتەدا چۆنیەتی درووستکردنی سیستەمی وشەی نهێنی پتەو تاوتوێ ناکرێت، لە کۆتاییدا ئەو وشە تێکەڵانەی کە درووست دەبن دەکرێت لە زۆر شوێن و پرۆژەی جیاوازدا بەکار ببرێن، کە دەگەڕێتەوە سەر کار و پێداویستی پرۆژەکەت لە ئەو کاتەدا.


Uniqid


uniqid وەک بە ناوەکەیەوە دیارە، ئایدییەکی Unique و بێ نموونە درووست دەکات لەسەر بنەمای Microsecond هەر جارێک کە بانگی دەکەیت، لە وەشانی ٤ ی پهپ ـەوە هەبووە و ئێستاش هەر ماوە.

ئەو ئایدییەی کە درووستی دەکات بریتی دەبێت لە ١٣ پیت و ژمارەی تێکەڵ، بۆ نموونە 57c426e2c9bc7 بەڵام دەتوانین بە دانانی more_entropy لەگەڵی، زۆری بکەین بۆ ٢٣ پیت و ژمارەی تێکەڵ، کە ئەنجامەکەی دەبێتە 57c4276227b974.17359872.

دەتوانین ئەو فانکشنە بەکار ببەین بۆ درووستکردنی پیتی تێکەڵ بۆ مەبەستی سادەی وەک درووستکردنی ناوی بێ نموونە و دووبارە نەبووی وێنە و فایل، بۆ نموونە لە بنکەیەکی بارکردن دا گرینگە کە دوو فایل هەمان ناویان نەبێت، ئەو کاتە دەتوانین uniqid بەکار ببەین، لە هەمان کاتدا دەتوانین Prefix ـێکی بۆ زۆر بکەین، کە شتێکی دیکە بێت، یان لەگەڵ rand تێکەڵی بکەین بۆ ئەوەی تێکەڵیی پیت و ژمارەکان پتەوتر بێت و ئەگەری دووبارە بوونەوەیان نەمێنێت.

بۆ دەستپێکردن، تەنیا دەنووسین،

<?php
echo uniqid();
?>

بۆ چالاک کردنی ٢٣ پیتیی،

<?php
echo uniqid('', true);    
?>

ئەگەر بمانەوێت Prefix، وشەیەکی لە پێشەوە بۆ زۆر بکەین، دەنووسین،

<?php
echo uniqid('webchin-', true);    
?>

ئەنجامی دەبێتە،

webchin-57c42a6940c666.59638454


Rand کە کورتکراوەی Random ـە، واتە تێکەڵ


Rand لە خۆیدا تایبەتمەندییەکی ئەوتۆی نییە جگە لە ئەوە نەبێت کە توانای درووستکردنی ژمارەی تێکەڵی هەیە لە نێوان ژمارەیەکی دەستپێک و ژمارەیەکی کۆتایی. بۆ نموومە ئەگەر بمانەوێت ٥ ژمارەی تێکەڵ لەگەڵ یەکتر بنووسرێت بەڵام لە نێوان ژمارە 10000 تا 50000 بێت، دەنووسین:

echo rand(10000,50000);

لە ئەنجامدا ٥ ژمارەی تێکەڵمان بۆ درووست دەبێت، بۆ نموونە 29542.


تێکەڵکردنی Rand و Uniqid


هیچ شتێک ڕێگر نییە لەوەی کە هەردوو Function ی Uniqid و Rand پێکەوە بنووسرێن بۆ درووستکردنی دەستەواژەیەکی تێکەڵتر لەوەی کە بە سەربەخۆیی درووستی دەکەن، دیارە ئەوە ناگەیەنێت کە هیچ تایبەتمەندییەکی زۆرتر دەبێت لە بواری پاراستنەوە و نایبێت، تەنیا ئەگەری تێکەڵتربوونی دەسەواژەکە گەورەتر دەکات کە لەوانەیە لە پرۆژەی گەورەتردا پێویست بکات.

نموونە،

<?php
echo rand(1, 99999).uniqid();    
?>

ئەنجامی دەبێتە شتێکی وەک،

8228457c42a3b5d98e


Hash / md5 / SHA


مەبەست لە وشەی Hash/هاش ئەوەیە کە ڕستەپیتی تێکەڵ درووست بکەین بەقەبارەیەکی دیاریکراو، بۆ نموونە ئەگەر بمانەوێت وشەی webchin لەسەر بنەمای md5 بکەین بە هاش، دەنووسین

echo md5(‘webchin’);

لە ئەنجامدا 154b07339134712728e7051eee1ce12c درووست دەبێت. ئەگەر لە باتی وشەی webchin هەر وشەیەکی دیکە بنووسین، ژمارەی ئەو پیتەتێکەڵانە هەر ٣٢ پیت دەبن، بەڵام لە ناوەڕۆکدا جیاواز دەبن.

کەواتە md5 بەکار دەبەین بۆ درووستکردنی وشە/ڕستەی تێکەڵ کە لە ٣٢ پیت پێکهاتبێت. پرۆسەی هاشکردن بەدیزاین دەبێت پرۆسەیەکی یەکلایی بێت، واتە کاتێک وشەی webchin دەگۆڕدرێت بۆ 154b07339134712728e7051eee1ce12c، گرینگە کە نەتوانرێت ئەو hash ـە دووبارە بە پێچەوانەوە بگۆڕدرێتەوە بۆ وشەی webchin، لە ئەو کاتەدا ئەوە دەگەیەنێت کە ئەو میکانیزمەی Hash کردن کە md5 ـە لە ئەم نموونەدا شکێندراوە و لە بواری پاراستن دا نابێت بەکار ببرێت. بۆ نموونە درووست نییە ئەمڕۆ وشەی نهێنی لە نێو داتابەیز بە فۆرماتی md5 هاش بکرێت، چوونکە md5 میکانیزمێکی کۆنی هەیە و توانای کۆمپیوتەریی ئەمڕۆ ئەوەندە بەهێزە کە لە کاتێکی کەمدا دەتوانرێت 154b07339134712728e7051eee1ce12c بگۆڕدرێتەوە بۆ webchin بە بەکاربردنی تەکنیکی Brute-force.

ئەو شێوازانەی لەسەرەوە ئاماژەم پێداون هەموویان گوونجاون بۆ کاری سادە و درووستکردنی وشە، دەستەواژە و ژمارەی تێکەڵ، هیچ کاتێک و لە هیچ دۆخێکدا درووست نییە وەک هاشکردن لە بواری پاراستن دا بەکارببرێن، بۆ ئەو مەبەستە میکانیزمی جیاوازتر و دیکە هەیە کە تایبەتن بە بوارەکە. بۆ نموونە میکانیزمی هاشکردنی SHA.


SHA - Secure Hash Algorithm


ئەمڕۆ بۆ مەبەستی بە هاشکردنی زانیاری گرینگ وەک وشەی نهێنی ئەندامان لە بنکەیەکی دراوەدا، زۆرتر سوود لە میکانیزمی SHA دەبینرێت، کە لە خۆیدا چەندین وەشانی هەیە و وەک هەر تەکنەلۆژیایەکی دیکە لەگەڵ هەر وەشانێکی نوێدا باشتر و بەهێزتر کراوە.

نوێترین وەشانی SHA تا کاتی نووسینی ئەم بابەتە بریتییە لە SHA-3 کە لە ساڵی ٢٠١٢ دا وەک نوێترین وەشانی پتەو دەستنیشان کراوە.

ئەگەر وشەی webchin لەسەر بنەمای SHA-3 بە پتەویی 512 بیت بگۆڕین بۆ هاش، ئەنجامەکەی دەبێتە،

AF110763D5440948964D7041AF37ED0A48C752D4CA11DE16DD0F02D24A4F46BC91545DAC95880F5F106A2EE824B7241EC20944CFCF9BE2A970800CC2CB48037E [rxEHY9VECUiWTXBBrzftCkjHUtTKEd4W3Q8C0kpPRryRVF2slYgPXxBqLugktyQewglEz8+b4qlwgAzCy0gDfg==]

بە هۆکاری ئەوەی کە سیستەمەکانی هاشکردنی وەک SHA زۆرتر لە بواری پاراستن دا بەکار دەبرێن لە ئەم بابەتەدا زۆرتریان لەسەر نانووسم، بەڵام لە بابەتی داهاتوودا لەگەڵ چەند Function ـێکی دیکەی PHP کە تایبەتن بە بواری پاراستن و درووستکردنی هاشی پتەو بۆ پاراستنی وشەی نهێنی، زۆرتر تیشکیان دەخەمە سەر. لە هەمان بابەتدا password_hash ئاماژە پێدەکەم کە شێوازێکی درووست تر و تایبەت ترە بە زمانی PHP بۆ درووستکردن، لێکۆڵینەوە و هەروەها سەلماندنی ئەوەی کە وشەیەکی نهێنی پتەو درووست کراوە.



بۆ درووستکردنی هاش لەسەر بنەمای SHA512 لە PHP سوود لە Function ی hash دەبینین و دواتر بە دەستنیشانکردنی جۆری هاشکردنە ویستراوەکەمان فرمانەکە دەنووسین. بۆ نموونە،

<?php
    $string = 'دەقێکی گرینگ و پارێزراو کە نابێت بە ئاسایی ببینرێت';
    echo hash('sha512', $string);
?>

هاشی ئەو دەقەی سەرەوە دەبێتە،

585a5bc73791345909f900693745ded46f9bb3474df704c84bb3c3224a8c7a97fad46eee62750cbd317751fc01b4a0b9b51396907d04cc998804daf66e982b18

کۆتایی

تكایه‌ هه‌ژمارێك درووست بكه‌ بۆ ئه‌وه‌ی بتوانیت بۆچوون بنووسیت، كرته‌ له‌ ئێره‌ بكه‌ بۆ درووستكردنی هه‌ژمار
ئاسۆ نادری2017-02-18

وایە كاك ڕێنوار، لە نموونەكاندا ئاماژەم پێداون. دیارە چوونكە زۆرتر لە ڕوانگەی پاراستنەوە بەكاردەبرێن، لە بابەتێكی سەربەخۆدا زۆرتریان لەسەر دەنووسم.

سووپاس بۆ ئێوە.

shar12017-02-17

دەستخۆش..
بابەتێکى بەسودە.

ڕێنوار2017-02-17

دەستخۆش، چەند functionێکی تریشمان هەیە وەکو:
random_bytes لە php 7
openssl_random_pseudo_bytes لە php 5.3.0