Dr.Pain

 



عضو جديد
Group Icon

المجموعة: اعضاء
المشاركات:
التسجيل: 13-
September 05
رقم العضوية: 58,851

إنذار: (0%)
-----

السلام عليكم ورحمة الله وبركاته .......

 

اود ان اعرفكم اليوم على عملية ال Shifting وهي تتلخص بالاتي :

 

افرض انه لدينا متغير يحمل القيمة  4 كالتالي :

 

CODE

$a = 4;

 

 

طبعا هذا بالنظام العشري ولكن ان قلت لك قك بكتابة القيمة 4 باستخدام النظام الثنائي

اعتقد انك سوف تكتب شيئا مماثلا للاتي :

 



CODE

0100



اذن تلك كانت هي قيمة الرقم اربعة ممثلة بالنظام الثنائي .

 

حسنا ماذا الان لو قمنا بعمل ازاحة او Shifting للرقم 4 خانه واحدة باتجاه اليسار كالتالي :



CODE

1000

 


سوف يتحول الرقم من رقم 4 الى الرقم 8 .

 

واذا قمنا بعمل ازاحة او Shifting للرقم 4 خانة واحدة باتجاه اليمين كالتالي :

 

CODE

0010

 


فان الرقم اربعه سوف يتحول الى الرقم 2 .

 

وكانت تلك هي فكرة الازاحة او ال Shifting .

 

دعنا الان نطبقها عمليا

 

من اجل عمل Shift او ازاحة لرقم ما الى جهة اليمين فاننا نستخدم الاشارة << واذا اردنا الازاحة

الى جهة الشمال فاننا نستخدم الرمز >> .

 

الان سوف نقوم بعمل ازاحة للرقم 4 بمقدار خانة واحدة الى جهة اليمين اي اننا سوف نحول الرقم 4

الى الرقم 2 :



CODE

$x = 4;

echo $x>>1

 


واذا اردنا عمل ازاحة بمقدار خانتان فاننا سوف نقوم باستبدال الرقم 1 بالرقم 2 وهكذا .

 

اما الان فسوف نقوم بعمل ازاحة الى اليسار بمقدار خانة واحدة وذلك كي يتحول الرقم من 4 الى 8 :

 

CODE

$x = 4;

echo $x<<1;

 

سوف يتسائل البعض من مدى فائدة هذا الموضوع  اقول لك بسيطة بامكانك عمل تشفير للبيانات بواسطة  هذه الطريقة كيف ذلك تابع معي .

 

ولكن قبل ان ندخل في صلب الموضوع اود ان اعرفك على دالتين من دوال PHP وهما الدالة chr

والدالة ord .

 

حيث ان وظيفة الدالة chr تحويل اي رقم الى ما يقابله من محرف فمثلا لو مررنا لها القيمة 97

فانها سوف ترجع a واليك المثال :




CODE

echo chr(97(;


ووظيفة الدالة ord هي عكسها اختها chr حيث تستقبل لدالة ord حرفا فتحوله لك الى ما يقابله في

نظام ال 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