|
|
|
|
|
|
|
|
السلام
عليكم ورحمة الله وبركاته ....... اود ان
اعرفكم اليوم على عملية ال Shifting وهي تتلخص
بالاتي : افرض انه
لدينا متغير يحمل القيمة 4 كالتالي : CODE $a = 4; طبعا هذا
بالنظام العشري ولكن ان قلت لك قك بكتابة القيمة 4 باستخدام النظام الثنائي اعتقد انك
سوف تكتب شيئا مماثلا للاتي :
CODE 0100
حسنا ماذا
الان لو قمنا بعمل ازاحة او Shifting للرقم 4
خانه واحدة باتجاه اليسار كالتالي :
CODE 1000
واذا قمنا
بعمل ازاحة او Shifting للرقم 4 خانة واحدة باتجاه اليمين كالتالي : CODE 0010
وكانت تلك
هي فكرة الازاحة او ال Shifting . دعنا الان
نطبقها عمليا من اجل
عمل Shift او ازاحة لرقم ما الى جهة اليمين فاننا نستخدم الاشارة << واذا اردنا الازاحة الى جهة
الشمال فاننا نستخدم الرمز >> . الان سوف
نقوم بعمل ازاحة للرقم 4 بمقدار خانة واحدة الى جهة اليمين اي اننا سوف نحول
الرقم 4 الى الرقم
2 :
CODE $x = 4; echo
$x>>1
اما الان
فسوف نقوم بعمل ازاحة الى اليسار بمقدار خانة واحدة وذلك كي يتحول الرقم من 4
الى 8 : CODE $x = 4; echo
$x<<1; سوف
يتسائل البعض من مدى فائدة هذا الموضوع
اقول لك بسيطة بامكانك عمل تشفير للبيانات بواسطة هذه الطريقة كيف ذلك تابع معي . ولكن قبل
ان ندخل في صلب الموضوع اود ان اعرفك على دالتين من دوال PHP
وهما الدالة chr والدالة ord . حيث ان
وظيفة الدالة chr تحويل اي
رقم الى ما يقابله من محرف فمثلا لو مررنا لها القيمة 97 فانها سوف
ترجع a واليك المثال :
CODE echo
chr(97(;
نظام ال Ascii فمثلا لو مررت لها a فانها سوف
تحوله الى 97 :
CODE echo
ord('a'); الان دعنا
ندخل الى صلب الموضوع .... كلنا نعرف
ان البيانات يتم تمثيلها نظام ال Ascii Code
والان ظهر نظام ال Unicode بحيث ان
لكل محرف ما يقابله في النظام فمثلا الحرف a
يساوي 97 وال b يساوي 97 ... الخ . نحن هنا
سوف نستغل هذه النقطة بحيث تقول الفكرة اننا سوف نحول المحارف الى ارقام وذلك
باستخدام الدالة ord ومن ثم سزف نقوم بعمل shifting
او ازاحة لهذه الارقام بمقدار خانة واحد الى اليسار
بحيث تتغير قيمة ومعنى المحارف وبهذا تصبح البيانات مشفرة زبهذا نكون قد انجزنا
عملية التشفير وبكل
بساطة . والان
ولاجل فك التشفير فاننا سوف نقوم بعمل Shifting
او ازاحة للبيانات التي شفرت بمقدار خانة
واحدة الى اليمين وبهذا نكون قد ارجعنا البيانات الى اصلها واليك مثال على ذلك : وهذا هو
المثال : CODE <?php // String To
encrypt $String = "Dr.Pain"; $ar = array(); // Get Ascii Code for($i=0 ; $i < strlen($String); $i++){ $ar[$i] = ord($String[$i]); } // Print key ascii code of "Dr.pain" ECHO "<h1>key ascii
code of <font color =red>Dr.pain</font> Befor shifting operation</h1><br>"; for($i =0 ; $i < strlen($String) ; $i ++){ echo $ar[$i]."<br>"; } // Make shifting
operation for($i =0 ; $i < strlen($String) ; $i ++){ $ar[$i]= $ar[$i]<<1; } // print new key ascii code of "Dr.pain"after
shifting operation ECHO "<h1>key ascii
code of <font color =red>Dr.pain</font> after
shifting operation</h1><br>"; for($i =0 ; $i < strlen($String) ; $i ++){ echo $ar[$i]."<br>"; } // print new values
of "Dr.pain" ECHO "<h1>New values of <font
color =red>Dr.pain</font> after shifting operation </h1><br>"; for($i =0 ; $i < strlen($String) ; $i ++){ echo chr($ar[$i])."<br>"; } // get da original data for($i =0 ; $i < strlen($String) ; $i ++){ $ar[$i]= $ar[$i]>>1; } // print the
original data ECHO "<h1>The original data</h1><br>"; for($i =0 ; $i < strlen($String) ; $i ++){ echo
chr($ar[$i]); } ?>
اخوكم Dr.Pain
|