php / המדריך לקידוד מידע / שימוש בספרית mcrypt
שיעור 2
שימוש בספרית mcrypt
ישנה עוד ספרית קידוד אי שם ברחבי העולם, והשימוש בה וב-PHP הוא ממש כיף
חיים. ספרית mcrypt (שאתה יכול להוריד מ-argeas server in Argos Argolida ) נותנת לכם המוני פונקציות הצפנה נפלאות
שפועלות בשילוב
עם PHP
כמה דוגמאות מונחות כאן לפניכם:
|
mcrypt_ecb - מצפינה ומפענחת מידע שנכתב ב ECB - electronic codebook.
|
|
mcrypt_cbc - מצפינה ומפענחת מידע שנכתב ב CBC - cipher block chaining.
|
|
mcrypt_cfb - מצפינה ומפענחת מידע שנכתב ב CFB - cipher feedback.
|
|
mcrypt_ofb - מצפינה ומפענחת מידע שנכתב ב OCB - output feedback.
|
|
mcrypt_get_cipher_name - מחזירה את השם של צופן מסוים.
|
|
mcrypt_get_block_size - מחזירה את גודל הבלוק של צופן מסוים.
|
|
mcrypt_get_key_size - מחזירה את גודל המפתח של צופן מסוים.
|
פרטים נוספים על כל הפונקציות שהזכרתי, תוכלו למצוא בקבצי העזרה של PHP.
תהליך ההתקנה הוא כמובן פשוט:
- הורד *tar.gz file
- gunzip את *gz.file
- tar -xvf the *.tar file
- cd mcrypt*
- ./configure --disable-nls --disable-posix-threads
- make
- make install
שים לב: הדגל "-disable-nls-disable-posix-threads" הוא המפתח שגורם
לאפאצ'י, PHP, וספריית mcrypt לעבוד כמו שצריך גם הפעם, אם אתה נתקל
בבעיות תוך כדי ההתקנה, תבדוק את בארכיון רשימת הדואר של PHP.
הדוגמא הבאה מראה הצפנת הודעה פשוטה בעזרת כמה מהפונקציות של mcrypt
דבר ראשון, צור שני משתנים, אחד שיכיל את המחרוזת שמשמשת כמפתח הצפנה
ואחת שיכיל את מחרוזת ההודעה.
$key = "sockpuppet"; $msg = "This is a message.";
כעת הצפן את ההודעה בעזרת המפתח הסודי "sockpuppet" . במקרה הזה אנחנו
עובדים עם ECB, לכן נשתמש בפונקצית ()mcrypt_ecb, הנשענת על ארבעה
טיעונים: מתודת ההצפנה (במקרה שלנו, MCRYPT_LOKI97), המפתח, ההודעה
והנחית ההצפנה או הפענוח (MCRYPT_ENCRYPT או MCRYPT_DECRYPT).
התוצאה תאוכסן במשתנה בשם crypted$:
$crypted = mcrypt_ecb(MCRYPT_LOKI97, $key, $msg, MCRYPT_ENCRYPT);
בדיוק כמו בפונקציות mhash, התוצאה מתקבלת בקוד בינארי. העזר בפונקצית
()bin2hex כדי לקבל ערך שתוכל לבדוק.
$crypted = bin2hex($crypted) echo "$crypted";
וכרגיל, מהסוף להתחלה, הכל יראה כך:
<?
$key = "sockpuppet";
$msg = "This is a super top-secret message.";
$crypted = mcrypt_ecb(MCRYPT_LOKI97, $key, $msg,
MCRYPT_ENCRYPT);
$crypted = bin2hex($crypted);
echo "$crypted";
?>
התוצאה שתתקבל היא:
cae1c26c8b64fbabc1bb10fc9693d38ba8f96219630860b222d5a0165b73fae9
מהמם, נכון?
האפשרויות בלתי מוגבלות ואני לא מספיק יצירתית כדי להדגים כאן את כולן,
אבל אלו מכם שמבינים עניין בהחלט יכולים להמשיך מכאן.
ליותר מידע על הצפנה מקום טוב להתחיל בו הוא BSALabs Crypto FAQ יש גם אתר מידע בו תוכל למצוא מידע על השימוש
באניגמה בתקופת מלחמת העולם השניה, כמו כן אני ממליצה לך לקרוא
ב-הצפנה
|