ROB BOWDEN: mwen se Rob, ak kite a jwenn fann. Se konsa, sonje soti nan espèk a pset ki nou pral yo dwe ki bezwen yo sèvi ak nan kripte fonksyon. Pou paj la moun, nou gen de regle defini _xopensource. pa enkyete sou poukisa nou bezwen fè sa. Epi tou regle gen ladan unistd.h. Se konsa, yon fwa sa a, se soti nan fason an, se pou yo jwenn nan pwogram aktyèl la. Bagay Premye nou bezwen fè se asire w ke itilizatè a antre nan yon chiffres ki valab modpas nan liy lan lòd. Sonje ke se pwogram nan sipoze yo dwe kouri tankou krak dot koupe, ak Lè sa a, chiffres fisèl. Se konsa, isit la nou ap tcheke asire w ki arg nan de si nou vle kontinye ak pwogram nan. Si arg se pa de, sa vle di swa itilizatè a pa t 'antre nan yon chiffres modpas nan liy la bay lòd, oswa yo te antre nan pi plis pase jis chiffres a modpas nan liy la bay lòd, nan ki ka nou pa konnen ki sa fè ak an lòd liy agiman. Se konsa, si arg te de, nou ka kontinye. Ak isit la, nou pral deklare yon chiffres varyab. Se jis ale nan alyas orijinal la argv1 pou ke nan tout sa a pwogram nan, nou pa gen yo rele li argv1, ki Lè sa a, ou gen yo panse sou sa ki ki aktyèlman vle di. Se konsa, finalman, nou vle valide ki modpas la chiffres itilizatè a te antre nan te kapab aktyèlman te yon modpas chiffres. Pou chak paj la nan moun nan kripte, chiffres modpas dwe 13 karaktè nan longè. Moute isit la, remake ke nou regle yo defini ankripte longè kòm 13. Se konsa, nou jis ap fè a asire w ke longè fil nan chiffres a modpas se 13. Men, si li pa, nou vle sòti pwogram nan. Se konsa, yon fwa sa a, se soti nan fason an, nou ka kounye a aktyèlman eseye jwenn sa a modpas ki te bay chiffres a modpas te ye a. Isit la, nou vle gen tan pwan sèl la soti nan modpas la chiffres. Sonje byen, pou chak paj la moun, ki la de premye karaktè nan yon chiffres fisèl, renmen isit la - 50ZPJ yo ak sou sa - de premye karaktè yo bay nou sèl la ki te itilize nan fonksyon an kripte. Ak isit la, nou wè ke sèl la te ha. Se konsa, nou vle a kapab bay kopi de nan premye karaktè, longè sèl ke yo te regle defini kòm de. Nou gen a kapab bay kopi de premye karaktè yo nan sa a etalaj, sèl. Remake nou bezwen longè sèl plis yon sèl, depi nou toujou bezwen yon nil Terminator nan fen sèl nou an. Lè sa a, nou pral deklare sa a etalaj, envite, longè max gwosè plis yon sèl, kote max longè se regle yo defini kòm uit, depi modpas la maksimòm se uit karaktè nan longè. Epi nou ap ale nan sèvi ak sa a répétèr sou tout strings posib ke te kapab gen modpas ki valid. Se konsa, si karaktè yo valab nan yon modpas yo te jis yon, B, ak C, lè sa a nou ta repekte sou yon, B, C, aa, BA, ca, ak sou sa, jouk nou jwenn yo wè cccccccc - uit a c. Men, si nou pa gen desann yon valab modpas, Lè sa a, nou bezwen yo di ke la chiffres fisèl pa t ' ki valid yo kòmanse avèk yo. Se konsa, kounye a, nou rive jwenn sa a pandan y ap 1 bouk. Avi sa vle di li nan yon bouk enfini. Avi pa gen okenn deklarasyon kraze andedan nan sa a bouk enfini. Gen yo, se sèlman retounen deklarasyon. Se konsa, nou pa janm aktyèlman atann sòti bouk la. Nou sèlman espere soti nan pwogram nan. Mwen te ajoute deklarasyon sa a ekri an lèt detache a tèt sa a bouk jis enprime soti sa ki devine aktyèl nou an nan sa modpas la se. Koulye a, ki sa ki sa a bouk fè la a? Li nan loupin sou tout strings posib ki te kapab modpas ki valid. Premye bagay nou pral fè se pran devine nou an ki ajou pou sa a modpas se. Nou pral pran sèl la ke nou te pwan soti nan fisèl la chiffres, epi nou ap ale nan ankripte devine la. Sa ap ba nou yon devine chiffres, ki nou ap ale nan konpare kont fisèl la chiffres ki itilizatè a te antre nan nan liy lan lòd. Si yo se menm bagay la, nan ka sa a fisèl konparab ap retounen zewo, si yo ap menm bagay la tou, lè sa a devine te la modpas ki te pwodwi chiffres a fisèl, nan ka sa a nou ka ekri ak lèt ​​detache ke kòm modpas nou yo ak retounen. Men, si yo pa t 'menm bagay la tou, ki vle di devine nou an te kòrèk. Men, nou vle répétèr pwochen devine nan ki valid. Se konsa, se sa ki sa a pandan y ap bouk ap eseye fè. Li nan ale nan répétèr devine nou nan pwochen devine nan ki valid. Remake lè nou di ke yon N. patikilye nan devine nou an ki gen rive jwenn senbòl la max, ki moute isit la se regle defini kòm yon tild, depi sa a, se karaktè nan pi gwo ASCII valè ke yon itilizatè kapab antre nan la klavye, lè pèsonaj la rive nan nan max senbòl, lè sa a nou vle voye li tounen nan senbòl minimòm-nan, ki se yon espas, ankò ASCII ki pi ba a senbòl valè ke yon itilizatè kapab antre nan klavye la. Se konsa, nou ap ale nan mete ki senbòl la minimòm. Lè sa a, nou pwal ale sou pèsonaj la kap vini an. Se konsa, kouman yo devine nou ale nan répétèr? Bon, si karaktè yo ki valab se yon b,, ak c, lè sa a si nou te kòmanse avèk yon, li pral répétèr b, li pral répétèr c. c se senbòl max nou an, se konsa nou ap mete c tounen nan yon, senbòl minimòm-nan. Lè sa a, nou pral répétèr endèks pèsonaj la kap vini an. Se konsa, si devine orijinal la te c, pwochen an N. a pwal nil la Terminator. Desann isit la, remake ke si pèsonaj la ke nou kounye a ou vle enkreman te Terminator a nil, Lè sa a, nou pral mete l 'nan la minimòm senbòl. Se konsa, si devine a te c, Lè sa a, nou nouvo devine a pwal aa. Men, si devine orijinal nou an te cccc, Lè sa a devine nou nouvo a pwal aa. Se konsa, chak fwa nou rive nan fisèl la maksimòm nan yon longè yo bay yo, Lè sa a, nou ap ale nan aplike nan fisèl la minimòm nan longè a kap vini an, ki pral jis pou tout karaktè nan senbòl la minimòm. Koulye a, ki sa ki chèk sa-a ap fè isit la? Bon, si endèks te deplase soti nan wityèm lan N. pèsonaj la nèf - pou nou ajoute uit a c kòm anvan nou devine - Lè sa a, endèks ki pral konsantre sou la dènye nil Terminator nan devine nou etalaj, ki pa vle di ke yo aktyèlman dwe itilize nan modpas nou an. Se konsa, si nou yo ap chita sou ki nil dènye Terminator, lè sa a nou pa yo te jwenn yon modpas ki nan valab lè l sèvi avèk jis wit karaktè, ki vle di pa gen okenn valab modpas ki chifre nan fisèl la bay yo. Epi nou gen ekri ak lèt ​​detache ki, li di nou pa t 'kapab jwenn yon ki valab modpas, epi retounen. Se konsa, sa a bouk pandan y ap ki pral répétèr sou tout strings posib. Si li jwenn nenpòt ki chifre a espere fisèl chiffres, li pral retounen ki modpas. Epi li li pa jwenn anyen, lè sa a li pral retounen, enprime ke li pa t 'kapab jwenn anyen. Koulye a, remake ke iteration sou tout strings posib se pwobableman ale nan pran yon ti tan. Se pou yo aktyèlman wè ki jan long ki pran. Se pou yo fè krak. Oke, Oops - li di endefini referans a kripte. Se konsa, sonje, pou p la kouche espèk ak tou moun paj la pou kripte ke nou bezwen lyen an nan kripte. Koulye a, default la fè lòd pa konnen ke ou vle itilize ke fonksyon. Se konsa, kite a kopi lòd sa a kliyan ak jis ajoute sou nan fen a nan li, ki lye ak kripte. Koulye a, li compiles. Se konsa, nan kite kouri krak sou yon bay chiffres fisèl - se konsa pou Seza. Se konsa, ki te trè vit. Remake sa a te fini sou 13. Oke, chiffres modpas Seza a k ap pase yo 13. Se konsa, kite nan eseye yon lòt modpas. Ann pran chiffres Hirschhorn a modpas epi eseye bravo sa. Se konsa, remake nou te deja rive twa karaktè. Men, nou ap iteration sou tout sa ki posib twa-karaktè strings. Sa vle di nou te deja fini iteration sou tout yon sèl posib ak de karaktè strings. Koulye a, li sanble tankou sa a ki pral pran yon pandan y ap anvan nou rive jwenn nan kat-karaktè strings. Li ta ka pran yon koup la minit. Li pa t 'pran yon koup la minit. Nou sou strings yo kat karaktè. Men koulye a,, nou bezwen répétèr sou tout posib kat karaktè strings, ki ki ta ka pran petèt 10 minit. Lè sa a, lè nou rive nan senk karaktè strings, nou bezwen répétèr sou tout nan tout sa yo, ki ta ka pran yon èdtan koup. Men, nou bezwen répétèr sou tout sa ki posib sis-karaktè strings, ki ta ka pran yon jou koup ak sou sa. Se konsa, li ta kapab pran yon potansyèlman trè long tan yo répétèr sou tout sa ki posib uit-karaktè ak strings mwens. Se konsa, remake ke sa a se pa nesesèman yon trè efikas algorithm pou jwenn yon modpas. Ou ta ka panse ke gen se pi bon fason. Pou egzanp, modpas zyx a! 32ab pwobableman se pa yon modpas trè komen, Lè nou konsidere ke modpas la 12345 se pwobableman yon anpil plis komen. Se konsa, yon fason nan ap eseye jwenn yon modpas pi vit se jis gade nan modpas ki gen plis komen. Se konsa, pou egzanp, nou ka eseye li mo ki sòti nan yon diksyonè epi eseye tout mo sa yo kòm devine modpas nou an. Koulye a, petèt yon modpas se pa sa ki senp. Petèt itilizatè a te yon ti jan entelijan epi eseye ajoutant yon nonm a nan fen yon mo. Se konsa, petèt modpas yo te password1. Se konsa, ou ka eseye iteration sou tout mo nan diksyonè a ak yon sèl anèks nan fen a nan li. Lè sa a, petèt apre yo fin fè sa, ou pral kole yon de nan fen a nan li. Oswa petèt itilizatè a ap eseye yo dwe menm plis entelijan, e yo vle yo modpas yo dwe "HACKER," men yo ap ale nan ranplase tout tan nan la e ak threes. Se konsa, ou ta ka fè sa a tou. Répétèr sou tout mo nan diksyonè a men ranplase karaktè ki gade tankou nimewo ak chif sa yo. Se konsa, fason sa a, ou ta ka trape menm plis modpas ki yo trè komen. Men, nan fen a, yon fason a sèlman ou kapab pran tout modpas se brital fòse répétèr sou tout strings posib. Se konsa, nan fen a, ou bezwen répétèr sou tout strings soti nan yon karaktè uit karaktè, ki ta ka pran yon trè long tan, men ou bezwen fè li. Non mwen se Rob Bowden. Lè sa a se krak.