באַגאַזלענען באָודאַן: איך בין ראָב, און לאָזן 'ס באַקומען קראַקינג. אזוי געדענקען פון די פּסעט ספּעק אַז מיר ניטאָ געגאנגען צו זייַן נידינג צו נוצן די קריפּט פונקציאָנירן. פֿאַר די מענטש בלאַט, מיר האָבן צוויי האַש דעפינירן _קסאָפּענסאָורסע. צי ניט זאָרג וועגן וואָס מיר דאַרפֿן צו טאָן וואָס. און אויך האַש אַרייַננעמען וניסטד.ה. אזוי אַמאָל אַז ס אויס פון די וועג, לאָזן 'ס באַקומען צו דעם פאַקטיש פּראָגראַם. ערשטער זאַך מיר דאַרפֿן צו טאָן איז מאַכן זיכער דער באַניצער אריין אַ גילטיק ענקריפּטיד Password בייַ די באַפֿעל שורה. געדענקען אַז די פּראָגראַם איז געמיינט צו זייַן לויפן ווי פּונקט צעהאַקן פּלאַצן, און דעמאָלט ענקריפּטיד שטריקל. אזוי דאָ מיר ניטאָ קאָנטראָלירונג צו מאַכן זיכער אַז אַרגק צו צוויי אויב מיר ווילן צו פאָרזעצן מיט דעם פּראָגראַם. אויב אַרגק איז נישט צוויי, אַז מיטל אָדער דער באַניצער האט נישט אַרייַן אַ ענקריפּטיד Password בייַ די באַפֿעל שורה, אָדער זיי אריין מער ווי נאָר די ענקריפּטיד Password בייַ די באַפֿעל שורה, אין וואָס פאַל מיר טאָן ניט וויסן וואָס צו טאָן מיט די באַפֿעל שורה טענות. אזוי אויב אַרגק איז געווען צוויי, מיר קענען פאָרזעצן. און דאָ, מיר ניטאָ געגאנגען צו דערקלערן אַ בייַטעוודיק ענקריפּטיד. אַז ס נאָר געגאנגען צו אַליאַס דער אָריגינעל אַרגוו1 אַזוי אַז איבער דעם פּראָגראַם, מיר טאָן ניט האָבן צו רופן עס אַרגוו1, וואָס דעמאָלט איר האָבן צו טראַכטן וועגן וואָס אַז פאקטיש מענט. אזוי לעסאָף, מיר ווילן צו וואַלאַדייט אַז די ענקריפּטיד Password דער באַניצער אריין קען האָבן פאקטיש געווען אַ ענקריפּטיד Password. פּער דער מענטש בלאַט פון קריפּט, די ענקריפּטיד Password מוזן זייַן 13 אותיות לאַנג. אַרויף דאָ, באַמערקן אַז מיר האַש דיפיינד ינקריפּט לענג ווי 13. אזוי מיר ניטאָ נאָר מאכן זיכער אַז די שטריקל לענג פון די ענקריפּטיד Password איז 13. און אויב עס ס נישט, מיר ווילן צו אַרויסגאַנג די פּראָגראַם. אזוי אַמאָל אַז ס אויס פון די וועג, מיר קענען איצט פאקטיש פּרובירן צו געפינען וואָס די Password וואָס האט די ענקריפּטיד Password איז געווען. דאָ, מיר ווילן צו כאַפּן די זאַלץ פון די ענקריפּטיד Password. געדענקען, פּער דער מענטש בלאַט, אַז די ערשטער צוויי אותיות פון אַ ענקריפּטיד שטריקל, ווי דאָ - 50זפּדזש און אַזוי אויף - דער ערשטער צוויי אותיות געבן אונדז די זאַלץ וואָס איז געניצט אין די קריפּט פונקציאָנירן. און דאָ, מיר זען אַז די זאַלץ איז המגיד. אזוי מיר ווילן צו נאָכמאַכן די ערשטער צוויי אותיות, זאַלץ לענג זייַענדיק האַש דיפיינד ווי צוויי. מיר האָבן צו נאָכמאַכן די ערשטער צוויי אותיות אין דעם מענגע, זאַלץ. באַמערקן אַז מיר דאַרפֿן זאַלץ לענג פּלוס איינער, זינט מיר נאָך דאַרפֿן אַ נאַל טערמינאַטאָר אין די סוף פון אונדזער זאַלץ. דעמאָלט מיר ניטאָ געגאנגען צו דערקלערן דעם מענגע, גאַסט, פון גרייס מאַקס לענג פּלוס איינער, ווו מאַקס לענג איז האַש דיפיינד ווי אַכט, זינט די מאַקסימום Password איז אַכט אותיות לאַנג. און מיר ניטאָ געגאנגען צו נוצן דעם צו יטעראַטע איבער אַלע מעגלעך סטרינגס וואָס קען זייַן גילטיק פּאַסווערדז. אזוי אויב דער גילטיק אותיות אין אַ פּאַראָל זענען נאָר אַ, ב, און C, דעמאָלט מיר וואָלט יטעראַטע איבער אַ, ב, C, אַאַ, באַ, CA, און אַזוי אויף, ביז מיר באַקומען צו זען קקקקקקקק - אַכט C ס. און אויב מיר האָבן נישט אַראָפּ אַ גילטיק Password, דעמאָלט מיר דאַרפֿן צו זאָגן אַז די ענקריפּטיד שטריקל איז ניט גילטיק צו נעמען מיט. אזוי איצט, מיר דערגרייכן דעם בשעת 1 שלייף. באַמערקן אַז מיטל עס ס אַ ינפאַנאַט שלייף. באַמערקן עס זענען ניט ברעכן דערקלערונג ין פון דעם ינפאַנאַט שלייף. עס זענען נאָר צוריקקומען סטייטמאַנץ. אזוי מיר קיינמאָל פאקטיש דערוואַרטן צו אַרויסגאַנג די שלייף. מיר נאָר דערוואַרטן צו אַרויסגאַנג די פּראָגראַם. איך ווע צוגעגעבן דעם דרוק דערקלערונג צו די שפּיץ פון דעם שלייף צו נאָר דרוקן אויס וואָס אונדזער איצטיקן טרעפן בייַ וואָס די Password איז. איצט, וואָס איז דאָס שלייף טאן? עס ס לופּינג איבער אַלע מעגלעך סטרינגס וואָס קען זייַן גילטיק פּאַסווערדז. דער ערשטער זאַך מיר ניטאָ געגאנגען צו טאָן איז נעמען אונדזער איצטיקן טרעפן פֿאַר וואָס די Password איז. מיר וועט נעמען די זאַלץ וואָס מיר גראַבד פון די ענקריפּטיד שטריקל, און מיר רע געגאנגען צו ינקריפּט די טרעפן. דאס וועט געבן אונדז אַ ענקריפּטיד טרעפן, וואָס מיר ניטאָ געגאנגען צו פאַרגלייַכן קעגן די ענקריפּטיד שטריקל וואָס דער באַניצער אריין אין די באַפֿעל שורה. אויב זיי זענען די זעלבע, אין וועלכע פאַל שטריקל פאַרגלייַכלעך וועט צוריקקומען נול, אויב זיי ניטאָ די זעלבע, דעמאָלט טרעפן איז געווען די Password אַז דזשענערייטאַד די ענקריפּטיד שטריקל, אין וועלכע פאַל מיר קענען דרוק אַז ווי אונדזער פּאַראָל און קריק. אבער אויב זיי זענען נישט די זעלבע, אַז מיטל אונדזער טרעפן איז פאַלש. און מיר ווילן צו יטעראַטע צו דער ווייַטער גילטיק טרעפן. אזוי אַז ס וואָס דאָס בשעת שלייף איז טריינג צו טאָן. עס ס געגאנגען צו יטעראַטע אונדזער טרעפן צו די ווייַטער גילטיק טרעפן. באַמערקן אַז ווען מיר זאָגן אַז אַ באַזונדער כאַראַקטער אין אונדזער טרעפן האט ריטשט די מאַקס סימבאָל, וואָס אַרויף דאָ איז האַש דיפיינד ווי אַ טילדע, זינט אַז ס דער גרעסטער אַסקי ווערט כאַראַקטער אַז אַ באַניצער קענען אַרייַן אין די קלאַוויאַטור, ווען דער כאַראַקטער ריטשאַז די מאַקס סימבאָל, דעמאָלט מיר ווילן צו שיקן עס צוריק צו דער מינימום סימבאָל, וואָס איז אַ פּלאַץ, ווידער די לאָואַסט אַסקי ווערט סימבאָל אַז אַ באַניצער קענען אַרייַן אין די קלאַוויאַטור. אזוי מיר ניטאָ געגאנגען צו שטעלן אַז צו די מינימום סימבאָל. און דעמאָלט מיר ניטאָ געגאנגען צו גיין אויף צו דער ווייַטער כאַראַקטער. אזוי ווי זענען אונדזער געסיז געגאנגען צו יטעראַטע? נו, אויב די גילטיק אותיות זענען אַ, ב, און C, דעריבער אויב מיר אנגעהויבן מיט אַ, עס וועט יטעראַטע צו בייטן, עס וועט יטעראַטע צו C. C איז אונדזער מאַקס סימבאָל, אַזוי מיר וועט שטעלן C צוריק צו אַ, די מינימום סימבאָל. און דעמאָלט מיר וועט יטעראַטע אינדעקס צו די ווייַטער כאַראַקטער. אזוי אויב דער אָריגינעל טרעפן איז C, דער ווייַטער כאַראַקטער איז געגאנגען צו זייַן די נאַל טערמינאַטאָר. אַראָפּ דאָ, באַמערקן אַז אויב דער כאַראַקטער אַז מיר איצט ווילן צו ינקראַמאַנט איז געווען די נאַל טערמינאַטאָר, דעמאָלט מיר ניטאָ געגאנגען צו שטעלן אים צו די מינימום סימבאָל. אזוי אויב דער טרעפן איז C, דעמאָלט אונדזער נייַ טרעפן איז געגאנגען צו זייַן אַאַ. און אויב אונדזער אָריגינעל טרעפן איז געווען קקקק, דעמאָלט אונדזער נייַ טרעפן איז געגאנגען צו זייַן אַאַאַאַאַ. אזוי ווען מיר דערגרייכן די מאַקסימום שטריקל פון אַ געגעבן לענג, דעמאָלט מיר רע געגאנגען צו ינסטרומענט צו די מינימום שטריקל פון דער ווייַטער לענג, וואָס וועט נאָר זייַן אַלע אותיות פון די מינימום סימבאָל. איצט, וואָס איז דעם טשעק טאן דאָ? נו, אויב אינדעקס אריבערגעפארן פון דער אַכט כאַראַקטער צו די נייַן כאַראַקטער - אַזוי מיר לייגן אַכט C ס ווי אונדזער פֿריִערדיקע טרעפן - דעמאָלט אינדעקס איז געגאנגען צו פאָקוס אויף די לעצטע נאַל טערמינאַטאָר פון אונדזער טרעפן מענגע, וואָס איז נישט מענט צו פאקטיש זייַן געניצט אין אונדזער פּאַראָל. אזוי אויב מיר זענען פאָוקיסט אויף אַז לעצט נאַל טערמינאַטאָר, דעמאָלט מיר האָבן נישט געפונען אַ Password אַז ס גילטיק ניצן נאָר אַכט אותיות, וואָס מיטל עס איז ניט גילטיק Password אַז ענקריפּץ צו די געגעבן שטריקל. און מיר האָבן צו דרוקן אַז, געזאגט מיר קען נישט געפינען אַ גילטיק Password, און קריק. אזוי דעם בשעת שלייף איז געגאנגען צו יטעראַטע איבער אַלע מעגלעך סטרינגס. אויב עס געפינט קיין אַז ענקריפּץ צו די געריכט ענקריפּטיד שטריקל, עס וועט צוריקקומען אַז Password. און עס עס טוט נישט געפינען עפּעס, דעמאָלט עס וועט צוריקקומען, דרוקן אַז עס איז געווען נישט ביכולת צו געפינען עפּעס. איצט, באַמערקן אַז יטעראַטינג איבער אַלע מעגלעך סטרינגס איז מיסטאָמע געגאנגען צו נעמען אַ בשעת. זאל ס פאקטיש זען ווי לאַנג אַז נעמט. זאל ס מאַכן פּלאַצן. נו, אָאָפּס - עס זאגט undefined דערמאָנען צו קריפּט. אזוי געדענקען, פֿאַר דער פּ שטעלט ספּעק און אויך דער מענטש בלאַט פֿאַר קריפּט אַז מיר דאַרפֿן צו לינק אין קריפּט. איצט, די פעליקייַט מאַכן באַפֿעל טוט ניט וויסן אַז איר ווילן צו נוצן וואָס פונקציאָנירן. אזוי לאָזן ס קאָפּיע דעם קליענט באַפֿעל און נאָר לייגן אויף צו די סוף פון עס, פֿאַרבינדונג קריפּט. איצט, עס קאַמפּיילז. אזוי לאָזן 'ס לויפן פּלאַצן אויף אַ געגעבן ענקריפּטיד שטריקל - אַזוי קיסר 'ס. אזוי אַז איז געווען שיין שנעל. באַמערקן אַז דעם געענדיקט אויף 13. נו, קיסר 'ס ענקריפּטיד Password כאַפּאַנז צו זייַן 13. אזוי לאָזן ס פּרובירן אנדערן Password. זאל ס נעמען הירסטשהאָרן ס ענקריפּטיד Password און פּרובירן קראַקינג אַז. אזוי באַמערקן מיר ווע שוין ריטשט דרייַ אותיות. און מיר ניטאָ יטעראַטינג איבער אַלע מעגלעך דרייַ-כאַראַקטער סטרינגס. אַז מיטל מיר ווע שוין ענדיקן יטעראַטינג איבער אַלע מעגלעך איין און צוויי כאַראַקטער סטרינגס. איצט, עס קוקט ווי דעם איז געגאנגען צו נעמען אַ בשעת איידער מיר דערגרייכן די פיר-כאַראַקטער סטרינגס. עס זאל נעמען אַ פּאָר פון מינוט. עס האט נישט נעמען אַ פּאָר פון מינוט. מיר ניטאָ אויף די פיר-כאַראַקטער סטרינגס. אבער איצט, מיר דאַרפֿן צו יטעראַטע איבער אַלע מעגלעך פיר-כאַראַקטער סטרינגס, וואָס וואָס זאל נעמען אפֿשר 10 מינוט. און דעריבער ווען מיר דערגרייכן פינף כאַראַקטער סטרינגס, מיר דאַרפֿן צו יטעראַטע איבער אַלע פון יענע, וואָס זאל נעמען אַ פּאָר שעה. און מיר דאַרפֿן צו יטעראַטע איבער אַלע מעגלעך זעקס-כאַראַקטער סטרינגס, וואָס זאל נעמען אַ פּאָר טעג און אַזוי אויף. אזוי עס קען נעמען אַ פּאַטענטשאַלי זייער לאַנג צייַט צו יטעראַטע איבער אַלע מעגלעך אַכט-כאַראַקטער און ווייניקערע סטרינגס. אזוי באַמערקן אַז דאָס איז נישט דאַווקע אַ זייער עפעקטיוו אַלגערידאַם פֿאַר געפונען אַ פּאַראָל. איר זאל טראַכטן אַז דאָרט ביסט בעסער וועגן. למשל, די Password זיקס! 32אַב מיסטאָמע איז נישט אַ זייער פּראָסט Password, כוועראַז די Password 12,345 איז מיסטאָמע אַ פּלאַץ מער פּראָסט. אזוי איין וועג פון טריינג צו געפינען אַ פּאַראָל מער געשווינד איז צו נאָר קוקן בייַ פּאַסווערדז וואָס זענען מער פּראָסט. אזוי למשל, מיר קענען פּרובירן צו לייענען ווערטער פון אַ ווערטערבוך און פּרובירן אַלע פון יענע ווערטער ווי אונדזער פּאַראָל געסיז. איצט, אפֿשר אַ פּאַראָל איז נישט אַז פּשוט. אפֿשר דער באַניצער איז געווען עפּעס קלוג און פּרובירן אַפּפּענדינג אַ נומער צו דער סוף פון אַ וואָרט. אזוי אפֿשר זייער פּאַראָל איז פּאַססוואָרד1. אזוי איר קענען פּרובירן יטעראַטינג איבער אַלע ווערטער אין דער ווערטערבוך מיט אַ איין אַפּפּענדעד צו די סוף פון עס. און דעריבער אפֿשר נאָך טאן אַז, איר וועט צוגעבן אַ צוויי צו די סוף פון עס. אָדער אפֿשר דער באַניצער איז טריינג צו זייַן אַפֿילו מער קלוג, און זיי ווילן זייער Password צו זייַן "העקער," אָבער זיי ניטאָ געגאנגען צו פאַרבייַטן אַלע ינסטאַנסיז פון E ס מיט טריז. אזוי איר קען טאָן דעם אויך. יטעראַטע איבער אַלע ווערטער אין דער ווערטערבוך אָבער פאַרבייַטן אותיות אַז קוקן ווי נומערן מיט די נומערן. אזוי דעם וועג, איר זאל כאַפּן אַפֿילו מער פּאַסווערדז אַז ביסט שיין פּראָסט. אבער אין די סוף, דער נאָר וועג איר קענען כאַפּן אַלע פּאַסווערדז איז צו ברוט קראַפט יטעראַטע איבער אַלע מעגלעך סטרינגס. אזוי אין די סוף, איר טאָן דאַרפֿן צו יטעראַטע איבער אַלע סטרינגס פון איין כאַראַקטער צו אַכט אותיות, וואָס זאל נעמען אַ זייער לאַנג צייַט, אָבער איר דאַרפֿן צו טאָן עס. מייַן נאָמען איז ראָב באָוודען. און דאָס איז שפּאַלטן.