הסבר · עם דוגמאות מפורטות

איך עובדות בדיקות checksum

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

מהו checksum

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

זה כל מה שמבטיח checksum. הוא אינו מציין דבר על קיומו של החשבון, מי הבעלים שלו או מה הוא מכיל – נקודה שכל המאמתים באתר הזה חוזרים עליה שוב ושוב, מכיוון שקל להתבלבל בין השניים.

דוגמה מעשית 1 – אלגוריתם לונה למספרי כרטיסים

חברת ויזה, מאסטרקארד ורוב כרטיסי התשלום האחרים משתמשות באלגוריתם לונה. קחו את הדוגמה הקלאסית 7992 7398 713. החל מהספרה הימנית ביותר, הכפילו כל ספרה שנייה פי שניים; אם התוצאה היא מספר בן שתי ספרות, חברו את הספרות שלו יחד. לאחר מכן חברו את כל הערכים.

ספרהמיקום מימיןהוכפל?נספר כ
3ספרה לבדיקת סיכום3
1השנייה מימין1 × 2 = 22
7השלישית7
8הרביעית8 × 2 = 16 → 1 + 67
9החמישית9
3השישית3 × 2 = 66
7השביעי7
2השמיני2 × 2 = 44
9התשיעי9
9העשירי9 × 2 = 18 → 1 + 89
7האחד-עשר7

העמודה שמימין מצטברת ל-3 + 2 + 7 + 7 + 9 + 6 + 7 + 4 + 9 + 9 + 7 = 70. השבעים מתחלק ב-עשר, ולכן המספר תקף. שנה ספרה בודדת אחת והסכום כבר לא יהיה מכפלה של עשר. נסה זאת בכלי בדיקת תקפות כרטיס אשראי – הוא מבצע את החישוב הזה בדיוק על המכשיר שלך.

דוגמה מעשית 2 – סכום משוקל (ISBN-10)

רבים ממספרי התעודות הלאומיות משתמשים בסכום משוקל: כפל כל ספרה במשקל קבוע, חיבור כל הערכים ובדיקת השארית. ISBN-10 הוא הדוגמה הטובה ביותר. עבור 0-306-40615-2 המשקלים נעים מ-10 ועד 1:

0×10 + 3×9 + 0×8 + 6×7 + 4×6 + 0×5 + 6×4 + 1×3 + 5×2 + 2×1 = 132

132 שווה בדיוק ל-11 × 12, כך שהשארית של החילוק ב-11 היא אפס וה-SBN תקין. מספרי CPF בברזיל, PESEL בפולין ועשרות מזהי זהות אחרים פועלים לפי אותו דפוס עם משקלים ומודולוס משלהם – ולכן בדקן מזהי קבוצות אחד יכול לבדוק אלפי מספרים כאלה בתוך שנייה.

דוגמה מעשית 3 – IBAN ומודולוס 97

מספרי חשבונות בנק בינלאומיים משתמשים בתקן ISO 7064 מודולוס 97-10, שיטה חזקה יותר עם שתי ספרות בדיקה. הנה הדוגמה הסטנדרטית: GB82 WEST 1234 5698 7654 32:

  1. בדקו את אורך המספר לפי המדינה: מספר IBAN בריטי מכיל 22 תווים. ✓
  2. העבירו את ארבעת התווים הראשונים לסוף: WEST12345698765432GB82.
  3. החליפו כל אות בשני ספרות (A = 10 … Z = 35): W→32, E→14, S→28, T→29, G→16, B→11, מה שנותן 3214282912345698765432161182.
  4. חלקו את המספר הזה ב-97. השארית חייבת להיות בדיוק 1 — וכך הוא.

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

כתובות קריפטו: סיכומי בדיקה שנבנו מתוך גיבובים.

כתובות ביטקוין ואת'ריום מעלות את הרף, מכיוון שטעות הקלדה שם שולחת כסף לאף אחד, לתמיד. כתובות ביטקוין ישנות (1…, 3…) משתמשות בבאז58צ'ק: תוכן הכתובת עובר דרך SHA-256 פעמיים והארבעה הבייטים הראשונים של התוצאה נוספים כסיכום בדיקה. תו שגוי אחד משנה את הגיבוב לחלוטין, כך שהסיכוי שטעות תחמוק היא כאחת מתוך ארבעה מיליארד. כתובות bc1… חדשות יותר משתמשות בבך32 או בך32מ, קוד מתקן שגיאות שמבטיח זיהוי של כל טעות הנוגעת עד ארבעה תווים. הEIP-55 של את'ריום מסתיר את סיכום הבדיקה שלו בתבנית של אותיות גדולות וקטנות.

הבדקן כתובת Bitcoin והבדקן כתובת Ethereum מיישמים אלגוריתמים אלה בדפדפן ובודקים את עצמם מול וקטורי הבדיקה הרשמיים בכל פעם שדף נטען.

סוגי תוכניות בקצרה

תוכניתנמצא בשימוש על ידיתופס טעויותהסיכוי שטעות אקראית תעבור
אלגוריתם לונה (mod 10)כרטיסי אשראי וחיוב, IMEI, ומספרי זיהוי לאומיים רביםכל שגיאת ספרה בודדת ורוב החילופים הסמוכיםכ-1 מתוך 10
ISO 7064 מודולו 97-10IBAN, וכן מספרי מס וחברות מסוימיםכל שגיאה בודדת וכל החלפת ספרות.כ-1 מתוך 97.
סכום משוקלל, מודולו 10 או 11ISBN-10, CPF של ברזיל, PESEL של פולין ומספרי זיהוי רבים נוספים.שגיאות בודדות ורוב החלפות הספרות.כ-1 מתוך 10 או 1 מתוך 11.
Base58Check (SHA-256 כפול, 4 בייטים)כתובות ביטקוין ישנות (1…, 3…)כל שגיאת הקלדה תגרום לתוצאה לא תקינה ברוב המקריםבערך 1 מתוך 4 מיליארד
Bech32 / Bech32m (קוד BCH)Bitcoin SegWit & Taproot addresses (bc1…)מובטח: כל שגיאה נוגעת עד 4 תווים.פחות מ-1 מתוך מיליארד.
EIP-55 (קידוד keccak-256)כתובות Ethereumטעויות כתיב, באמצעות דפוס של אותיות גדולות וקטנות.רמה נמוכה מאוד עבור קלט בתערובת של אותיות גדולות וקטנות.

למה כדאי שמאמת ההתאמות יפעל על המכשיר שלך

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

FAQ

האם תוקף ההתאמה מעיד שהמספר אמיתי או פעיל?

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

מה הסיכוי שמספר שגוי עדיין יעבור את בדיקת ההתאמה?

זה תלוי בשיטה. ספרת בדיקה בודדת מסוג mod-10 מאפשרת לכ-1 שגיאה אקראית מתוך 10 לעבור; שיטת mod 97 של IBAN מאפשרת לכ-1 מתוך 97 לעבור; תאימות Base58Check בת 4 בייטים מאפשרת לכ-1 מתוך 4 מיליארד לעבור. התכונה החשובה היא שטעויות אנוש נפוצות — ספרה אחת שגויה או שתי ספרות שהוחלפו — נתפסות על ידי כולן.

למה לחלק מהמזהים אין בכלל סכום ביקורת?

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

האם בטוח להדביק את מספר הכרטיס או תעודת הזהות שלי למאמת?

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

מה ההבדל בין סכום ביקורת, גיבוב והצפנה?

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