שלמות נתונים — תוקפות ואישור
הוצג| English | משמעות |
|---|---|
| integrity/ɪnˈteɡrɪti/ | שלמות |
| validation/ˌvælɪˈdeɪʃn/ | תוקף |
| verification/ˌverɪfɪˈkeɪʃn/ | אישור |
| range check/reɪndʒ tʃek/ | בדיקת טווח |
| check digit/tʃek ˈdɪdʒɪt/ | ספרת ביקורת |
| double entry/ˈdʌbl ˈentri/ | הקלדה כפולה |
| parity check/ˈpærɪti tʃek/ | בדיקת זוגיות |
| checksum/ˈtʃeksəm/ | סכום ביקורת |
| cyclic redundancy check/ˈsaɪklɪk rɪˈdʌndənsi tʃek/ | בדיקת חוזרות עודפת מחזורית |
| parity block check/ˈpærɪti blɒk tʃek/ | בדיקת חסימת זוגיות |
כל מספר עבר את כל הבדיקות
- בספטמבר 1999, מדורג האקלים של נאסה למאדים הדליק את מנועיו כדי להיכנס למסלול והמערכת לעולם לא שמעה ממנו שוב. הוא טס 170 ק"מ נמוך מתוכנית ונשרף.
- תוכנת צוות אחת הפיקה ערכי עוצמת דחיפה בשניות-כוח (pound-force seconds); התוכנה המקבלת ציפתה שניות-ניוטון. כל ערך היה מספר תקין בטווח הגיוני. כל ערך היה שגוי פי 4.45.
- אף בדיקת פורמט לא הייתה יכולה לזהות זאת, כי הנתונים לא היו מעוותים. הם פשוט לא היו מה שהצהירו להיות. $327 מיליון.
- שיעור זה עוסק בשתי המשפחות של בדיקות המגנות על אינטגריות: ולידציה, ששואלת האם הנתונים סבירים, ואימות, ששואלת האם הועתקו נכון. והרווח שבין השתיים דרךו מאדים נפלה.
שתי שאלות
- לנתונים יש אינטגריות כאשר הם מדויקים, עקביים ומלאים.
- ולידציה היא בדיקה אוטומטית שנתונים שהוזנו סבירים ועוקבים בקפדנות בהוראות שנוקבעו. היא שואלת: האם זה הגיוני?
- אימות בודק שהנתונים הוזנו או הועברו נכון, על ידי השוואתם למקור או לערך שנחשב מחדש. היא שואלת: האם זה הועתק נכון?
- אף אחת מהן לא מוכיחה שהנתונים נכונים. שתיהן נדרשות.
מעבדת מושגי מחשוב
סווג דוגמאות מلموسة לפי הרעיון המחשובי שהן מדגימות.
שיטות ולידציה
| בדיקה | חוק | דוגמה |
|---|---|---|
| בדיקת טווח | בין שתי גבולות | חודש הוא בין 1 ל-12 |
| בדיקת גבול | בצד אחד של גבול יחיד | גיל ≥ 18 |
| בדיקת קיום (חיפוש) | הערך נמצא ברשימה או בטבלה | קוד המוצר קיים |
| בדיקת אורך | מספר התווים הנכון | קוד דואר בן 6 תווים |
| בדיקת סוג / תווית | סוג הנתונים הנכון | שדה טלפון מאפשר רק ספרות |
| בדיקת פורמט | תואם לדגם | כתובת אימייל מכילה @ |
| בדיקת נוכחות | שדות חובה אינם ריקים | שם הוזן |
| ספרת בדיקה | ספרה נוספת שמחושבת מהשאר | ISBNs, מספרי כרטיסים |
בדיקה כי חודש שהוזן נמצא בין 1 ל-12 היא:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
בדיקת טווח מאשרת שמספר נמצא בתוך גבולות הגיוניים.
התאם כל בדיקת תוקף למטרתה.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
נוכחות = לא ריק; פורמט = תואם לדוגמה; ספרת בדיקה = מחושבת כדי ללכוד ספרות שהוקלטו שגויות.
ספרה נוספת המחושבת מהשאר כדי ללכוד מספר שהוקלט שגוי (כמו באיסבן ובמספרי כרטיסי האשראי) היא ספרת ______ .
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ספרת בדיקה מחושבת מחדש מהשאר והשוויה, ולוכדת רוב שגיאות הספרה הבודדות והחלפה.
דוגמה מופרדת: ציין את הבדיקה שה伪代码 מבצעת
| Pseudocode | Bדיקה |
|---|---|
IF x < 0 OR x > 10 THEN OUTPUT "Invalid" |
בדיקת טווח: בין שני גבולות |
IF x = "" THEN OUTPUT "Invalid" |
בדיקת נוכחות: לא ריקה |
IF NOT(x = "Red" OR x = "Yellow" OR x = "Blue") THEN OUTPUT "Invalid" |
בדיקת קיום (חיפוש): אחת מרשימה |
IF LENGTH(x) <> 6 THEN OUTPUT "Invalid" |
בדיקת אורך: ששה תווים |
IF MID(x, 1, 1) < "A" OR MID(x, 1, 1) > "Z" THEN OUTPUT "Invalid" |
בדיקת פורמט: התוו הראשון הוא אות |
- רישום רכב של אות אחת, שלוש ספרות ושתי אותות דורש בדיקת פורמט בכל מיקום ובדיקת אורך עבור ששה תווים. תאריך לידה דורש בדיקת פורמט (
DD/MM/YYYY), בדיקת טווח (החודש הוא 1 עד 12, השנה לא בעתיד) ובדיקת נוכחות.
התאם כל שורה בפסאו-קוד לבדיקת התוקף שהוא מבצע.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
מבחן ריק = נוכחות; ספירת תווים = אורך; שני גבולות = טווח; רשימת ערכים מותרים = קיום או חיפוש.
דוגמה מופרדת: ספרת בדיקה, ומה היא מחמיצה
- שיטה פשוטה: ספרת הבדיקה היא שארית חילוק סכום הספרות ב-10, שנצמדת למספר.
4162יש לו סכום ספרות 13, ולכן הוא מאוחסן כ41623. - משתמש מקליד
41523: הסכום הוא עכשיו 12, ספרת הבדיקה אמורה להיות 2, ולכן הטעות מתגלה. - משתמש מקליד
14623: שתי הספרות הראשונות הוחלפו, אך הסכום עדיין 13, ולכן ספרת הבדיקה מתאימה והטעות לא מתגלה. שיטות אמיתיות (ISBN, מספרי כרטיס) מיישקות משקל לכל מיקום כך שהחלפה תשנה את התוצאה.
מה שאימות לא יכול לעשות
- אימות מזהה נתונים שהם מוצגים בצורה שגויה או מחוץ לטווח המותר.
- הוא אינו יכול לזהות נתונים בעלי הפורמט הנכון אך שגויים עובדתית.
Bobהוכנס עבורBibועבר את כל הבדיקות; בדיוק כך התרחשו כל הערכות הרוחב שנשלחו למאדים. - לעניין זה יש צורך באישור מול המקור, ובאדם הקורא מה שהוקלד.
למה ייתכן שאישור נתונים יעבורStill מעדכנים שגויים?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
אישור בודוק את הפורמט, לא האמת — ערך בפורמט נכון אך שגוי עובר.
אישור בזמן הזנת נתונים
- הזנה כפולה: הנתונים מוזנים פעמיים, על ידי אותו אדם או על ידי שני אנשים, והמחשב משווה בין שתי הגרסאות ומדווח על כל הבדל. מקרה יומיומי הוא שינוי סיסמה חדשה.
- בדיקה ויזואלית: האדם משווה מה שמופיע במסך עם מסמך המקור ומתקן כל הבדל לפני השימור.
- שניהם מגנים על שלמות הנתונים על ידי וידוא שהנתונים השמורים תואמים למקור.
בקשה למשתמש להקליד סיסמה חדשה פעמיים היא דוגמה ל:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
כתיבה כפולה משווה שתי העתקות שהוקלדו כדי לוודא שהנתונים הוזנו נכון.
אישור בזמן העברת נתונים
- ביטים עשויים להסתובב במהלך ההעברה. בדיקת זוגיות מוסיפה ביט נוסף לכל בייט כך שמספר ה-1s יהיה זוגי (זוגיות זוגית) או אי-זוגי; המקבל סופר מחודש, וביט אחד שהסתובב גורם לכישלון הספירה.
- סיכום בדיקה (Checksum) הוא ערך המחושב ממספר בלוק נתונים על ידי אלגוריתם ונשלח יחד איתם; המקבע מחשב אותו מחדש ומשווה. העברת קבצי וידאו מצילמה לשרת פועלת כך: חוסר התאמה מעלה מחדש את ההעברה.
- בדיקת חריגה מחזורית (CRC) היא סיכום בדיקה חזק יותר המשמש חלוקה פולינומלית, ומזהה דפוסי טעות רבים יותר.

ביט אחד נוסף הופך את מספר 1 לזוגי; ביט הפוך מפר אותו

חשב, שלח, חשב מחדש, השוו
בדיקת זוגיות פועלת באמצעות:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ביט הזוגיות גורם לספירת ה-1ים להיות זוגית או אי-זוגית; הקבלן סופר מחדש כדי לזהות שגיאת ביט בודד.
אילו שיטות אימות משמשות במהלך העברת נתונים? סמן את כל האפשרויות החלופיות.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
פרטיטי וצ'קסומים מחשבים מחדש ערך בנקודת הקבל. כתיבה כפולה ובדיקה ויזואלית מתבצעות במהלך הכנסת הנתונים.
בדיקת פרטיטי בייט מאבחנת כל שגיאת העברה אפשרית בבייט זה.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
שינוי שני ביטים משאיר את ספירת ה1s ללא שינוי, ולכן הם עוברים. בדיקת זוגיות מזהה באופן אמין טעויות ביט בודד בלבד.
דוגמה פותרת: בלוק זוגיות מזהה את הביט
- בדיקת בלוק זוגיות סורגת את הבייטים בגraph: כל בייט נושא ביט זוגיות שורה, ובייט זוגיות נוסף נושא את זוגיות העמודות של הבייטים שמעלו.
- ארבעה בייטים נשלחים עם זוגיות זוגית, ולאחר מכן בייט הזוגיות. ספר את ה-1s בכל שורה ועמודה: בייט 3 מכיל חמישה ועמודה 4 מכילה שלושה, שניהם אי-זוגיים.
- הביט בו שורה זו ועמודה זו נפגשות הוא זה שהשתנה, ולכן הוא מוחזר מ-1 ל-0. ביט זוגיות בודד מזהה שגיאה; בלוק מזהה ומתקן אותה.

שורה אחת שגויה, עמודה אחת שגויה: הביט נמצא בחצייה
סדר את שלבי בדיקת בלוק פרטיטי.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
שורות מאבחנות, עמודות מאבחנות, הצומת ממוקם, וההפיכה מתקנת. זאת תוספתו של בלוק מעל ביט פרטיטי בודד.
דוגמה פתורה: איזה תקן תופס איזה שגיאה
- משתמש מקליד את תאריך הלידה שלו כ-
31/02/2009, ואז מקליד את כתובת האימייל שלו פעמיים. איזה בדיקה תופסת איזה שגיאה, ומה ההבדל? - אימות: בדיקת פורמט או טווח דוחה את ⟨
31/02/2009⟩, מכיוון שפברואר לעולם אינו מכיל 31 ימים. המחשב בודק את הערך מול כלל. - אישור: הקלדה כפולה משווה בין שתי כתובות האימייל ומדווחת על חוסר התאמה אם הן שונות. המחשב משווה שני העתקים, והוא יקבל כתובת שגויה שהוקלדה זהה פעמיים.
- אימות שואל האם הנתונים סבירים; אישור שואל האם הם הוקלטו נכון.

סביר, או הועתק נכון: שתי שאלות שונות
איזה הצהרה נכונה?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
אימות בודק הגיוניות כלפי כללים; בדיקה בודקת שהנתונים הוכנסו/הועברו ללא שינוי.
בדיקה מוכיחה שהנתונים הועתקו או הוכנסו ללא שינוי — אך לא שהערך הוא נכון עובדתית.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
כתיבה כפולה / צ'קסומים מוכיחים שהנתונים הגיעו ללא שינוי; רק אדם או בדיקה מצולבת יכולות להעיד שהן אמתית בפועל.
סימונים נופלים מהיד
- ביט בדיקה הוא אימות בזמן הקלדה; זוגיות ו-סכום בדיקה מאשרים העברה. אל תכללו אותם תחת הכותרת השגויה.
- אף אחד מהבדיקות לא מוכיח שהנתונים אמת. אימות אומר "סביר"; אישור אומר "תואם למקור".
- בדיקת זוגיות ביט פספסת שני ביטים הפוכים באותו ביט, כי הם מתאפסים. יש לומר "שגיאות ביט יחיד".
- הצפנה היא צעד אבטחה. היא אינה תורמת לשלמות.
הבנתך מושלמת
- אימות = כללים אוטומטיים בזמן הקלדה: טווח, גבול, קיום, אורך, סוג, פורמט, נוכחות, ביט בדיקה; הוא אינו יכול לתפוס ערכים בפורמט נכון אך שגויים
- אישור בזמן הקלדה = הקלדה כפולה ובדיקה חזותית; בהעברה = זוגיות (ביט או בלוק), סכום בדיקה, CRC
- בלוק זוגיות ממקם ביט הפוך בחצייה של השורה והעמודה שנכשלו
- אימות שואל "סביר?"; אישור שואל "הועתק נכון?"; אף אחד לא שואל "אמת?"