Connect with us

קטגוריות

Blockchain

מה אלו פונקציות גיבוב (Hashing) ולמה הן משמשות?

אז היום אנחנו נלמד על פונקציית Hash! (או בעברית פונקציית גיבוב, בעברית זה תמיד נשמע משעמם יותר), פונקציית גיבוב זאת פונקציה שלוקחת קלט חופשי באורך משתנה וממירה אותו לפלט באורך קבוע. לדוגמא אם אני העביר לפונקציה את הערך x אני תמיד אקבל את הערך y.

פונקציית גיבוב מצפה לקבל קלט (שיכול להיות בצורות שונות כמו טקסט, קבצים וכ׳ו) ומוציא לנו פלט שהוא ה-hash שהוא לעיתים קרובות מספר הקסדצימלי.

למעלה נוכל למצוא פונקציית גיבוב בשם MD5 אשר תייצר לנו כפלט מספר הקסדצימלי באורך 32 תווים מכל קלט, הפלט הוא בלתי הפיך, זאת אומרת שאתם לא תוכלו להבין מה הקלט מהפלט בלבד, אלא אם תנסה כל קלט אפשרי לתקיפה מהסוג הזה קוראים Brute force (או בעברית כוח גס).

לעיתים קרובות משתמשים בפונקציות גיבוב על מנת להוכיח שמשהו אחד הוא בדיוק כמו משהו אחר מבלי לגלות את המידע. על מנת להבין טוב יותר, בואו ניתן דוגמא:

נניח שחווה אומרת לאדם שהיא יודעת את התשובה לשאלה המאתגרת שהמורה שאלה בשיעור המתמטיקה האחרון, אדם רוצה שהיא תוכיח שהיא באמת יודעת את התשובה מבלי לגלות לו, אז חווה מכניסה את התשובה לפונקציית גיבוב (נניח שהתשובה היא 42) על מנת לקבל את ה-hash הזה:

חווה שולחת את ה-hash לאדם שכמובן לא יכול להבין את התשובה מה-hash עצמו, אך כשהוא ימצא את התשובה בעצמו הוא יוכל להכניס את התשובה שלו לפונקציית גיבוב ולראות אם הוא מקבל את אותה תוצאה.

ישנן המון פונקציות גיבוב שונות אך המפורסמות ביותר הן CRC, CRC32, MD5, SHA1, SHA256 ן-RIPEMD160.

השימושים הנפוצים ביותר לפונקציות גיבוב הם:

  1. הצפנת סיסמאות – שימוש בפונקציית גיבוב על מנת להצפין את הסיסמא לפני השמירה במסד הנתונים הוא תמיד רעיון טוב, אם פורץ מקבל גישה למסד מהר מאוד הוא יבין שעם הסיסמאות לא יהיה לו מה לעשות. ומצד שני היוזר יוכל להתחבר באמצעות הזנת הסיסמא, השרת יקבל את הסיסמא יכניס אותה לפונקציית גיבוב וישווה כנגד ה-hash של הסיסמא השמורה.
  2. לזהות קבצים – שימוש נפוף נוסף הוא זיהוי קבצים באמצעות hash, אם אני אעביר קובץ לפונקציית גיבוב היא תמיד תייצא לי את אותו הפלט מן חתימה דיגיטלית של הקובץ, זה שימושי ביותר כשמפיצים קבצים, לדוגמא, אם אתם רוצים הורדתם הפצה מסויימת של לינוקס סיכוי גבוהה שקיבלתם יחד עם ההורדה קובץ בשם checksum  כך שתוכלו לבדוק אם הקובץ נפגם תהליך ההורדה או שיש לכם קובץ תקין.
  3. Blockchain – השימוש ב-hashing כאן הוא דיי רחב ומגוון, למשל כתובת bitcoin מחושבת מתהליך של hashing בעזרת פונקציות גיבוב שונות כמו SHA2–256 ו-RIPEMD160.

האם יש סיכוי שפונקציית גיבוב תיתן את אותו פלט לשני קלטים שונים? בהחלט כן אבל הסיכוי שזה יקרה הוא נמוך מאוד למעשה פונקציות גיבוב נמדדות בהסתברות להפקת פלט זהה לשני קלטים שונים.

אם אתה חושב שיש מידע שהחסרתי או שיש דברים לא מדוייקים או לא מובנים במאמר, אשמח אם תאיר את עיניי באמצעות תגובה או דרך יצירת קשר בתפריט העליון.
תגובות

עוד ב Blockchain

    Meni Edri היי אני מני, מתכנת מנוסה ומאוד אוהב קוד ואת עולם התכנות, הקמתי את CodeHub על מנת שתיהיה לי פינה שבה אוכל לכתוב, ללמד וללמוד, מקווה שתימצאו את הבלוג הזה שימושי.
    קריאה מהנה.

    מאמרים פופולריים

    נושאים פופולריים

    חזרה למעלה