מה זה Checksum (סכום ביקורת)?
Checksum (סכום ביקורת) הוא ערך קצר שמחושב מתוך בלוק של נתונים, כמו קובץ או מנת רשת, ונשמר או נשלח יחד איתו. חישוב מחדש שלו בהמשך והשוואה בין שני הערכים מראים אם הנתונים השתנו בגלל השחתה או שגיאה בהעברה.
עודכן ב-24 בספטמבר 2026
| Checksum | נשלח | הגיע | תוצאה |
|---|---|---|---|
| סכום הבייטים (mod 256) | 9C | 9C | יש התאמה |
| CRC-32 | 15403943 | 15403943 | יש התאמה |
הפכו ביט אחד ושני ה-checksums משתנים. החליפו שני תווים וכל הבייטים עדיין שם, כך שהסכום שלהם זהה: רק CRC-32, שתלוי בסדר, מבחין בשינוי.
הפצות Linux כמו Ubuntu ו-Debian מפרסמות קובץ בשם SHA256SUMS לצד קובצי ההתקנה שלהן. בכל שורה יש מחרוזת של 64 תווים ושם קובץ. כשההורדה מסתיימת, מריצים פקודה אחת על הקובץ שהתקבל. אם היא מדפיסה את אותה מחרוזת, כל מיליארדי הבייטים שלו הגיעו בשלמותם. אם ביט אחד התהפך בדרך, המחרוזת יוצאת שונה לגמרי.
המחרוזת הזו היא checksum: תקציר קטן שמשתנה כשהנתונים משתנים.
איך checksum עובד, שלב אחרי שלב
- השולח מריץ אלגוריתם checksum על הנתונים, בייט אחרי בייט, ומקבל תוצאה קצרה.
- התוצאה עוברת או נשמרת יחד עם הנתונים: בכותרת של מנת רשת, בתוך קובץ ZIP ליד כל קובץ דחוס, או בעמוד ההורדה.
- המקבל מריץ את אותו אלגוריתם על הנתונים שהוא קיבל בפועל.
- משווים בין שתי התוצאות. אם הן שוות, הנתונים כמעט בוודאות לא השתנו. אם הן שונות, הנתונים נפגמו, והמקבל דוחה אותם, מבקש אותם שוב, או מציג שגיאת checksum.
Checksum רק מזהה נזק; הוא לא יכול לומר איזה בייט השתנה או לתקן אותו. תיקון דורש קוד לתיקון שגיאות, כמו קודי Reed-Solomon בתקליטורים ובקודי QR.
ה-checksum הפשוט ביותר מחבר את כל הבייטים ושומר את 8 הביטים האחרונים של הסכום. הריצו את הקוד הזה כדי לראות איפה הרעיון עובד ואיפה הוא נכשל:
original sum= 78 crc32=a1628836
flipped sum= 80 crc32=a597580b
swapped sum= 78 crc32=59dbf74b
שינוי של תו משנה את הסכום. החלפה בין שני תווים לא משנה אותו, כי לחיבור לא אכפת מהסדר, ולכן סכום הבייטים מאשר תשלום של 10 במקום 100. CRC-32 (cyclic redundancy check) מתייחס לנתונים כמספר בינארי ארוך אחד ומחלק אותו בפולינום קבוע של 33 ביט; השארית בת 32 הביטים תלויה במיקום של כל ביט, כך שההחלפה נתפסת. ההדגמה שלמעלה מאפשרת לנסות את זה על טקסט משלכם. CRC-32 תופס כל רצף של שגיאות באורך של עד 32 ביט.
אלגוריתמי checksum נפוצים
| אלגוריתם | גודל | איפה פוגשים אותו |
|---|---|---|
| ביט זוגיות | ביט אחד | חיבורים טוריים, זיכרון עם זוגיות |
| ספרת ביקורת של Luhn | ספרה אחת | מספרי כרטיסי אשראי, מספרי IMEI |
| Internet checksum | 16 ביט | הכותרות של IPv4, TCP ו-UDP |
| Adler-32 | 32 ביט | פורמט הדחיסה zlib |
| CRC-32 | 32 ביט | ZIP, gzip, PNG, מסגרות Ethernet |
| MD5 | 128 ביט | עמודי הורדה ישנים, כלים למציאת קבצים כפולים |
| SHA-256 | 256 ביט | הורדות תוכנה, קובצי התקנה של Linux, Bitcoin |
חמשת הראשונים תופסים תקלות, לא תוקפים. מי שעורך קובץ יכול לשנות כמה בייטים כך שה-CRC-32 שלו יתאים שוב. MD5 ו-SHA-256 הן פונקציות גיבוב קריפטוגרפיות, שתוכננו כך שמציאת שני קלטים עם אותו פלט לא תהיה מעשית. MD5 נפרצה מאז (התנגשויות פורסמו ב-2004), וכך גם SHA-1 (ב-2017), ולכן הורדות רגישות מבחינת אבטחה משתמשות ב-SHA-256 או בחזק ממנו. MD5 עדיין תופסת השחתה מקרית מצוין.
איך בודקים checksum
בכל מערכת הפעלה יש פקודה מובנית:
# Windows (PowerShell)
Get-FileHash ubuntu.iso -Algorithm SHA256
# macOS
shasum -a 256 ubuntu.iso
# Linux
sha256sum ubuntu.iso
השוו את הפלט לערך שבעמוד ההורדה הרשמי; אותיות גדולות או קטנות לא משנות. ב-Python, hashlib עושה את אותה בדיקה, וקורא את הקובץ במנות כך שקובץ של 6 GB אף פעם לא צריך להיכנס כולו לזיכרון:
a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
OK
שנו את hello world ל-hello World והריצו שוב: כל תו ב-checksum משתנה, והשורה האחרונה אומרת Checksum mismatch.
מה זו שגיאת checksum?
שגיאת checksum פירושה שהבדיקה נכשלה: הערך שחושב מהנתונים שיש לכם לא תואם לערך שנשמר או נשלח איתם. או שהנתונים השתנו, או שה-checksum השמור נפגם. ההודעה והתיקון תלויים במקום שבו היא מופיעה.
שגיאת checksum של CMOS או BIOS בהפעלה
הקושחה של מחשב (BIOS או UEFI) שומרת את ההגדרות שלה, כמו סדר האתחול והשעון, בזיכרון קטן שסוללת מטבע, בדרך כלל CR2032, שומרת בחיים כשהמחשב מנותק מהחשמל. לצד ההגדרות נשמר checksum שלהן. בכל הפעלה הקושחה מחשבת אותו מחדש, ואם הערכים שונים היא מציגה הודעה כמו CMOS Checksum Error - Defaults Loaded וחוזרת להגדרות היצרן.
הסיבה הרגילה היא סוללה חלשה או מתה, במיוחד כשגם השעון מתאפס. הפסקת חשמל בזמן שמירת ההגדרות, או ניקוי ה-CMOS עם ג'אמפר, גורמים לאותה תוצאה. כדי לתקן:
- היכנסו למסך ההגדרות (בדרך כלל Delete או F2 בזמן שהמחשב עולה), קבעו את התאריך, השעה וכל הגדרה ששיניתם, ואז שמרו וצאו (לרוב F10). אם ההודעה לא חוזרת, זה היה אירוע חד פעמי.
- אם היא חוזרת אחרי כל הפעלה קרה, כבו את המחשב, נתקו אותו מהחשמל והחליפו את סוללת ה-CR2032.
- אם ההודעה מזכירה את הקושחה עצמה, כמו
BIOS ROM checksum errorאוMain BIOS checksum error, קובץ הקושחה פגום. בלוחות עם שבב BIOS גיבוי הוא משוחזר אוטומטית; באחרים, השתמשו בתכונת שחזור ה-BIOS של הלוח או צרבו את הקושחה מחדש מאתר היצרן, בלי לנתק את החשמל במהלך העדכון.
Checksum mismatch אחרי הורדה
ה-SHA-256 של הקובץ שלכם לא תואם לזה שבעמוד ההורדה. ייתכן שהקובץ חלקי או פגום (חיבור שנקטע, דיסק מלא), ייתכן שאתם משווים ל-checksum של קובץ אחר (גרסה אחרת או ארכיטקטורת מעבד אחרת), וייתכן שאתם משווים בין שני אלגוריתמים שונים: ערך MD5 הוא 32 תווים הקסדצימליים, ערך SHA-256 הוא 64. לעתים רחוקות, מישהו התעסק עם הקובץ.
בדקו את האלגוריתם ואת שם הקובץ, ואז הורידו את הקובץ שוב מהאתר הרשמי. אם גם עותק חדש מהמקור הרשמי לא תואם, אל תריצו אותו. מנהלי חבילות עושים את הבדיקה הזו בשבילכם: pip עוצר עם THESE PACKAGES DO NOT MATCH THE HASHES כשחבילה שהורדה שונה מהגיבוב שננעל.
שגיאת checksum בארכיון ZIP, RAR או 7z
פורמטים של ארכיונים שומרים CRC-32 של התוכן המקורי של כל קובץ. בזמן החילוץ הכלי מחשב אותו מחדש; WinRAR מדווח על אי התאמה כ-Checksum error ו-7-Zip כ-CRC Failed. בארכיון מוצפן, סיסמה שגויה מייצרת את אותה הודעה, כי סיסמה שגויה מפענחת לזבל. הורידו את הארכיון שוב, ודאו שכל החלקים של ארכיון מפוצל (.part1.rar, .part2.rar) נמצאים ומגיעים מאותה העלאה, והקלידו את הסיסמה מחדש. פקודת Repair archive של WinRAR עובדת הכי טוב על ארכיונים שנוצרו עם recovery record, והאפשרות "Keep broken files" שומרת את כל מה שכן חולץ כראוי.
שגיאות checksum במשחקים ובכלי רשת
משחקים משווים checksums של הקבצים שלהם, כך שעדכון חלקי או קובץ ששונה נכשלים בבדיקה. ב-Steam, האפשרות "Verify integrity of game files" מורידה מחדש כל קובץ שה-checksum שלו לא תואם. ב-Wireshark, אזהרות checksum על מנות שהמחשב שלכם עצמו שולח הן בדרך כלל לא שגיאות אמיתיות: כרטיס הרשת ממלא את ה-checksum אחרי ש-Wireshark כבר לכד את המנה.
תפיסות שגויות נפוצות
- "checksum תואם מוכיח שהקובץ בטוח." הוא מוכיח שהקובץ תואם לערך שפורסם. אם תוקף שולט באתר, הוא יכול לשנות את שניהם, ולכן פרויקטים גם חותמים על קובצי ה-checksum שלהם עם מפתח.
- "checksum יכול לתקן קובץ פגום." הוא רק מזהה את הנזק. התיקון הוא להשיג עותק תקין.
- "checksum ו-hash הם דברים שונים." Checksum מתאר את התפקיד; פונקציית גיבוב כמו SHA-256 היא כלי אחד שיכול לבצע אותו.
לאן ממשיכים מכאן
חשבו ערכי MD5, SHA-1 ו-SHA-256 של כל טקסט במחולל הגיבובים. Checksums עובדים על נתונים גולמיים, אז מה זה בייט ומה זה ביט מסבירים מה בעצם מחובר כאן. מסד נתונים משתמש ב-checksums של דפים כדי לתפוס השחתה בדיסק, וההדמיה של טבלת גיבוב מראה שימוש נוסף בערך קצר שמחושב מנתונים.
שאלות נפוצות
האם SHA-256 הוא checksum?
איך מתקנים שגיאת checksum?
מה גורם לשגיאת checksum?
למה צריך checksum?
איך מייצרים checksum?
sha256sum file ב-Linux, ב-shasum -a 256 file ב-macOS או ב-Get-FileHash file ב-PowerShell של Windows. ב-Python, hashlib.sha256(data).hexdigest() נותן checksum מסוג SHA-256, ו-zlib.crc32(data) נותן CRC-32.