Command Palette

Search for a command to run...

אלגוריתם לוהן: כיצד עובד אימות כרטיסי אשראי

אלגוריתם לוהן: כיצד עובד אימות כרטיסי אשראי

T
Toolz Team
|Sep 13, 2026|16 קריאה דקות
העדיפו את Toolz.dev בגוגל

חלק מאוסף אבטחה

מאמת כרטיסי אשראי

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

השתמש ב-מאמת כרטיסי אשראי

אני בונה Toolz.dev, ולפני כן ביליתי שנים במשלוח של תוספי וורדפרס וממשקי API של Laravel, שכמה מהם היו צריכים לקחת תשלומים טופס התשלום הראשון שכתבתי אי פעם שלח כל מספר כרטיס שהקליד שגוי ישר לשער התשלום וחיכה שהוא יקפוץ זה עבד, טכנית, אבל זה היה איטי והוא צרב דרך בקשות שער על מספרים שמעולם לא יכלו להיות תקפים מלכתחילה התיקון היה קטן בצורה מביכה: הפעל את סכום הבדיקה של Luhn בדפדפן לפני ההגשה השינוי האחד הזה תפס את רוב שגיאות ההקלדה באופן מיידי ועצר זרם של שיחות API חסרות טעם מדריך זה עוסק בבדיקה זו, כללי הקידומת שיושבים לידו, וה מאמת כרטיסי אשראי בניתי כך שלעולם לא צריך ליישם מחדש גם מהזיכרון.

TL;DR: מאמת כרטיס אשראי מאשר שמספר נכון מבחינה מבנית, לא שהוא שייך לחשבון אמיתי הוא מריץ שני בדיקות עצמאיות: סכום הבדיקה של Luhn מ-ISO/IEC 7812-1, שתופס כמעט כל שגיאת הקלדה חד ספרתית והטרנספוזיציה סמוכה, ובדיקת אורך וקידומת מול כל רשת ' טווחי מנפיקים שפורסמו מספר יכול לעבור אחד ולהיכשל בשני, כך ששתי התוצאות מדווחות בנפרד הוא פועל כולו בדפדפן שלך, כך שאף מספר כרטיס לא מועלה מעולם, והוא לעולם לא יכול להגיד לך אם יש על כרטיס כסף רק המנפיק יודע את זה.

מה זה אומר שמספר כרטיס יהיה תקף?

מספר כרטיס תשלום, רשמית מספר חשבון ראשי או PAN, אינו מחרוזת ספרות אקראית. המבנה שלו מוגדר על ידי ISO/IEC 7812. שש עד שמונה הספרות הראשונות הן מספר זיהוי המנפיק, או IIN, שבעבר נקרא מספר זיהוי הבנק (BIN). ספרות אלו מזהות את הרשת ואת הבנק המנפיק. הספרות שאחריו עד השני אחרון הן מזהה החשבון הבודד, והספרה האחרונה היא ספרת ביקורת המחושבת עם אלגוריתם Luhn.

אז "valid" יש שתי משמעויות נפרדות, וזה עוזר לשמור אותם בנפרד הראשון הוא שהמספר מציית ל-Luhn checksum, כלומר ספרת הביקורת תואמת לשאר המספר השני הוא שלמספר יש את האורך והקידומת הנכונים עבור רשת כרטיסים אמיתית מספר יכול לעמוד בתנאי אחד ולא את השני. 4111 1111 1111 1112 בעל קידומת ויזה ואורך ויזה אך נכשל לוהן מחרוזת אקראית בת שש עשרה ספרות שמסתיימת במקרה בספרת הביקורת הימנית עוברת את לוהן אך עשויה להתחיל בקידומת שאין בבעלותה של רשת מאמת טוב אומר לך מי מהשניים נכשל, כי התיקון שונה בכל מקרה.

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

כיצד פועל אלגוריתם Luhn?

אלגוריתם לוהן, הנקרא גם אלגוריתם mod-10, רשם פטנט על ידי הנס פיטר לוהן ב-IBM בשנת 1960 והוא נמצא כעת ברשות הציבור זהו סכום בדיקה, מה שאומר שכל מטרתו היא לזהות שגיאות מקריות, לא לספק אבטחה כלשהי זה עובד ככה החל מהספרה הימנית ביותר וזזה שמאלה, אתה מכפיל כל ספרה שנייה אם הכפלה מייצרת מספר גדול מתשע, אתה מפחית ממנו תשע (שזה זהה לחיבור שתי הספרות שלו יחד) ואז אתה מסכם את כל הספרות, הכפולות והלא נגועות אם הסכום הכולל מתחלק בעשר, המספר עובר.

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

הערך של לוהן הוא במה שהוא תופס הוא מזהה כל שגיאה חד ספרתית, כלומר כל ספרה אחת שהוקלדה בצורה שגויה הוא גם תופס כמעט כל טרנספוזיציה של שתי ספרות סמוכות, הקלאסי " הקלדתי 21 במקום 12" טעות, למעט חריג אחד ידוע: הוא לא תופס החלפה של 09 ו 90, כי שניהם ממפים לאותו סכום משוקלל. זה נקודה עיוורת אמיתית, אבל זה נדיר, וזו הסיבה שלוהן הוא סכום בדיקה ולא ערבות קריפטוגרפית. לאימות טופס זה די והותר טוב, וזו הסיבה שהוא יושב מאחורי שדות הכרטיסים של בעצם כל קופה באינטרנט.

כיצד מזוהה רשת הכרטיסים?

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

רשת מתחיל עם אורכים תקפים קוד אבטחה
ויזה 4 13, 16, 19 3
מאסטרקארד 51-55, 2221-2720 16 3
אמריקן אקספרס 34, 37 15 4
לגלות 6011, 65, 644-649, 622126-622925 16, 19 3
דיינרס קלאב 300-305, 309, 36, 38-39 14, 16, 19 3
JCB 3528-3589 16-19 3
UnionPay 62 16-19 3
מאסטרו 50, 56-69 (נבחר) 12-19 3

החפיפות הן החלק המעניין, ולטעות בהן היא עד כמה גלאים תמימים פוגעים באש. מאסטרקארד הוסיפה את 2221-2720 טווח בשנת 2017, אז גלאי שנכתב לפני כן מדווח על הכרטיסים האלה כלא ידועים. Discover הוא הבעלים של פרוסה צרה של 62 מֶרחָב, 622126 דרך 622925, בעוד UnionPay מחזיקה בשאר 62, אז הסדר שאתה בודק אותם בו מחליט אם א 6221 הכרטיס נקרא Discover או UnionPay. המאמת בודק את חלון ה-Discover הספציפי לפני הקידומת הרחבה של UnionPay כך ששניהם נוחתים כהלכה. אמריקן אקספרס היא זו שמעבירה את קוד העיצוב, מכיוון שהיא משתמשת בחמש עשרה ספרות המקובצות 4-6-5 ולא בארבע הקבוצות הרגילות של ארבע, והיא משתמשת בקוד אבטחה בן ארבע ספרות (ה-CID מודפס בחזית) ולא ב-CVV בן שלוש הספרות מאחור.

כיצד להשתמש במאמת כרטיס האשראי

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

שלב 1: הזן את המספר

הקלד או הדבק את מספר הכרטיס בשדה. רווחים ומקפים מתעלמים, אז 4111-1111-1111-1111, 4111 1111 1111 1111, ו 4111111111111111 הכל מאמת באופן זהה. זה משנה כי קלט אמיתי מגיע בכל פורמט: מועתק מגיליון אלקטרוני, קרא כרטיס או נשלף ממתקן בדיקה.

שלב 2: קרא את פסק הדין

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

שלב 3: בדוק את הרשת שזוהתה

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

שלב 4: העתק את המספר המעוצב או המסווה

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

איפה מתאים אימות, ואיפה הוא נעצר?

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

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

איך זה בהשוואה לאימות בשרת?

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

כלים קשורים וקריאה נוספת

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

עבור ההקשר הרחב יותר, ה פרטיות נתונים וכלים מקוונים המדריך מסביר מדוע הפעלת בדיקות רגישות חשובה בצד הלקוח, וה מדריך כלי קידוד מעמיד את המאמת בהקשר של שאר מפתח's ערכה יומית. Everything on Toolz.dev פועל בדפדפן שלך, וזו כל הסיבה שמספר כרטיס בטוח להדביק בו: הוא אף פעם לא עוזב את המכשיר שלך.

שאלות נפוצות

מה בודק אלגוריתם לוהן?

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

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

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

כיצד מתגלה מותג הכרטיסים מהמספר?

המותג נקרא מהספרות הראשונות, מספר זיהוי המנפיק. ויזה מתחילה ב-4, מאסטרקארד עם 51-55 או 2221-2720, אמריקן אקספרס עם 34 או 37 וכן הלאה. כל רשת מאפשרת גם רק אורכים הכוללים מסוימים, כך שהמאמת בודק את הקידומת והאורך יחד ומדווח על הרשת שהיא התאימה.

האם זה בטוח להזין מספר כרטיס לכלי זה?

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

למה הכרטיס האמיתי שלי עובר את לוהן אבל נכשל בבדיקת האורך?

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

מהם מספרי כרטיסי בדיקה ומדוע הם קיימים?

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

מה ההבדל בין ה-CVV למספר הכרטיס?

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

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

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


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!