PCPROG.3

26 Jul 1993 - 22 Apr 1994

Messages - algoritmi

algoritmi.105 dr.grba, -> #85, niklaus
>> Stvar je sledeća... Ljudi od kojih će se, u jednom trenutku >> njihovog srećnog programerskog života, tražiti da naprave algoritam >> za sigurno čuvanje šifara, bi trebalo da su dovoljno inteligentni >> da pronađu dovoljno siguran algoritam, ili da su jednostavno u >> stanju da od ponuđenih algoritama, nađu onaj sa najmanjom >> verovatnoćom za "provalu". Valjda imam poznanike matematičare od kojih bih tražio da mi naprave valjan matematički model.
algoritmi.104 dr.grba, -> #83, nkbog
>> 1*K1+2*K2+3*K3+4*K4 = 706 (2C2h), gde su K1 do K4 ASCII kodovi Da, tačno je. >> p.s. Program je bio PKLITE-ovan, Da, tačno je. >> pisan u nekakvom Borlandovom paketu (paskalu?) Turbo Pascal 6.0 (: >> p.p.s. Nešto posle 12h sam završio poziv Sezama, >> u 12:40 pišem ovu poruku, ukupno vreme do nalaženja prve lozinke je Skidam kapu i priznajem poraz. Razbi čovek program k'o Panta pitu. P.S. A valjanost programa branim i dalje, shodno potrebi. I shvatite već jednom šta sam hteo time da kažem. P.P.S. 'Ajde da bar nešto da svi izvučemo pouku. Da li si u razbijanju koristio znanje o algoritmu transformacije? Da li si išao redom od dužine 1, pa 2, pa 3, pa našao na 4 (lozinka zbilja ima 4 znaka, ali nije nijedna od navedenih; baš bi bilo zanimljivo istražiti koliko ih ima, kao išta bi se desilo da je funkcija case sensitive)? Koliko bi razbijač radio da je lozinka zbilja bila duga 20 karaktera? Pozdrav, Grba
algoritmi.106 dr.grba, -> #87, peca.st
>> Jer, cilj je bio da se iz otiska ne može naći šifra koja će >> dati takav otisak! Nije tačno.
algoritmi.107 m.hristodulo, -> #73, dejanr
>> Mislim da cemo najlakse to naci ako neko izvadi >> odgovarajuci deo koda iz source-a za neki PD >> Unix. 386BSD je PD Unix, dakle besplatan je, ali se zabranjuje njegov izvoz izvan granica USA, zapravo njegov algoritam za kriptovanje lozinki. Ipak, u BG postoji jedan takav BSD, ali ne bih smeo reci kod koga.
algoritmi.108 spantic, -> #107, m.hristodulo
> 386BSD je PD Unix, dakle besplatan je, ali > se zabranjuje njegov izvoz izvan granica USA, Zanimljivo je da se ni na samom Internetu, na kome teoretski važe američka pravila igre to niko ne poštuje. Podršku za mnoge zabranjene stvari iz Amerike se može naći na dosta mesta.
algoritmi.109 peca.st, -> #96, snemcev
!-> Ne, nemoram. Ni uz jedan paket nisi dobio !-> papirić na kome piše "Ulazna lozinka kao !-> rezultat transformacije daje broj !-> 908213-3126". Meni se sve čini da ti ne znaš o čemu se diskutuje ovde. :( Ako ne mogu da dođem do rezultata transformacije, onda transformacija nema efekta, čak ima kontra efekat! Jer, ako se rezultat tako dobro sakrije da ne mogu da dođem do njega, zašto onda original nije tako dobro sakriven? Još jednom: poenta je da _NIKO_ ko zna rezultat transformacije, pa čak i onaj ko zna algoritam koji je korišćen, ne može lako da dođe do originala koji daje isti takav rezultat. Što se tiče provaljivanja logon.exe on je već provaljen i bez rezultata transformacije, verovatno tako što je u samom programu nađen taj rezultat. Ti si u logon.exe morao da zapamtiš rezultat pa da ga porediš kasnije, tako da si nam ipak dao ono što smo tražili. :) A kako se ispostavilo da je traženi original sastavljen samo od četiri karaktera, čak nije bilo potrebno znati rezultat, moglo se ispitati i "buldožer" metodom. Peđa.
algoritmi.110 peca.st, -> #106, dr.grba
!-> Nije tačno. Ajd mi argumentuj zašto nije tačno. Ja sam argumentovao zašto mislim da je tako, pa bih voleo da čujem i suprotnu argumentaciju. Peđa.
algoritmi.111 peca.st, -> #103, dr.grba
!-> Nisam proverava, nije ni bitno. Jasno je !-> da algoritam ne daje jednoznačne !-> rezultate. Naravno, ako se lozinka koja !-> prođe pronađe, priznajem i nju. Algoritam koji daje jednoznačne rezultate imao bi i inverzan algoritam, tako da ne bi imao smisla. Međutim, problem ovog algoritma je što je procenat broja mogućih lozinki koji prolaze preveliki! Primerom koji sam naveo hteo sam da pokažem da algoritam daje isti rezultat za neke vrlo slične šifre, koje u sebi ne sadrže nikakve "egzotične" znake. Recimo CRC algoritam daje iste rezultate najčešće za neke totalno "leve" znake (nešto nalik na đubre) koji nemaju veze sa onim pravim (osim što daje isti otisak :), a opet najčešće takvi "levi" znaci uopšte nisu dozvoljeni u šifri, pa bi se uslovno moglo reći da je CRC algoritam "jednoznačan" a (naravno) ne postoji inverzan algoritam. Hoću da kažem da ćeš teško naći dva stringa sastavljena od (recimo) samo malih slova i tačke koji posle CRCa daju isti otisak. Postoji "ogroman" broj stringova (sastavljenih od malih slova i tačke) koji posle sume a(i)*i daju isti otisak. Peđa.
algoritmi.112 zolika, -> #79, peca.st
>> If a) Then >> Zolika je pomenuo da mu treba nešto što će od LOZINKE (koja ima >> recimo n karaktera) napraviti 4bajtni "otisak". To znači, da kad >> neko unese lozinku, ona prolazi kroz isti taj algoritam, tako dobijeni >> otisak se proverava sa originalnim (koji je verovatno na disku) i ako >> je provera prošla Ok, korisnik lozinke se pušta dalje. Svi ovde pomenuti Tačno! Dobro si razumeo. Treba mi neka transformacija za lozinku na... da ne pričam, već i vrapci znaju za šta.
algoritmi.113 zolika, -> #75, kale
>> Upravo je fora da se zolika sam namuči (more tu uopšte nema muke), >> i da niko drugi ne zna algoritam... Hm, pošto poruke čitam "na preskok" (zbog tel. računa) - OK, nema problema, meni nije teško da nažvrljam neku petljicu punu XORovanja, ORovanja i ostalih logičkih zavrzlama eda bi od ASCII lozinke napravio nekih 2-4 bajtova. No, drugi princip programiranja koji smo naučili na prvoj godini studija bio je: 2. NE IZMIŠLJATI TOPLU VODU. Ako neko zna algoritam, a neće da mi kaže - u redu, ne mogu ga puškom natera- ti. Ali, mislio sam da bi možda bolje bilo da se malo manje mučim tu, a malo više na nekom drugom mestu. P.S.: Prvi princip programiranja koji smo naučili bio je: 2. KORISNIK PROGRAMA JE STANDARDNI IDIOT. (zainteresovanima nudim na uvid beleške iz predmeta "Uvod u programiranje" sa prve godine studija na informatičkom smeru PMF-a u Novom Sadu). Da bi zabava bila potpuna - profesor koji nam je to predavao je moj g-din mentor - kod njega rfadim diplomski...
algoritmi.114 pedjak, -> #96, snemcev
> ;Name CRC32.ASM Hajde, pošalji.
algoritmi.115 niklaus, -> #84, a.kircanski
(:> Hm, gde ima da se nađe taj PD unix? Na kioscima "Borbe"! (; Nego ozbiljno - pitaj ljude sa FFSa... (:niklaus:)
algoritmi.116 niklaus, -> #94, kale
(:> Trebali da budu dovoljno inteligentni??? žovek je bio (:> dovoljno inteligentan da zatraži savet. Najbolje mu možemo (:> pomoći ako mu damo dobar Ma ništa ja njemu ne poričem. Inteligenciju i njegov integritet valjanog programera ponajmanje... Jednostavno je dobio okvirni algoritam i odgovarajuća objašnjenja vezano za tebu, i dalje će sigurno znati sam... Problem je što mi Srbi o'ma' se poprimamo i tražimo mane u nečijoj ideji (konkretno u dr.grbinoj formuli za izradu CRCa). Zato smo ga i tupili dobrih 50 poruka. (;imam blagi osećaj da ima još) (:niklaus:)
algoritmi.117 niklaus, -> #105, dr.grba
(:> Valjda imam poznanike matematičare od kojih bih tražio da mi (:> naprave valjan matematički model. Ma samo reci... (: (mada nisi imao mene na umu) (:niklaus:)
algoritmi.118 niklaus, -> #99, debelijencija
(:>! =?> Ovo me podseća na algoritme, koje koriste simulatori (:>! realnih =?> (prirodnih) procesa, tipa neke igre (fudbal (:> menadžeri)... (:> (:> Nekada davno, ja i burazer smo planirali tako nešto... :) Ma šta je problem? Najpre definišeš sve parametre, koji utiču na izlaznu vrednost nekog procesa (konkretno rezultat utakNice), i to je poželjno što više takvih para- metara zbog veće realnosti i manje verovatnoće da ti se nešto "učini poznatim". Nakon toga sedneš i odrediš odnose (verovatnoće) svakog procesa pojedinačno, turiš u jednadžbu i eto - Smrt fašizmu, sloboda:rad 1:0! (:niklaus:)
algoritmi.119 dr.grba, -> #110, peca.st
>> ! -> Nije tačno. >> >> Ajd mi argumentuj zašto nije tačno. >> Ja sam argumentovao zašto mislim da je tako, >> pa bih voleo da čujem i suprotnu argumentaciju. Tačno je ako pričamo o PGP algoritmu ili CRC... U predmetnom logon.exe se nije pričalo o takvoj transformaciji, već o predmetnosti i kvalitetu zaštite tim algoritmom. Banalna stvar nas dovede u veom žučnu raspravu. Valjda nešto i naučimo usput...
algoritmi.120 kale, -> #95, snemcev
>> Fora je u tome da prvo treba da provališ da je u pitanju taj algoritam, >> pa tek onda možeš da konstatuješ za koje lozinke daje iste izlazne >> brojeve. Kada se procenjuje kvalitet nekog metoda šifrovanja, UVEK se pretpostavlja da razbijač razbija baš taj sistem. Zašto? Zato što se procenjuje kvalitet metoda šifrovanja, a ne razbijača, te se pretpostavlja da će sistem da napadne (i) najbolji. Pod tom pretpostavkom se procenjuje najveće potrebno računarsko vreme da se šifra razbije. Argumenata tipa "niko ovoga neće da se seti" nema u ozbiljnim analizama. Pretpostavlja se da razbijač napada baš dati metod šifrovanja čiji se kvalitet procenjuje.
algoritmi.121 kale, -> #96, snemcev
>> Ne, nemoram. Ni uz jedan paket nisi dobio papirić na kome piše "Ulazna >> lozinka kao rezultat transformacije daje broj 908213-3126". Naprotiv, u vrlo ozbiljnim paketima kao što su operativni sistemi velikih računara dobiješ knjižurine u kojima piše i gde su rezultati transformacije. Ni jedan komercijalni program/paket ne može računati na tajnost mesta gde se ovi rezultati čuvaju; jednostavno, promeniš lozinku i negde se neki fajl promeni. Vidiš koji i gotovo je sa tajnošću mesta gde se to čuva.
algoritmi.122 kale, -> #100, dr.grba
>> Ne vidim moguću štetu, osim one da se ova zaštita ugradi na neprikladnom >> mestu. Kakav algoritam ti predlažeš? 'Ajde da ga vidimo. A vidiš li moguću štetu na sistemu bez ikakve zaštite osim ako nije na neprikladnom mestu? ;>>> Najbolje što mi trenutno pada na pamet je CRC koga bih po izračunavanju pregazio (XOR) originalnim password-om. Ovaj XOR zato što su CRC polinomi pravljeni u druge svrhe (za utvrđivanje greške u podacima) i bojim se (ne tvrdim) da se za broj koji bi bio čisti CRC jedan od odgovarajućih passworda može brzo generisati. Posle XOR na sistemu ne bi bilo ni originalnog password-a ni iz njega dobijenog CRC-a. To mi izgleda pouzdano. Pozdrav!
algoritmi.123 kale, -> #101, dr.grba
>> Moj (nije moj, ali 'aj'cad) logon.exe radi onako kako bi trebalo da >> radi program za lozinku. Da je na nekoj komunikacionoj vezi, posle trećeg >> promašaja korisnik bi bio izbačen sa veze. Izvinjavam se autoru i tebi zbog greške, nije bilo namerno. Mi ovde ispitujemo algoritam koji treba da onemogući/oteža generisanje lozinke na osnovu rezultata njenog kodiranja. Rasprava o ostalim metodima i merama zaštite (sakrivanje algoritma, onemogućavanje logovanja posle par neuspešnih pokušaja,...) svakako ima smisla, ali je veoma široka tema. >> >> Naravno, zadaj i neki broj za koji treba naći password koji će da prođe. >> Ove muzičke želje mi nisu jasne. Radi se o tvojoj nameri da razbiješ >> program tako da nađeš šifru koja je ugrađena u source programa. Dobio >> si tačno onaj program koji stoji na mom disku. Reč je o programu koji treba da generiše broj na osnovu password-a. Potom se tako dobijeni broj testira sa zapamćenim brojem za odgovarajućeg korisnika. Da bi to bilo moguće, neophodno je da se na sistemu za svakog korisnika (i njegovu lozinku) čuva odgovarajući broj. Brojevi dobijeni funkcijom transformacije postoje na sistemu. Moja "muzička želja" je sasvim normalan zahtev. logon.exe ne daje broj na izlazu i neupotrebljiv je za sisteme koji imaju više od jednog korisnika.
algoritmi.124 kale, -> #102, dr.grba
>> >> Broj lozinki je 62^8 što je preko 2 E 14. >> 'Ajde da uzmemo 64 umesto 62: >> 64**8 = (2**6)**8, a to je 2**48, a ne 2**14, pošto ovo nije >> (2**6) * (2**8), što bi stvarno bilo 2**14 >> Gadan previd, a? Stvarno si me neprijatno iznenadio. Notacija "mantisa e eksponent" je uobičajena za "floating point" brojeve (BASIC, Pascal, FORTRAN, C,...). Operator stepenovanja ("^" ili "**") uopšte ne postoji u standardima Pascala i C-a. Bilo kako bilo, podrazumevao sam da svi koji čitaju moju poruku znaju da protumače ono što piše, pa ovo je konferencija PC.PROG, zar ne? Videvši da ti ne znaš, pretpostavio sam da si ili vrlo mlad ili da koristiš računar za obradu teksta, grafike ili nešto drugo što nema veze sa programiranjem. Glavno iznenađenje dolazi kad sam ti pogledao resume. Inženjer informatike, pa još radi na EI-Bull mastodontu kao "sysop"! Zaista me zanima (nije mi želja da te uvredim) u kojoj školi si postao inženjer informatike? Koje programske jezike ste tamo učili? Ja ne znam Clipper, ali mi se čini da ima "floating point" brojeve. Kako se pišu? Je li moguće da se u nekom programskom jeziku piše 2*10**14 i da ne sme pisati 2e14 (eventualno 2.0e14)? >> Izvini na izlišnimzagradama, ovako je preglednije, kao i ** umesto ž Ja sam tolerantan prema formi, ne smeta mi ni višak zagrada ni manjak blankova. >> P.S. 2**48 je.... koliko ono beše?... A, da, 2.81474977*(10**14) >> žas posla za razbiti (: Nije tačno! 2**48=281474976710656 Specijalno za tebe: 62**8=218340105584896 Za ostale ću i dalje da pišem 62^8 je preko 2 E 14, da ne mučim ljude brojanjem cifara. Toliki broj password-a je skoro nemoguće isprobati. Srećom po razbijače ti si preporučio funkciju koja ovaj broj degradira na manje od 3000.
algoritmi.125 kale, -> #104, dr.grba
>> Skidam kapu i priznajem poraz. Razbi čovek program k'o Panta pitu. >> P.S. A valjanost programa branim i dalje, shodno potrebi. I >> shvatite već jednom šta sam hteo time da kažem. :))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) Shvatio sam, konačno! Pa ti se zapravo šališ! >> Koliko bi razbijač radio da je lozinka zbilja bila duga 20 karaktera? 1*a(1)+2*a(2)+3*a(3)+...+20*a(20)=x(20) Minimalni zbir za prvih k ASCII kodova je m(k)=k*(k+1)/2*MINASCII, maksimalni zbir za prvih k ASCII kodova je M(k)=k*(k+1)/2*MAXASCII, gde su: a(i) ASCII kodovi prvog, drugog,..., dvadesetog znaka lozinke, x(i) broj dobijen transformacijom prvih i znakova lozinke, MINASCII najmanji ASCII kod dozvoljen u lozinci, MAXASCII najveći ASCII kod dozvoljen u lozinci. Biranje počneš od ASCII koda uz najveći koeficijent (ovde 20, znači a(20) ). Moraš izabrati takav znak a(20), odnosno u opštem slučaju a(i) da važi sledeća nejednakost: ( x(i) - m(i-1) ) / i <= a(i) <= ( x(i) - M(i) ) / i, važi za i=2, 3, 4, ... i na kraju a(1)=x(1) Jedan od načina izbora je da izabereš minimalnu dozvoljenu vrednost iz skupa vrednosti znaka. Ako kasnije ispadne da bi neki a(j) gde je j<i morao da uzme nedozvoljenu vrednost da bi jednačina bila zadovoljena, onda povećavaš a(j+1) na najbližu veću dozvoljenu vrednost dok ne dobiješ priliku da za a(j) izabereš dozvoljenu vrednost. Eventualno bi ovde bila potrebna i rekurzija (promena a(j+2), a(j+3),...) što zavisi od izbora dozvoljenih vrednosti za znake lozinke. Za lozinku od 20 slova ti treba _otprilike_ 5 puta više vremena za razbijanje nego za lozinku od 4 slova.
algoritmi.126 kale, -> #105, dr.grba
>> Valjda imam poznanike matematičare od kojih bih tražio da mi naprave >> valjan matematički model. Baš si drug! Tvoje znanje je dobro za druge, a kad bi tebi trebalo ti bi pitao nekog ko zna.
algoritmi.127 zolika, -> #93, kale
>> žovek nije pitao da li i gde da sakrije lozinke i algoritam, nego je >> tražio funkciju. Sve mi se čini, Kale, da si ti jedan od retkih koji me razumeju, al', eto, ne dâ mi se da dođem do preko mi potrebne funkcije... :-)))))
algoritmi.128 zolika, -> #85, niklaus
>> Stvar je sledeća... Ljudi od kojih će se, u jednom trenutku njihovog >> srećnog programerskog života, tražiti da naprave algoritam za sigurno >> čuvanje šifara, bi trebalo da su dovoljno inteligentni da pronađu >> dovoljno siguran algoritam, ili da su jednostavno u stanju da od >> ponuđenih algoritama, nađu onaj sa najmanjom verovatnoćom za "provalu". E, moj Virte :-))) Pa ono što radim je UPRAVO pokušaj da od ponuđenih algoritama izaberem neki koji mi odgovara... Problem je samo što ponuda i nije nešto naročito (molim dr.Grbu da se ne ljuti, zaista sam zahvalan na predlogu rešenja problema).
algoritmi.129 niklaus, -> #127, zolika
(:> ne dâ mi se da dođem do preko mi potrebne funkcije... :-))))) Koliko se ja sećam, pošto (na žalost) ne nalazim na HDu dotični program, a sećam se da je postojala zbirka korisnih programčića za C zvana C Snippets. Beće na FFSu. Evo baš ću da zovem da uzmem ponovo (i da ti uštedim trud)... (:niklaus:)
algoritmi.131 janko, -> #122, kale
> pravljeni u druge svrhe (za utvrđivanje greške u podacima) > i bojim se (ne tvrdim) da se za broj koji bi bio čisti CRC > jedan od odgovarajućih passworda može brzo generisati. Dobro razmišljaš. Stvarno je lako generisati "unazad" nešto što će dati isti CRC. > Posle XOR na sistemu ne bi bilo ni > originalnog password-a ni iz njega dobijenog CRC-a. To mi > izgleda pouzdano. Po meni, vrlo je nepouzdano. Ali, opet, čini mi se da umeš da razmišljaš i da si na pravom putu... ;>
algoritmi.130 janko, -> #111, peca.st
> "egzotične" znake. Recimo CRC algoritam daje iste > rezultate najčešće za neke totalno "leve" znake (nešto > nalik na đubre) koji nemaju veze sa onim pravim (osim što > daje isti otisak :), a opet najčešće takvi "levi" znaci > uopšte nisu dozvoljeni u šifri, pa bi se uslovno moglo > reći da je CRC algoritam "jednoznačan" a (naravno) ne == > postoji inverzan algoritam. Hoću da kažem da ćeš teško ================ > naći dva stringa sastavljena od (recimo) samo malih slova > i tačke koji posle CRCa daju isti otisak. Koliko se ja razumem, postoji i trivijalan je, čak. Oni koji znaju teoriju koja leži iza CRC, znaju i zašto.
algoritmi.132 kale, -> #113, zolika
Ovo nije bio reply na moju poruku.
algoritmi.133 peca.st, -> #119, dr.grba
!-> Tačno je ako pričamo o PGP algoritmu ili CRC... Tačno je ako pričamo o onome što je zolika hteo! Ako ne pričamo o tome - čemu sve ovo? Njemu tako nećemo pomoći, a samo će utrošiti vreme i prostor na Sezamovom disku. ;) !-> Banalna stvar nas dovede u veom žučnu !-> raspravu. Valjda nešto i naučimo usput... Najvažnije je da zolika dobije algoritam koji mu treba... Peđa.
algoritmi.134 niklaus, -> #128, zolika
(:> E, moj Virte :-))) ...... E, sad ste me stvarno naljutili! (; Evo programčića za proračun 16-bitnog CRCa... (Šaljem ga na Pascalu, jer je najsličniji Moduli-2, kojim se zolika služi za diplomski. Šta ćete - zaboravih jezik, koji sam sâm osmislio) const POLY=$8408; var sifra : string; function crc16( data_p:string; length:word ): word; var i, j : byte; data, crc : word; dummy : word; begin CRC := $ffff; if ( length=0 ) then begin crc16 := CRC; exit; end; j := 0; repeat dummy := $ff and ord(data_pŠjĆ); inc( j ); for i:=0 to 7 do begin data := $ff and ord( data_pŠjĆ ); inc( i ); data := data shr 1; if ( ((CRC and $0001) xor (data and $0001)) <> 0 ) then CRC := (CRC shr 1) xor POLY else CRC := CRC shr 1; end; dec( length ); until (length=0); CRC := not( CRC ); data := CRC; CRC := (CRC shl 8) or ((data shl 8) and $ff); crc16 := CRC; end; begin repeat write('Unesi sifru->'); readln( sifra ); writeln('------------>',crc16( sifra, length(sifra) )); until (sifra=''); end. Ne znam šta će zoliki mentoL na sve ovo da kaže, ali stvar radi... TOLIKO OD MENE! (:niklaus:) ps Nadam se da niko neće tražiti CRC-32... (:
algoritmi.135 snemcev, -> #109, peca.st
>> Ako ne mogu da dođem do rezultata transformacije, onda transformacija >> nema efekta, čak ima kontra efekat! Molim te, navedi mi jedan komercijalni paket koji kaže "rezultat transformacije ulazne lozinke je to_i_to". U slučaju da konkretan primer nemaš, diskusiju po ovom pitanju smatram završenom.
algoritmi.136 snemcev, -> #113, zolika
>> Ako neko zna algoritam, a neće da mi kaže - u redu, ne mogu ga puškom >> naterati. Da li bi ti pomogao crc32.asm?
algoritmi.137 kale, -> #131, janko
>> > Posle XOR na sistemu ne bi bilo ni >> > originalnog password-a ni iz njega dobijenog CRC-a. To mi >> > izgleda pouzdano. >> Po meni, vrlo je nepouzdano. Složiću se da mi je ideja sa XOR naivna. Pošto je CRC n-torka dobijena pomoću XOR određenih grupa bita originala, još jedan XOR sa originalom ne daje nešto kvalitetno novo, to ostaje n-torka XOR na određenim grupama bita.
algoritmi.138 janko, -> #137, kale
>>> > Posle XOR na sistemu ne bi bilo ni >>> > originalnog password-a ni iz njega dobijenog CRC-a. >>> > To mi izgleda pouzdano. > >>> Po meni, vrlo je nepouzdano. > > Složiću se da mi je ideja sa XOR naivna. Pošto je CRC > n-torka dobijena pomoću XOR određenih grupa bita > originala, još jedan XOR sa originalom ne daje nešto > kvalitetno novo, to ostaje n-torka XOR na određenim > grupama bita. Tačno. Ono što još nismo objasnili drugima je -- zašto je tako lako napraviti unazad nešto što daje isti CRC. Pominjao sam, treba znati malo matematike koja leži iza svega. ;) Posmatrajmo jednačinu A / B = C sa ostatkom D. Ako nam neko da B i D, potpuno je trivijalno naći neko A za koje važi gornja jednakost, za C koje možemo da biramo sami. B je, u ovom slučaju, tzv. generišući polinom, D je onaj broj koji se obično zove CRC, a A je poruka, u ovom slučaju šifra. Varijacija koju si ti predložio se opet svodi na A / B = C sa ostatkom D, gde znamo brojeve B i A + D. Toliko, među nama, apsolventima elektrotehnike, smer računarska tehnika. ;)
algoritmi.139 peca.st, -> #135, snemcev
!-> Molim te, navedi mi jedan komercijalni !-> paket koji kaže "rezultat transformacije !-> ulazne lozinke je to_i_to". U slučaju da !-> konkretan primer nemaš, diskusiju po ovom !-> pitanju smatram završenom. Ko ovde govori o "komercijalnim paketima i njihovim ulaznim šiframa" ? Ovde govorimo o BBS softveru! A ti to nisi shvatio, nego si krenuo u pogrešnom pravcu. No, sve i da govorimo o komercijalnom paketu, on negde mora sačuvati "rezultat transformacije ulazne lozinke" pa ga je moguće i naći, ako ga on već sam ne nudi. Ako ga nije moguće naći (što je apsurdno) onda transformacija ima pomenuti kontra efekat. Dalje, kod tih komercijalnih paketa, onaj ko zna algoritam i rezultat transformacije dobijen korišćenjem tog algoritma teško će uspeti da otkrije neku šifru koja daje isti rezultat, dok će, ako je korišćeni algoritam ovaj tvoj, (kao što si i sam rekao) vrlo lako uspeti da pronađe šifru koja "pasuje". "Diskusiju po ovom pitanju smatram završenom." Peđa.
algoritmi.140 peca.st, -> #134, niklaus
Teorema 1: ---------- (1 and 0) = 0; (1 and 1) = 1; $FF = 1111 1111; => ($FF and $xy) = $xy Kraj teoreme. !-> dummy := $ff and ord(data_pŠjĆ); !-> data := $ff and ord( data_pŠjĆ ); Koja je svrha ovih redova osim da uspore malo čitav algoritam? Osim toga, čemu služi dummy, kad se nigde drugo ne pominje? !-> for i:=0 to 7 do !-> inc( i ); !-> end; Promena vrednosti brojača for ciklusa unutar ciklusa? Zar se to koristi u jednom algoritmu koji pretenduje da bude koristan i ozbiljan? Plus što ovo Inc (i) nije ni pod kakvim uslovom, pa je ladno moglo for i := 0 to 3 !-> CRC := (CRC shl 8) or ((data shl 8) and $ff); Posle ovakvog reda, prvih 8 bitova će sigurno biti 0! (broj kad se šiftuje levo za osam mesta pripisaće mu se sa desna osam nula. kad dva takva broja ORuješ, dobićeš opet broj za osam nula) Znači, rezultat će praktično biti osmobitni. Ako si već pokušavao da smisliš algoritam kojim ćeš nas zavarati i navesti da poverujemo da je CRC, mogao si da smisliš nešto barem malo pametnije od ovoga. Ovo što sam komentarisao su, moram tako da se izrazim, glupe stvari koje bodu oči, svako će to primetiti. Ovo su samo najočiglednije greške, ostale nisam ni pokušavao da pronađem iako ih sigurno ima. Glavna zagonetka mi je šta si hteo da postigneš ovom porukom? !-> Ne znam šta će zoliki mentoL na sve ovo !-> da kaže, ali stvar radi... Kad bi ovo video zolikin mentor, verovatno bi ga odmah oborio. Stvar radi - tu se apsolutno slažemo - jer ni jedna greška pri kompajliranju nije prijavljena! Program je stvarno HAOS. !-> TOLIKO OD MENE! Puno ti se zahvaljujem u zolikino i moje ime, kao i u ime svih generacija koje će videti ovu glupost. !-> ps Nadam se da niko neće tražiti CRC-32... (: Pretpostavljam da se sastoji od toga da tamo gde sad piše word treba da piše longint, jel tako? No, ja ne umem da promenim program tako, pa bih te molio da to ti učiniš. Peđa. P.S. Ovo bi trebalo da je konferencija sa najmanje šuma.
algoritmi.141 ganta,
Evo dva programa koje mi je poslao drug iz CA. Prevedite ih posebno i nazovite prvog 'pera', a drugog 'mika', ili kako god hocete. Pera sifrira, tako sto cita standard input i pise standard output, a ima samo jedan argument - broj od 1 do 2000000000. Taj broj je sifra. Mika desifrira, sa istim brojem. Na primer, imate file x.txt koga treba sifrirati: pera 33456 < x.txt > x1.txt x1.txt je sifrirani file. Da ga procitate, uradite mika 33456 < x1.txt > x2.txt x2.txt treba da bude isti kao x.txt. ili da odmah dobijete na ekranu, mika 33456 < x1.txt Algoritam je trivijalan, ali za probijanje sifre treba par sati rada vrlo brzih masina. Napomena: mozda je potrebno par izmena za razne verzije C-ja. =========== pera.c start ============= #include <stdio.h> int tot; long rseed; /* svahilli translator A */ main(argc, argv) int argc; char *argvŠĆ; š int c; tot = 126 - ' ' + 3; sscanf(argvŠ1Ć, "%ld", &rseed); while((c = getchar()) != EOF) š c = cmprs(c); c = radd(c, rnum()); c = expnd(c); putchar(c); ć ć radd(a, b) int a,b; š int s; s = a + b; if (s > tot) s = s - tot - 1; return(s); ć cmprs(c) int c; š if(c == 'Đr') c = 0; else if (c == 'Đn') c = 1; else if (c == 'Đt') c = 2; else if (c < ' ') c = 3; else if (c > 126) c = 3; else c = c - ' ' + 3; return(c); ć expnd(c) int c; š if(c == 0) c = 'Đr'; else if (c == 1) c = 'Đn'; else if (c == 2) c = 'Đt'; else if (c == 3) c = ' '; else c = c + ' ' - 3; return(c); ć rnum() š int ir; rseed = rseed * 1103515245L + 12345L; ir = (rseed >> 16) & 0x7f; if(ir >= tot) ir = 7; return(ir); ć =========== pera.c end ============= =========== mika.c start ============= #include <stdio.h> int tot; long rseed; /* svahilli translator B */ main(argc, argv) int argc; char *argvŠĆ; š int c; tot = 126 - ' ' + 3; sscanf(argvŠ1Ć, "%ld", &rseed); while((c = getchar()) != EOF) š c = cmprs(c); c = rsub(c, rnum()); c = expnd(c); putchar(c); ć ć rsub(a, b) int a,b; š int s; s = a - b; if (s < 0) s = s + tot + 1; return(s); ć cmprs(c) int c; š if(c == 'Đr') c = 0; else if (c == 'Đn') c = 1; else if (c == 'Đt') c = 2; else if (c < ' ') c = 3; else if (c > 126) c = 3; else c = c - ' ' + 3; return(c); ć expnd(c) int c; š if(c == 0) c = 'Đr'; else if (c == 1) c = 'Đn'; else if (c == 2) c = 'Đt'; else if (c == 3) c = ' '; else c = c + ' ' - 3; return(c); ć rnum() š int ir; rseed = rseed * 1103515245L + 12345L; ir = (rseed >> 16) & 0x7f; if(ir >= tot) ir = 7; return(ir); ć =========== mika.c end =============
algoritmi.142 ndragan, -> #61, salex
/ KAMATA = DUG * ( EXP( LN( 1 + STOPA ) / 30 ) ž DANI - 1 ) Jel ti ovo misliš da ugradiš negde u program? Za koji onda stepenuješ sa _dani_ kad znaš da će to da se svede na exp(ln(_nešto_)*dani), pa ćeš imati dvaput logaritam i eksponencijalnu, dušu dalo da duže radi i bolje greši. Predlažem KAMATA = DUG * ( EXP( LN( 1 + STOPA ) * DANI / 30 ) - 1 ) a pošto mnoge ljude, sa knjigovođama i bankarima na čelu kolone, boli između ušiju kad ugledaju decimalni zarez, stopa će ti verovatno biti pomnožena sa 100, tj izražena u procentima, pa zato KAMATA = DUG * ( EXP( LN( 1 + STOPA / 100 ) * DANI / 30 ) - 1 ) ...i to je jedina primenjiva formula, pošto je ona prva izbačena iz upotrebe još 1987 - još tada ju je inflacija pregazila. Drugi je zez što se baš i ne zna šta je u kom trenutku _dug_. Pajz' primer: 1. dobio si platu 01.11 2. spizdio si sve 03.11, u minusu si 3. kupio si marke 04.11, probio si bonus 4. drugi deo plate 08.11, malo si u minusu 5. topli obrok 11.11, malo si u plusu 6. platio si pretplatu na struju 21.11, probio si bonus 7. ostatak plate 24.11, u plusu do kraja Sad počinje seks. Slučaj jedan je jasan, imaš ono bede od pozitivne kamate. Već slučaj dva nije jasan: da li si u minusu za sve što si probio, ili ti se pripisala kamata od 1. pa si možda u plusu? 3. počinje ti kaznena kamata. šta je osnovica? samo čist dug, deo čistog duga koji probija bonus, sa ili bez prethodno obračunate kamate na minus? ... 7. ti misliš da si u plusu, ali nemaš pojma na koju kamatu se odakle dokle i sa kojom osnovicom računala kamata na kamatu. Idućeg meseca dobijaš izvod, i primećuješ da su brojke smešne, te zaboravljaš na sve.
algoritmi.143 snemcev, -> #142, ndragan
>> KAMATA = DUG * ( EXP( LN( 1 + STOPA ) * DANI / 30 ) - 1 ) Mala ispravka - umesto 30 treba da stoji broj dana u mesecu za koji se obračunava kamata. Inače Jugobanka obračunava kamatu tako da ako si od petog do desetog u minusu, jedanaestog ti knjiži na računu kamatu po gornjoj formuli. Izuzetak je poslednji dan u mesecu kada se bez obzira na to da li si još u minusu ili si izmirio dugovanje kamata knjiži.
algoritmi.144 dr.grba, -> #116, niklaus
>> ideji (konkretno u dr.grbinoj formuli za izradu CRCa). Zato smo ga Šta pričaš, čoveče? Kakva moja formula za izradu CRCa? (((: E, 'ajde da završimo sa ovim. Nikakvo krajnje rešenje nisam nudio, i stvarno nije u redu da se više pozivate na moje ime kao na primer lošeg algoritma. Po stoti put ponavljam da je taj algoritam primeren na mestu i u okruženju na kome se koristi, i stvarno nema potrebe da se dalje napucavamo.
algoritmi.145 dr.grba, -> #124, kale
>> Stvarno si me neprijatno iznenadio. Notacija "mantisa e eksponent" >> je uobičajena za "floating point" brojeve (BASIC, Pascal, FORTRAN, >> C,...). Operator stepenovanja ("ž" ili "**") uopšte ne postoji u >> standardima Pascala i C-a. Bilo kako bilo, podrazumevao sam da svi >> koji čitaju moju poruku znaju da protumače ono što piše, pa ovo je >> konferencija PC.PROG, zar ne? Videvši da Priznajem grešku i obećavam da te više neću provocirati. Iako, sad se malo služiš krivinama. Moj previd, grešku, neznanje, kako god hoćeš, sad koristiš da nadmoćno predstaviš svoju veštinu izlaganja kroz nomenklature programskih jezika. Slažem se da to leži u jednoj programerskoj konferenciji, ali se ne slažem sa načinom na koji pokušavaš da me učiniš mizernijim nego što jesam. A sve je počelo od malo dobre volje.... >> Glavno iznenađenje dolazi kad sam ti pogledao resume. Inženjer >> informatike, pa još radi na EI-Bull mastodontu kao "sysop"! Na EI-Bull mastodontu sam sysop, a ne "sysop", hteo ja to ili ne. Znam dosta o toj mašini, iako sam jednog trenutka shvatio da u neke stvari ne vredi ulagati koru velikog mozga i prestao da se nešto trudim. Moji afiniteti su, eto, na drugoj strani, iako o svemu tome ovde nije reč. >> Zaista me zanima (nije mi želja da te uvredim) u kojoj školi si postao >> inženjer informatike? Koje programske jezike ste tamo učili? Inženjer informatike sam postao na Višoj Školi za ekonomiju i informatiku, današnjoj Višoj poslovnoj, kao treći u generaciji, sa prosekom 8,61. Prosek uže stručnih predmeta mi je 9,5. Učili smo neke stvari koje su u suštini valjane, iako je njihova implementacija prezentovana na predavanjima odavno zastarela. Iako mislim da se ta škola može završiti a da se ne nauči baš ništa, verujem da sam uspeo da pokupim tamo neka znanja koja mi dobro dođu u poslu kojim se bavim. I zbog toga mislim da nije baš sasvim u redu da nipodaštavaš moje zvanje. Ja ne znam šta si ti po struci, niti kakve su ti reference. To mi zbilja nije ni bitno, to za mene nije princip vrednovanja neke osobe. Jedino primećujem da se trsiš svojim znanjem, iako ne baš konstruktivno. >> Ja sam tolerantan prema formi, ne smeta mi ni višak zagrada ni >> manjak blankova. E, jebi ga, sad treba da branim i činjenicu da radim na kanti sa lošom tastaturom!... ): P.S. Jako mi je žao što sam se strahovito zarozao u tvojim očima, mada, kad bolje razmislim, i to me zabole. Nadam se da ti više neću stajati na žulj. Svakako, iako sam galamdžija, daću sve od sebe da ispunim ovo obećanje.
algoritmi.146 dr.grba, -> #128, zolika
>> algoritama izaberem neki koji mi odgovara... Problem je samo što >> ponuda i nije nešto naročito (molim dr.Grbu da se ne ljuti, zaista >> sam zahvalan na predlogu rešenja problema). Naravno da se ne ljutim na tebe. Ljutim se na one koji smatraju da sam ponuđeni algoritam, koji je zbilja krajnje jednostavan i banalan, predstavio kao konačno rešenje kriptografije u računarstvu dvadesetog veka. I koji su sve ovo zamešateljstvo iskoristili da pokažu svoju nadmoć i perfektnu erudiciju u ophođenju sa drugima. Nadam se, Zoli, da ćeš uspeti da pronađeš prikladan algoritam za svoj projekat. čao mi je što nisam na vreme povezao tvoje ranije poruke, svakako onu banalnost ne bih predložio za takvu potrebu.
algoritmi.147 debelijencija, -> #118, niklaus
!=?> Najpre definišeš sve parametre, koji utiču na izlaznu !=?> vrednost nekog procesa (konkretno rezultat utakNice), i to !=?> je poželjno što više takvih para- metara zbog veće realnosti !=?> i manje verovatnoće da ti se nešto "učini poznatim". Nakon !=?> toga sedneš i odrediš odnose (verovatnoće) svakog procesa !=?> pojedinačno, turiš u jednadžbu i eto - Smrt fašizmu, !=?> sloboda:rad 1:0! U redu je to, nego problem je ako hoćeš da gledaš utakmicu! Tj. ono u Football Manageru 2, kada se utakmica stvarno igra, a ne prikazuju se 5-6 predefinisanih akcija sa 2 moguća kraja (slično radi i The Manager na PC-ju, ništa nije napredovao :). Mada i tu možeš tako, udri, kolika je verovatnoća da preševa onog ispred sebe, ali izgleda malo glomazno... :) U svakom slučaju, nemoj da se mučiš preterano :), to mi ionako nije na listi prioriteta, jer ako ne završim PAUS2 skoro, ima da me umlate ovi omladinci sa SEZAM-a... :)
algoritmi.148 janko, -> #141, ganta
> Evo dva programa koje mi je poslao drug iz CA. > Prevedite ih posebno i nazovite prvog 'pera', a drugog > 'mika', ili kako god hocete. > Pera sifrira, tako sto cita standard input i pise standard > output, a ima samo jedan argument - broj od 1 do > 2000000000. Taj broj je sifra. Mika desifrira, sa istim > brojem. Vrlo kilavo -- isti algoritam se vrlo lako prepravlja da se za šifru koriste slova, reči ili čak, rečenice. > Algoritam je trivijalan, ali za probijanje sifre treba par > sati rada vrlo brzih masina. Kako se probija, objavljeno je (ako se sećam) u poslednjim Računarima. Za tekst koji je Dejan šifrovao, PC je radio par desetina minuta, opet, ako se dobro sećam brojeva.
algoritmi.149 janko, -> #142, ndragan
> _dani_ kad znaš da će to da se svede na > exp(ln(_nešto_)*dani), pa ćeš imati dvaput logaritam i > eksponencijalnu, dušu dalo da duže radi i bolje greši. > Predlažem > > KAMATA = DUG * ( EXP( LN( 1 + STOPA ) * DANI / 30 ) - 1 ) > > a pošto mnoge ljude, sa knjigovođama i bankarima na čelu > kolone, boli između ušiju kad ugledaju decimalni zarez, > stopa će ti verovatno biti pomnožena sa 100, tj izražena u > procentima, pa zato > > KAMATA = DUG * ( EXP( LN( 1 + STOPA / 100 ) * DANI / 30 ) > - 1 ) Ako već potežemo numeričku tačnost, improvizovanje stepenovanja pomoću EXP / LN para daje daleko slabije rezultate od korišćenja prave funkcije za stepenovanje, ako je ona dobro realizovana.
algoritmi.150 nikac,
Evo ga dobar 32-bitni CRC (nesto sporiji, ali bez konsultacionih tabela) Cini mi se da ga je napisao ZZ, uz primer racunaja crc-a nekog fajla: #include <stdio.h> /* ------ 32-bitni CRC pocetak procedure ------ */ unsigned long updcrc (int c, unsigned long crc) š _asm š xor dx,dx mov ax,c xor al,byte ptr crc make: shr dx,1 ror ax,1 jae decc xor dx,0xedb8 xor ax,0x8320 decc: loop make mov bx,word ptr crc+2 mov cx,word ptr crc mov cl,ch mov ch,bl mov bl,bh xor bh,bh xor dx,bx xor ax,cx ć ć /* ------ 32-bitni CRC kraj procedure --------- */ /* ------ Primer izracunavanja CRC nekog fajla ------ */ unsigned long crc_file(char *fname) š FILE *f; unsigned long crc; int c; crc = 0xffffffffl; /* ima 8 f-ova, tj treba da ima :) */ if ( ( f=fopen(fname,"rb") ) == NULL ) return crc; while ( ( c=fgetc(f) ) != EOF ) crc = updcrc(c,crc); fclose(f); return crc; ć /* ------ Kraj primera ------ */ Eto toliko od mene, nadam se da ce Zoliki i ostalima ovo fino sluziti...
algoritmi.151 kale, -> #145, dr.grba
>> >> ...pa još radi na EI-Bull mastodontu kao "sysop"! >> Na EI-Bull mastodontu sam sysop, a ne "sysop", hteo ja to ili ne. Navodnike sam stavio zato što nisam bio siguran šta to znači u BBS resume-u. U BBS žargonu "sysop" je ono što je na velikim sistemima "system administrator". Na velikim sistemima postoji i "system operater". Nije mi bila želja da omalovažim tvoj posao, koji god da je. Nažalost, baš je tako ispalo. :((( Pozdrav! ps Odgovor na ostatak poruke u mail, ne spada u temu. :)
algoritmi.154 ndragan, -> #73, dejanr
/ Ja danas gledao ima li u nekom od manuela VMS-a koji se polinom tačno Pogledaj negde u System Security (VMS 4.2), čini mi se pred kraj druge ili treće glave, ima oko strana ipo kako se računa CRC. Nemoj me držati za reč, to je bilo pre pet godina :)
algoritmi.152 ndragan, -> #134, niklaus
/ function crc16( data_p:string; length:word ): word; ==== ...i onda pomislim "šta je metnuo smajli u sred funkcije"
algoritmi.153 ndragan, -> #67, janko
/ Cilj je da predstavnici šifara budu ravnomerno razbacani po / prostoru, i da je prostor dovoljno velik, da postane iluzorno Ono što sam dao je samo na brzaka ideja da se zakomplikuje život eventualnom razbijaču algoritma; za ozbiljniji posao sledi to što si rekao. Znam za slučajeve kad je dodatno komplikovanje postupka dalo šifru koja se lakše razbija od prvobitne. BTW, CRC nije bilo koji tridesetdvobitni broj. Mislim da je to neki iz jedne određene klase polinoma u 0-1 algebri, te da ono "cyclic" ima veze sa imenom klase. Pitanje je koliko u stvari ima CRC brojeva, mislim da ih svakako ima manje od MaxLongInt.
algoritmi.155 djelovic, -> #153, ndragan
> BTW, CRC nije bilo koji tridesetdvobitni broj. Mislim da je to neki iz > jedne određene klase polinoma u 0-1 algebri, te da ono "cyclic" ima veze > sa imenom klase. Pitanje je koliko u stvari ima CRC brojeva, mislim da > ih svakako ima manje od MaxLongInt. CRC je samo specifični HASH algoritam napravljen za detektovanje grešaka pri prenosu/čuvanju podataka. Za potrebe transformacije lozinke je potpuno neupotrebljiv jer se na osnovu njegovog rezultata lako dobija neka reč koja taj rezultat daje. Kao i svi dobri HASH algoritmi, i CRC pokriva potpuno i uniformno ceo opseg brojeva za koji je napravljen. P.S. Naglasak poruke je na terminologiji. Ono što zoliki treba je hash algoritam koji je uz to i jednosmeran, a ne specifični CRC.
algoritmi.156 dragisha, -> #135, snemcev
-> Molim te, navedi mi jedan komercijalni paket koji kaže "rezultat -> transformacije ulazne lozinke je to_i_to". U slučaju da konkretan primer -> nemaš, diskusiju po ovom pitanju smatram završenom. Komercijalni paket... Zovu ga Unix, tek odnedavno se taj rezultat transformacije krije, a godinama je bio sasvim pristupačan. Kažeš cat /etc/passwd i dobiješ rezultate ulaznih transformacija, potrudiš se malo više i nađeš i sam algoritam. Postoje razni crack-eri koji će metodom uzaludnih pokušaja da nabodu password, ali nijedan ne može da ga nađe nekom ziher metodom u obrnutom pravcu. A diskusija i jeste za završavanje. Dvije (i više:) grupe ljudi govore o kruškama i jabukama. Brezveze:).
algoritmi.157 dragisha, -> #100, dr.grba
-> I dalje mislim da je rešenje dobro NA ODREĐENOM NIVOU.... Na nivou malog Perice, apsolutno!:))
algoritmi.158 dr.grba, -> #157, dragisha
>> -> I dalje mislim da je rešenje dobro NA ODREĐENOM NIVOU.... >> >> Na nivou malog Perice, apsolutno!:)) 90% ljudi koji pristupaju računarima su na nižem nivou nego mali Perica. Amin!
algoritmi.159 zolika, -> #129, niklaus
>> C Snippets. Beće na FFSu. Evo baš ću da zovem da uzmem ponovo (i da ti >> uštedim trud)... Neizmerno ću ti biti zahvalan...
algoritmi.160 skerl,
ASM CRC calculation code This unit provides three speed-optimized functions to compute (or continue computation of) a Cyclic Redundency Check (CRC). These routines are contributed to the public domain. Each function takes three parameters: InitCRC - The initial CRC value. This may be the recommended initialization value if this is the first or only block to be checked, or this may be a previously computed CRC value if this is a continuation. InBuf - An untyped parameter specifying the beginning of the memory area to be checked. InLen - A word indicating the length of the memory area to be checked. If InLen is zero, the function returns the value of InitCRC. The function result is the updated CRC. The input buffer is scanned under the limitations of the 8086 segmented architecture, so the result will be in error if InLen > 64k - Offset(InBuf). } Interface Function UpdateCRC16(InitCRC : Word; Var InBuf; InLen : Word) : Word; { I believe this is the CRC used by the XModem protocol. The transmitting end should initialize with zero, UpdateCRC16 for the block, Continue the UpdateCRC16 for two nulls, and append the result (hi order byte first) to the transmitted block. The receiver should initialize with zero and UpdateCRC16 for the received block including the two byte CRC. The result will be zero (why?) if there were no transmission errors. (I have not tested this function with an actual XModem implementation, though I did verify the behavior just described. See TESTCRC.PAS.) } Function UpdateCRCArc(InitCRC : Word; Var InBuf; InLen : Word) : Word; { This function computes the CRC used by SEA's ARC utility. Initialize with zero. } Function UpdateCRC32(InitCRC : LongInt; Var InBuf; InLen : Word) : LongInt; { This function computes the CRC used by PKZIP and Forsberg's ZModem. Initialize with high-values ($FFFFFFFF), and finish by inverting all bits (Not). } Pozdrav, Skerl.
algoritmi.161 skerl,
Cyclic Redundancy Check --------------------------------------------------------- This archive includes the following three files: crc2.c Computes crc by bit shifting crcfast.c Computes crc by table lookup crctab.c Computes tables used in crcfast.c crc.doc This file The utilities crc2 and crcfast compute the cyclic redundancy checks for both the crc-16 (used in arc files) and crc-ccitt (used in xmodem). crcfast is faster than crc2. These routines compute the crc's for a given file as a means of checking data integrity. These routines compile without change under Turbo C. All are short and illustrate the basic principles of crc calculations. Pozdrav, Skerl. crc-c.zip
algoritmi.162 niklaus, -> #147, debelijencija
(:> na PC-ju, ništa nije napredovao :). Mada i tu možeš tako, udri, (:> kolika je verovatnoća da preševa onog ispred sebe, ali izgleda (:> malo glomazno... :) Ma znaš kako. U principu bi mogao da kretanje svakog igrača u napadu da definišeš kretanje ukoso cik-cak (znaš kako izgleda šematski prikaz binarnog drveta? E tako!). Možeš za svakog igrača da podesiš verovatnoću skretanja na levo i na desno, mada je to već perverzija. Ako pak uradiš tako, prilično realno možeš da prikažeš krilne igrače, centarfore... Sličnu, ali malo komplikovaniju logiku primenjuješ na odbranbenog igrača. Njemu možeš da uvedeš 4 smera (NW, NE, SW, SE, you know what I mean?). Da se igrač u napadu i odgovarajući igrač iz odbrane (ovo "odgova- rajući" možeš da izvučeš i postavki napada: 4-2-4, 5-3-2, ili kako već to ide), ne bi baš žestoko mimoišli, valja definisati ili trenutak kada se igrač iz odbrane "posvećuje" "svom" igraču, ili da jednostavno kretanje odbranbenog igrača ne bude _baš_ slučajno. Otprilike je to - to. Logika je prilično jednostavna, i poboljšanja su poželjna... (:niklaus:)
algoritmi.163 niklaus, -> #144, dr.grba
(:> Šta pričaš, čoveče? Kakva moja formula za izradu CRCa? (((: Ne uzbuđuj se! (: Zar nisi primetio da je moj stav sve vreme bio srodan tvome, odn. složili smo se da nisi napravio kakvo remek-delo, već si samo ponukao ljude da stvaraju _pravu_ formulu za CRC... (:niklaus:)
algoritmi.164 niklaus, -> #140, peca.st
(:> (Moja opaska #1: (:> dummy : word; !! (:> dummy := $ff and ord(data_pŠjĆ); !! (:> => ($FF and $xy) = $xy (:> Kraj teoreme. Hvala za rupu na saxsiji, ali nisi video da je dummy tipa word, što će reći da se preslikavaju samo "donjih" 8 bitova promenljive dummy... (:> (Moja opaska #2: data, crc : word;) (:> !-> CRC := (CRC shl 8) or ((data shl 8) and $ff); (:> (:> Posle ovakvog reda, prvih 8 bitova će sigurno biti 0! Preporučujem ti da ponovo prelistaš žabarkapu... i data i CRC su opet word-ovi... (:> Ako si već pokušavao da smisliš algoritam kojim ćeš nas zavarati (:> i navesti da poverujemo da je CRC, mogao si da smisliš nešto barem (:> malo pametnije od ovoga. Ovo što sam komentarisao su, moram tako (:> da se Prijatelju, u redu si... (:> #$*&%!šđ+>/č NO COMMENT! Kao što si već video originalni izvorni kod (u Cu) sam ti poslao na mail. Budi toliko dobar pa ga ti prevedi zoliki... (Komentar za ostale) Programčić koji sam sveo na Pascal nije baš _identičan_ "onom" u Cu, ali za kodiranje šifara je dobar (u prevodu: nema dečije bolesti, tipa malko promenite ulazni string, pa se isto toliko malo menja i izlazna vrednost CRCa). Inače, dotični program u C-u je tzv: 16 12 5 CCITT CRC 16 polinom : X + X + X + 1. (:niklaus:)
algoritmi.165 prvul, -> #155, djelovic
ŮCRC je samo specifični HASH algoritam napravljen za detektovanje grešaka Ůpri prenosu/čuvanju podataka. Za potrebe transformacije lozinke je potpuno Ůneupotrebljiv jer se na osnovu njegovog rezultata lako dobija neka reč Ů▄▄ Da ne bude zabune, CRC ukratko radi ovako: svaki niz od N bitova možemo posmatrati kao polinom N-1-vog stepena (svaki bit je koeficijent uz odgovarajući stepen) nad GF(2). Onda mi dodamo nekih K bita na tih N bita, i to tako da dobijeni polinom bude deljiv unapred datim polinomom K-tog stepena. Dakle, da bismo konstruisali neki niz bita koji daje traženi CRC treba samo da obrnemo postupak... imamo polinom generator G (to je onaj od K-tog stepena) i imamo niz od K bita (polinom K-1-vog stepena P) koji predstavlja CRC. Svi polinomi koji su mogli nastati CRC-ovanjem su tada (G-P)+G*N gde je N proizvoljan polinom. Dobro, nisu baš svi ovi polinomi rešenja, jer je uslov da donjih K bita tog polinoma budu nule, ali i to nije teško postići... ukratko, CRC jeste one-way u tom smislu što je mala verovatnoća da se pogodi baš ona šifra koja daje taj CRC, ali nije nikakav problem naći makar jednu (ne nužno polaznu) šifru koja daje dati CRC.
algoritmi.166 janko, -> #156, dragisha
> Komercijalni paket... Zovu ga Unix, tek odnedavno se taj > rezultat transformacije krije, a godinama je bio sasvim > pristupačan. Kažeš cat /etc/passwd i dobiješ rezultate > ulaznih transformacija, potrudiš se malo više i nađeš i > sam algoritam. Postoje razni crack-eri koji će metodom > uzaludnih pokušaja da nabodu password, ali nijedan ne može > da ga nađe nekom ziher metodom u obrnutom pravcu. Ako je algoritam poznat autoru programa za razbijanje, i još ako je ulazni podatak tog programa rezultat transformacija originalnog programa, program SIGURNO daje rešenje, zar ne? Otkud onda znaš, da li "uzaludno pokušava" ili sprovodi svoj plan? Evo, matematički, opet, polazne osnove za razbijanje: recimo, da imamo data 32 bita za koje treba izmisliti lozinku koja će ih generisati, i algoritam kojima se iz proizvoljne lozinke generiše tih 32 bita. Očigledno je da se rešavanje problema svodi na samo rešavanje trideset i dve jednačine. Ne izgleda veliki problem, naizgled? Današnji računari koji bi se koristili za razbijanje su izuzetno brzi -- sistem od trideset dve jednačine, makar i duge, ne izgleda previše velik... Da se vratimo na Zolikin problem. Zolika je tražio "da se pamti četiri bajta." Na HP-UX je rezultat transformacije u /etc/passwd velik trinaest slova, tj. otprilike 9-10 bajtova. To već izgleda malo sigurnije, ali, očigledno, ne dovoljno, jer, eto, postoje i programi koji na tim juniks mašinama (koje nisu mnogo brze, zar ne?) mogu da "unazad" izbunare lozinku. Postavlja se pitanje, sa koliko je "javnih" bita potrebno čuvati lozinku, da bi problem postao "pretežak" za razbijanje za današnje rečunare? Idealno bi bilo, ne više nego što je dužina prosečne lozinke. Problem je što se to SIGURNO može razbiti, današnjom tehnologijom, ako se zna algoritam transformacije. Hajde da odemo u drugu krajnost -- izmislimo neku jako dobru transformaciju (već postoje) koja će nam kao rezultat dati puno više bitova -- recimo 1024, koje ćemo ostaviti "javne." Problem je tu, što se sada može pretpostaviti, za prosečnog korisnika, da je lozinka koju koristi manja od, recimo, dvadesetak slova, pa se opet rešava sistem od samo par stotina jednačina. Ako ste se nekad pitali, zašto sistem menadžere teraju da npr. svakog dana menjaju lozinku, i, još, da lozinka ne bude kraća od, recimo, nekoliko desetina slova, sad vam je verovatno jasnije... Zaključak je nedvosmislen -- jeste to lepo, kao cilj, ostavljati SVIMA "na uvid" ono što je predstavlja lozinke, ali, očigledno, takva zaštita nije neprobojna. Primetite da je sam problem "ostavljanja prezentacije lozinke javno" primetno različit od šifrovanja. Pri šifrovanju, nama nepoznat tekst se modifikuje. Pri ostavljanju prezentacije lozinke javno, mi znamo da treba da izmislimo nama nepoznat tekst koji će dati nama POZNAT rezultat, pri čemu nas ne zanima kakav je STVARNO nepoznat tekst, i pri čemu imamo relativno kratak rezultat koji ciljamo! Na kraju, šta bi Zolika trebalo da radi, da li, onda, uopšte da implementira neki algoritam za transformaciju lozinke? Odgovor je, ipak, DA. Kao što i ključevi čuvaju vrata, ali se vrata mogu razbiti cela, (sa nadom da će to komšije čuti i pozvati miliciju) tako, lozinke treba čuvati što je više moguće. Pretpostavimo da sistem, ipak, ne radi kao Junkis -- ne kaže svakom gostu "izvolte rezultate lozinki," već ih čuva u fajlovima, koje možda može nekad neko neovlašćeno da pokuša da pogleda, i da vidi, ali, ipak, i za to treba da se pomuči... U tom slučaju je vrlo potrebno, da mu to ne bude dovoljno, već da mora da, ako već nema program koji rešava baš takav slučaj, angažuje nekog stručnjaka da bi od toga, do čega je došao, generisao šifru. Već to može da bude dovoljno da, onaj koji se namerio na razbijanje, odustane. Ili, ako je neka špijunska služba (nema svako para da plaća sve to, na sreću) da primeni druge, bezbolnije metode -- npr. prisluškuje telefonsku liniju, baš dok kucamo šifru. :) Naravno, sistem privilegija i zaštite fajlova treba da je takav, da WRITE pristup do pomenutog fajla ima samo sistem administrator. Na MS-DOS-u, to je, očigledno, isto, kritično mesto. Može da se, verovatno, postigne vrlo pažljivo napisanim but i svim ostalim programima i zaključavanjem (klasičnim) mašine koja se butuje. Do you want ultimate security? Don't buy computer! -- je parafraza taga jednog inženjera koji se isključivo bavi kompjuterskim zaštitama. Možda vam je sada jasnije zašto. :)
algoritmi.167 bulaja, -> #159, zolika
│C Snippets └─── R:\IBMPC\C\*.* ---------------------- snip0493 arj 162332 C-snippets 04/93, zbirka raznih C funkcija (source) #1 snip0493 a01 160019 C-snippets 04/93, zbirka raznih C funkcija (source) #2
algoritmi.168 peca.st, -> #164, niklaus
!-> (:> dummy : word; !-> !! (:> dummy := $ff and ord(data_pŠjĆ); !-> !! !-> Hvala za rupu na saxsiji, ali nisi video !-> da je dummy tipa word, što će reći da se !-> preslikavaju samo "donjih" 8 bitova !-> promenljive dummy... Svašta od tebe. Znači, ako je dummy tipa word, i ja napišem dummy := 1 onda će samo jedan bit biti promenjen?!???! Ostalih 15 ostaje isto, jel? Ovde dummy postaje ord (data_pŠjĆ) bez sumnje. !-> (:> !-> CRC := (CRC shl 8) or ((data shl 8) and $ff); !-> (:> Posle ovakvog reda, prvih 8 bitova će !-> sigurno biti 0! !-> !-> Preporučujem ti da ponovo prelistaš !-> žabarkapu... i data i CRC su opet !-> word-ovi... žabarkapu nisam nikada prelistavao ni usmeno ni pismeno, a nemam ni nameru. Za sada se dobro držim, što se za tebe ne bi reklo. Lepo sam napisao: prvih 8 bitova će postati 0! CRC shl 8 vraća 16 bitova od kojih su prvih 8 nula, bez sumnje. data shl 8 takođe. 16 bitova od kojih su prvih osam nule, kad se enduju sa $ff daće 16 bitova koji su svi nula, bez sumnje! Evo primera: 1110 0111 0000 0000 (data shl 8) and 0000 0000 1111 1111 ($ff) ------------------- 0000 0000 0000 0000 Znači radimo (CRC shl 8) or 0 = (CRC shl 8) Baš kao što sam napisao: prvih osam bitova je nula. !-> Prijatelju, u redu si... Ja sam za sada u redu, hvala na pitanju. !-> Budi toliko dobar pa ga ti prevedi zoliki... Da prevodim ono đubre? Nisam lud da trošim vreme na to. Usput, jedino mi još nisi objasnio čemu služi promenljiva dummy? !-> (Komentar za ostale) Programčić koji sam !-> sveo na Pascal nije baš _identičan_ !-> "onom" u Cu, ali za kodiranje šifara je !-> dobar (u prevodu: nema dečije bolesti, !-> tipa malko promenite ulazni string, pa se !-> isto toliko malo menja i izlazna vrednost !-> CRCa). E, vidi se kolko znaš o CRCu. Pogledaj malo CRC32 što je poslao nikac. Promeni jedno slovo, dobićeš totalno drugačiji broj! Ovaj "tvoj" nazovi CRC16 za ulazne stringove 0 .. 9 daje samo dve različite vrednosti, slično je ako probaš i sa nekim drugim vrlo sličnim stringovima, davaće iste vrednosti. žudi me kako uspevaš da i posle skrenute pažnje na te greške i dalje praviš iste previde, a još i da ih braniš i pokušavaš da me uveriš da je 2 + 2 = 5. Peđa.
algoritmi.169 prvul, -> #166, janko
Ůda imamo data 32 bita za koje treba izmisliti lozinku koja će ih Ůgenerisati, i algoritam kojima se iz proizvoljne lozinke generiše Ůtih 32 bita. Očigledno je da se rešavanje problema svodi na Ůsamo rešavanje trideset i dve jednačine. Ne izgleda veliki Ůproblem, naizgled? Današnji računari koji bi se koristili za Ůrazbijanje su izuzetno brzi -- sistem od trideset dve jednačine, Ůmakar i duge, ne izgleda previše velik... Ů▄▄ Prvo, sistem od tih 32 jednačine ne mora da bude linearan, tako da opšta metoda za njegovo egzaktno rešavanje ne mora postojati. Drugo, funkcije koje bi u tim jednačinama figurisale sigurno nisu diferencijabilne pa čak ni neprekidne, tako da otpada rešavanje bilo kojim numeričkim metodom. Ostaje samo nasumični postupak, koji se može optimizovati za date jednačine, ali opet će za traženje šifre koja daje ta 32 bita morati da se proba nešto reda 2**32, dakle to sa jednačinama je samo lepa komplikacija, ali ništa ne pomaže da se provali šifra (osim ako šifru generiše jako glup algoritam pa jednačine postanu linearne). Naravno, to ne znači da je 2*32 za današnje računare jako veliki broj... nije... ali posmatrajmo sledeći problem: algoritam za dobijanje tog 32-bitnog broja se, recimo, izvršava 0.1 sec. To pri proveri šifre nije veliki problem (korisnik od trenutka kucanja lozinke do odziva sistema čeka 1 sec). Međutim, neko ko hoće da provali tu šifru mora da proba reda 2**32 šifara, a to puta 0.1 sec je već pozamašno vreme (13 i kusur godina). Ako tehnologija napreduje pa računari budu 100 puta brži, samo treba naći algoritam koji bi se opet izvršavao za 0.1 sec i kraj. Opet, i sada se da naći npr. 100000 puta brži računar, pa se ova šifra može provaliti za sat-dva. E, ako je neko voljan da utroši sat vremena na takvom računaru da bi provalio lozinku na mom BBS-u koji radi na 100000 puta sporijem računaru, neka mu je :) Ako se radi ne o BBS-u već o pristupu nekim zaista osetljivim (top secret :) podacima, onda se koriste Message Digest algoritmi i to niko živ ne može da probije i kraj priče (btw. nisu ti MD sistemi tako spori čak ni za BBS primene, ali ipak ne preterujmo).
algoritmi.170 ganta, -> #148, janko
> Kako se probija, objavljeno je (ako se sećam) u poslednjim > Računarima. Za tekst koji je Dejan šifrovao, PC je radio par > desetina minuta, opet, ako se dobro sećam brojeva. Hvala, javiću mu da je provaljen :)
algoritmi.171 dragisha, -> #166, janko
-> Ako je algoritam poznat autoru programa za razbijanje, i još -> ako je ulazni podatak tog programa rezultat transformacija -> originalnog programa, program SIGURNO daje rešenje, zar ne? -> Otkud onda znaš, da li "uzaludno pokušava" ili sprovodi svoj -> plan? On sprovodi plan koji se zasniva na tome (kvaka) da je korisnik lozinku napravio sa kombinacijom riječi iz riječnika koji cracker ima na raspolaganju i na nadi crackera da je tačno pretpostavio pravilo koje je korisnik upotrijebio za kombinovanje tih riječi. To ziher radi za naprimjer moju lozinku dragisha1, oh_my_god i slične. Zanima me kako bi razbio passworde 'Poleksija' ili 'dje_si_ojtra'. SUS, takvi programi se zasnivaju na slabostima sistema koje se daju izbjeći. Nema crackera koji SIGURNO daje rješenje. -> jer, eto, postoje i programi koji na tim juniks mašinama (koje -> nisu mnogo brze, zar ne?) mogu da "unazad" izbunare lozinku. Nisam čuo za nešto ovakvo. Na šta misliš?
algoritmi.172 dragisha, -> #158, dr.grba
-> >> -> I dalje mislim da je rešenje dobro NA ODREĐENOM NIVOU.... -> >> -> >> Na nivou malog Perice, apsolutno!:)) -> -> 90% ljudi koji pristupaju računarima su na nižem nivou nego mali Perica. Optimisto:), ima njih i čitavih 98%, a neki se zovu stručnjacima. Po Marfiju, na instalaciji do koje ti bude stalo da ne pukne naći će se upravo veliki Perica.
algoritmi.173 debelijencija, -> #162, niklaus
!=?> Ma znaš kako. U principu bi mogao da kretanje svakog igrača !=?> u napadu da definišeš kretanje ukoso cik-cak (znaš kako !=?> izgleda šematski prikaz binarnog drveta? E tako!). Možeš za Tja, ovo je malko ograničeno... Ipak, napadači se malo i vraćaju, pa dodavanja... Nije elementarno, probavao sam ja to da izvedem, naravno idejno, o programu nisam ni razmišljao ozbiljno, i dođeš do jedno pet šest situacija pred kojima samo možeš da kažeš: GU! :) !=?> centarfore... Sličnu, ali malo komplikovaniju logiku !=?> primenjuješ na odbranbenog igrača. Njemu možeš da uvedeš 4 !=?> smera (NW, NE, SW, SE, you know what I mean?). Da se igrač u Za odbrambene je malo jednostavnije... On jednostavno juri najbližeg i gleda da mu uzme loptu, a ako ne može, da ga faulira. Stvarno nije preterano teško. Ali, ono što zanemaruješ, je ujedno i najvažnija stvar: SREDINA! Tamo se odlučuju sve utakmice, i kretanje igrača na tome mesto je zaosta zavisno od mnooogo faktora... Tamo nešto pametno smisliti zaista i jeste vrlo teško... Sećam se da je u Football Manageru 2, to bilo stvarno očajno glupo rešeno. Oni iz sredine jednostavno samo voze napred, nema dodavanja, a ako ne može da prođe, onda proba da je dune napred. Tužno. :( Hvala što pokušavaš da mi pomogneš, možda nešto i zaključimo! :)
algoritmi.174 niklaus, -> #173, debelijencija
(:> Tja, ovo je malko ograničeno... Ipak, napadači se malo i vraćaju, (:> pa dodavanja... Nije elementarno, probavao sam ja to da izvedem, Ma ništa, onda uvedi i njima mogućnost (taktičkog) vraćanja iz napada. (:> Ali, ono što zanemaruješ, je ujedno i najvažnija stvar: SREDINA! (:> Tamo se odlučuju sve utakmice, i kretanje igrača na tome mesto je (:> zaosta zavisno od mnooogo faktora... Tamo nešto pametno smisliti (:> zaista i jeste vrlo teško... Pa "sredini" se najpre posveti preko početnog rasporeda igrača, nakon čega usleđuje "podbacivanje" i trčanje za loptom u stilu "muve na govno". ((: Zezam se. Uopšte smatram da bi mogao da svakom igraču u svakoj od taktičkih postava (5-3-2, 4-2-4, Lotus123...) mogao da pridružiš "polje dejstva". Pod time podrazumevam deo terena u okviru koga će se igrač kretati, dok ne bude fauliran, bez dodavanja sledećem igraču. "Polja dejstva" susednih igrača, po mojoj proceni, bi trebalo da se seku po nekih 40% saigračevog polja dejstva, tako da su moguće značajnije promene postave u toku napada (odbrane). Dalje, u okviru tih polja valja definisati dovoljno realne algoritme kretanja. Poželjni parametri: 1) blizina odgovarajućeg suparničkog igrača (na osnovu čega će pomak između dva proračuna pozicije biti veći) 2) blizina najbližeg saigrača u smeru _napad_ (na osnovu čega se pove- ćava verovatnoća da u sle dećem koraku izvrši "pas") 3) konfiguracija (raspored) kompletne suparničke odbrane (više odbran- benih igrača na levom krilu prouzrokuje povećanje verovatnoće za skretanje udesno u sledećem koraku) 4) ... Može se dodavati još uslova za finije doteravanje formule kretanja, kao što se u slučaju prvog parametra može uvesti dodatni ulazni parametar, da se veličina pomaka smanjuje sa brojem saigrača-napadača i sl. (:> Hvala što pokušavaš da mi pomogneš, možda nešto i zaključimo! :) Nema se na čemu... Sve ovo što ovde baljezgam je iz malog mozga, a ne nešto o čemu sam napisao zadnje tri knjige. Ja ovde glumim usmerivača tvojih ideja, a ti si prava radna snaga. (; (:niklaus:)
algoritmi.175 zolika, -> #166, janko
>> Da se vratimo na Zolikin problem. Zolika je tražio "da se pamti >> četiri bajta." Na HP-UX je rezultat transformacije u >>/ etc/passwd velik trinaest slova, tj. otprilike 9-10 bajtova. >> To već izgleda malo sigurnije, ali, očigledno, ne dovoljno, Dobro, dobro, može i više bajtova, pa nećemo se sporiti oko bajt-dva :-)
algoritmi.176 dr.grba, -> #174, niklaus
>> Pa "sredini" se najpre posveti preko početnog rasporeda igrača, >> nakon čega usleđuje "podbacivanje" i trčanje za loptom u stilu >> "muve na govno". ((: Jel' može ovo malo da se preseli tamo gde mu je mesto? Ovde je reč o programiranju, mahom na PC mašinama. Pa ako tražite algoritme programiranja, onda OK, a ako tražite algoritme strategije igranja fudbala, onda tome ovde nije mesto. Modulatore, probudi se!
algoritmi.177 d.petrovic, -> #174, niklaus
Ă> (:> Hvala što pokušavaš da mi pomogneš, možda nešto i zaključimo! Ă> :) Ă> Ă> Nema se na čemu... Ă> Sve ovo što ovde baljezgam je iz malog mozga, a ne nešto o čemu Ă> sam napisao zadnje tri knjige. Ja ovde glumim usmerivača tvojih Ă> ideja, a ti si prava radna snaga. (; Mogli bi da ovo nastavite kroz mail ili u conf igre. Zar nemati ni malo milosti i pristojnosti?
algoritmi.178 niklaus, -> #175, zolika
(:> Dobro, dobro, može i više bajtova, pa nećemo se sporiti oko (:> bajt-dva :-) Nego, jel' valja onaj 32-bitni (upravo 4 bajta koja tražiš) algoritam, koji ti poslah? (:niklaus:)
algoritmi.180 ndragan, -> #145, dr.grba
/ Inženjer informatike sam postao na Višoj Školi za ekonomiju i / informatiku, Nisi ni loš s obzirom na školu ;) Je li, koliko je bilo vanrednih na jednog redovnog? NHF, ali smatram da je programiranje nešto što nije trebalo davati ekonomistima u ruke, a pogotovu ne studirati ga na ekonomiji. Iz priloženog tebe vidim da si uspešno eskivirao ovu anomaliju našeg školstva, što za većinu kolega koji su završili studije na ekonomskim fakultetima, ne mogu da kažem. O ovome je bilo već reči, pa da ne pravimo replay, a?
algoritmi.181 ndragan, -> #151, kale
/ resume-u. U BBS žargonu "sysop" je ono što je na velikim sistemima / "system administrator". Na velikim sistemima postoji i "system / operater". Nije mi To zavisi od proizvođača. Big Blju je imao, valjda, sistem programera i sistem operatera; na vaksu postoji sistem menadžer i sistem operater, itd. Ovi nazivi su se provlačili čak i kroz sistematizacije radnih mesta, što je dovodilo do dobrih zabuna kad je šef erca odrastao na aj bi emu pa kupio vahu, a onu artiju napravi po plavom standardu. Ne bih se čudio da se kod Hanibala to zove Sysop.
algoritmi.179 ndragan, -> #149, janko
/ Ako već potežemo numeričku tačnost, improvizovanje stepenovanja / pomoću EXP / LN para daje daleko slabije rezultate od A tek kombinacija Exp(ln ...) ** ... Moj princip je da štogod programski jezik ima ugrađeno, sigurno će biti brže i tačnije nego da ga simuliram.
algoritmi.182 janko, -> #169, prvul
> Drugo, funkcije koje bi u tim jednačinama > figurisale sigurno nisu diferencijabilne pa čak ni > neprekidne, tako da otpada rešavanje bilo kojim numeričkim > metodom. Ostaje samo nasumični postupak, koji se može > optimizovati za date jednačine, ali opet će za traženje > šifre koja daje ta 32 bita morati da se proba nešto reda > 2**32 To je samo četiri milijarde pokušaja. Što je još lepše, baš ako su nasumični, pokušaji su nezavisni -- ne moraju da se dodele istom procesoru, čak ni istom računaru... U svakom slučaju, četiri milijarde je opet dosta manje od npr. 1e64, (sve 10-slovne lozinke, npr.) Eto, i Juniks je koristio duplo više bajtova, pa su ga "razvaljivali." Da li su algoritmi u Juniksu stvarno toliko loši, da se samo zato lako provaljuju? U svakom slučaju, imamo, dakle, kristalizovanu ideju, sada: cilj nam je da mogući "sistem jednačina" ne može da se rešava nekim "kraćim metodama" od pokušaja redom. Znači, samo da smislimo funkciju koja to zadovoljava, odredimo koliko je pokušaja nedostižno za današnje računare -- i rešismo problem. I dalje mislim da je sigurnije ako nema varijante "izvolte rezultat transformacije lozinke," na sistemu... > Ako se radi ne o BBS-u već o pristupu nekim zaista > osetljivim (top secret :) podacima, onda se koriste > Message Digest algoritmi i to niko živ ne može da probije > i kraj priče (btw. nisu ti MD sistemi tako spori čak ni za > BBS primene, ali ipak ne preterujmo). Ali ti dajdžesti su znatno duži od četiri bajta?
algoritmi.183 dejanr, -> #182, janko
>> I dalje mislim da je sigurnije ako nema varijante "izvolte >> rezultat transformacije lozinke," na sistemu... Svakako. Ako čovek već mora da padne u jamu, ne mora je samom sebi iskopati ;) Dakle, trebalo bi imati dobar algoritam kojim se napadaču otežava da, ako bi mu šifrat bio poznat, nađe lozinku koja odgovara tom šifratu. A onda još i šifrat sakriti od "posetioca", čime se sigurnost dalje povećava. Dakle, sve znamo, samo nam još treba dobar algoritam ;)
algoritmi.184 janko, -> #183, dejanr
> Dakle, sve znamo, samo nam još treba dobar algoritam ;) Ja (da budem skroman: mislim da) ga znam. Tačnije, znam postupak, za koji ne nalazim slabosti kakve sam našao u drugim predlozima koji su se ovde pojavljivali. Ideja je prosta, a da bi se realizovala, moraju se, naravno, koristiti tekovine naučnika koji su se bavili srodnim problemima. I, nešto, imam utisak da nisam jedini u ovoj temi, koji bi to umeo da izvede... Neću da kažem sa kog su faksa, oni na koje sumnjam da znaju. ;) Dobar deo rešenja se krije u već postojećim porukama!
algoritmi.185 peca.st, -> #184, janko
!-> I, nešto, imam utisak da nisam jedini u ovoj temi, koji bi to !-> umeo da izvede... Ne moraš da budeš jedini da bi bio prvi. :) So, ajde ti to pošalji bez tolke mistifikacije. :) Peđa.
algoritmi.186 zolika, -> #178, niklaus
>> Nego, jel' valja onaj 32-bitni (upravo 4 bajta koja tražiš) algoritam, >> koji ti poslah? >> >> (:niklaus:) Poslužiće, zahvaljujem.
algoritmi.187 janko, -> #185, peca.st
> !-> I, nešto, imam utisak da nisam jedini u ovoj temi, > koji bi to !-> umeo da izvede... > bez tolke mistifikacije. Nema mistifikacije -- na osnovu dosadašnje priče, CRC algoritam nije za to. Mesidž dajdžest algoritmi se, takođe, dizajniraju sa drugim ciljem -- da dve poruke ne mogu da imaju isti "potpis," a ne da se od nekog dajžesta ne može lako napraviti BILO KAKVA poruka (mada je vrlo moguće da neki ima i tu osobinu, u kom slučaju se može koristiti). Šta nam ostaje? Kvalitetni algoritmi konvencionalne kriptografije, (znate oni, što se pišu silne knjige o njima, radovi... ;) ) kojima je posao da onemoguće upravo ono što i mi želimo da onemogućimo -- "odmotavanje" unazad, MAKAR i na osnovu parčeta poznatog teksta, da bi se došlo do šifre ili, bar, "semena" koje je njen rezultat. Dakle, pristupna lozinka mora da inicira algoritam kojim će se nešto, što će se posle proveravati, da li je isto, šifrovati. Rezultat šifrovanja se jedini pamti. Tako bih ja to radio. Ako to dobro primenite, po meni, tajne službe će radije organizovati prepad vašeg računara, prisluškivanje linija dok kucate lozinku ili nešto slično, nego što će raditi na provaljivanju pristupne lozinke.
algoritmi.188 djelovic,
U konferenciji NOVOSTI, poruka 4.822 se nalazi opis jednog jednosmernog HASH algoritma. Na žalost, čini se da je previše glomazan za zolikine potebe :(.
algoritmi.189 janko,
Vi koji ste se prihvatili problema "sigurne reprezentacije pristupne lozinke," pogledajte: > =============================== > 4.822 NOVOSTI.4:microb Tu se izlaže, između ostalog, SHA algoritam, za dobijanje heš funkcije od date poruke. Ako smo zaključili da CRC32 prvo daje premalo bita, a, drugo, da je CRC uopšte lako "provaljiv," onda eto lepog predloga kako dobiti neki broj, reprezent neke poruke, koji ima puno više bita i koji je "tvrđi" (daje 160 bita). Da li je on dovoljan da bude reprezent lozinke, tj. da li obezbeđuje i da se (sa gledišta najjačih kompjutera današnjice i bliske budućnosti) ne može rekonstruisati od broja NIKAKVA poruka koja će dati isti broj, ne znam. Ali, jak konvencionalni metod preko ovih 160 bita je, po meni, sigurna dobitna kombinacija.
algoritmi.190 kriss, -> #188, djelovic
˙˙ HASH algoritma. Na žalost, čini se da je previše glomazan za Ajd sad ja vas da pitam osnovno :) Kakav je to HASH algoritam? :)
algoritmi.191 niklaus, -> #189, janko
(:> Ako smo zaključili da CRC32 prvo daje premalo bita, a, drugo, (:> da je CRC uopšte lako "provaljiv," onda Zaključili? Ja nisam. Molim te pokaži (i dokaži) kako to da je lako provaljiv? Zašto se koristi u popularnom protokolu ZModemu (i svim manje popu- larnim posle njega)? Jednom sam već, nekako apstraktno, rekao da se za 100-njak godina intenzivnog korišćenja modema korisniku neće desiti da ZModem-u "promakne" neki "šum-bit". Pitaj Boga na šta će komunikacije da liče za već 10-ak godina. (:niklaus:)
algoritmi.192 dejanr, -> #191, niklaus
>> > Ako smo zaključili da CRC32 prvo daje premalo bita, a, drugo, >> > da je CRC uopšte lako "provaljiv," onda >> >> Zaključili? Ja nisam. >> Molim te pokaži (i dokaži) kako to da je lako provaljiv? >> Zašto se koristi u popularnom protokolu ZModemu (i svim manje popu- >> larnim posle njega)? CRC32 je, po meni, vrlo dobar za ono za šta se koristi - zaštita od greške pri prenosu. Međutim, očito ima premalo bitova za "ovo drugo", tj. zaštitu od namernog napada. >> Jednom sam već, nekako apstraktno, rekao da se za 100-njak godina >> intenzivnog korišćenja modema korisniku neće desiti da ZModem-u >> "promakne" neki "šum-bit". Hmmm... osećam se jako matoro :) Meni je bar jednom download sasvim normalno prošao, kad ono greška u ZIP-u. Pošto sam slučajno još bio on-line kada sam grešku primetio, ja preimenujem PAD pa ga ponovo skinem, kad ono razlikuju se u podosta bajta jednog sektora. A CvRC, verovatno, isti. Verovatnoća jeste mala, ali mislim da nije baš toliko mala!
algoritmi.193 kale, -> #192, dejanr
>> Međutim, očito ima premalo bitova za "ovo drugo", tj. zaštitu od namernog >> napada. Nije greda u malo bitova, to bi se dalo povećati, nesreća je što bi se dao iskonstruisati bez proveravanja značajnog dela mogućih originala. Ako bi imali algoritam koji radi, broj bitova bi verovatno bio stvar implementacije.
algoritmi.194 peca.st, -> #187, janko
!-> Šta nam ostaje? Kvalitetni algoritmi konvencionalne !-> kriptografije, (znate oni, što se pišu silne knjige o njima, Ok. E, sad kad bi još imao neki primer za to - pa gde bi nam bio kraj. :)) Peđa.
algoritmi.195 janko, -> #191, niklaus
> (:> Ako smo zaključili da CRC32 prvo daje premalo bita, a, > drugo, (:> da je CRC uopšte lako "provaljiv," onda > > Zaključili? Ja nisam. Tvoj problem. ;) Nisi pažljivo čitao. > Molim te pokaži (i dokaži) kako to da je lako provaljiv? Brkaš kontekste. Pričali smo o algoritmu za reprezentaciju pristupnih lozinki sistemu, a ne za proveru "napada šuma." Baš u ovoj temi, skoro, pojavila su se čak dva (doduše, sa istom idejom) dokaza da je CRC za te primene izuzetno lako provaljiv. > Zašto se koristi u popularnom protokolu ZModemu (i svim > manje popu- larnim posle njega)? Zato što tu služi svrsi detekcije šum bitova, uz određena ograničenja koja imaju smisla u datim realnim uslovima. > Jednom sam već, nekako apstraktno, rekao da se za 100-njak > godina intenzivnog korišćenja modema korisniku neće desiti > da ZModem-u "promakne" neki "šum-bit". CRC32 detektuje SVAKI šum bit, ako je razmak između prvog i poslednjeg šum bita u poruci koju štiti manji od trideset dva bita. Preko toga, nije dizajniran da obavezno detektuje, ali, nekad mu uspe.
algoritmi.196 janko, -> #194, peca.st
> kad bi još imao neki primer za to - pa gde bi > nam bio kraj. :)) Kamo lepe sreće, za to "gde bi nam bio kraj." Imam "neki primer za to," a i svi ostali -- ceo sors PGP-a je, ako se sećam, u nekom Sezamovom direktorijumu. Ali ne nadajte se da je to nešto što ide u tri reda. ;) Kvalitet se ne postiže bezbolno.
algoritmi.197 janko, -> #190, kriss
> Kakav je to HASH algoritam? :) Heš funkcijama, ili, našim terminima, funkcijama rasutog adresiranja, obezbeđuje se, obično, što ravnomernije "rasipanje" većih ulaznih veličina u neki manji prostor. Ove funkcije su jedan od fundamentalnih metoda u današnjoj računarskoj tehinci.
algoritmi.198 janko, -> #193, kale
>>> Međutim, očito ima premalo bitova za "ovo drugo", tj. >>> zaštitu od namernog napada. > > Nije greda u malo bitova, to bi se dalo povećati, nesreća > je što bi se dao iskonstruisati ...neki ekvivalent originala... > bez proveravanja značajnog dela mogućih originala.
algoritmi.199 paki, -> #192, dejanr
­> Hmmm... osećam se jako matoro :) Meni je bar jednom download sasvim ­> normalno prošao, kad ono greška u ZIP-u. Pošto sam slučajno još bio Mi 2 :)
algoritmi.200 slom,
Evo ga jedan program a vi probajte da otkrijete koji mi je password. Ne kazem da je funkcija dobra/losa jer ni sam ne znam, jednostavno iskopao sam parce koda, malko ga prepravio pa da vidimo. Username: slom Password: <- ovo treba da otkrijete Rezultat transformacije je: swdrtpgzb uslovi: username - minimalno 3, maksimalno 10 slova (mala=velika) password - minimalno 3, maksimalno 10 slova+cifara (mala<>velika) sm convert.zip
algoritmi.201 prvul, -> #200, slom
Ů Evo ga jedan program a vi probajte da otkrijete koji mi je password. Ů▄▄ A kada sam hteo da napišem FAQ o kriptografiji, kompresiji i sličnim stvarima rekli su da je malko preterano... :( Dakle, nemojte slati programe uz poruke sadržaja sličnog citiranom. Opišite lepo algoritam pa ćemo ga onda analizirati i videti koliko je dobar i za šta. Ako pošaljete samo program, treba da znate nekoliko stvari: 1) Ako bude potrebno, iz svakog programa će se izvući algoritam, tako da tajenje algoritma nije nikakva zaštita od pravih hakera. 2) Program koji priložite jako malo ljudi će uopšte hteti da dl-uje (ja sigurno ne), a još manje da ga razbija... nema motiva: a) materijalno se tim razbijanjem ne dobija ništa b) neće se proslaviti time c) nije izazov Ovo pod b) i c) je iz prostog razloga što neko ko je razbio zaštite nekoliko svetski poznatih paketa nema razloga da "poene" nabija na nečijim amaterskim pokušajima, a baš takvih se treba plašiti. Sve u svemu, ako hoćete da napišete algoritam pa da ga "evaluiramo", ok. Ako nećete, onda algoritam verovatno nije dobar, jer dobar algoritam je po pravilu onaj koji štiti i onda kada je poznat.
algoritmi.202 kale, -> #195, janko
>> CRC32 detektuje SVAKI šum bit, ako je razmak između prvog i >> poslednjeg šum bita u poruci koju štiti manji od trideset dva >> bita. Preko toga, nije dizajniran da obavezno detektuje, ali, >> nekad mu uspe. Da mi je tu sveska iz predmeta "Osnove Računarskih Telekomunikacija", sad bih se ja "setio" garancija koje daje tridesetdvobitni CRC koji je tada koristio USA DOD (Department Of Defence). Ovako, po sećanju, mislim da detektuje sve greške gde je promenjeno do 5 bita i sve greške gde je promenjen neparan broj bita.
algoritmi.203 slom, -> #201, prvul
OK, nije mi bila namera da krijem algoritam. Evo ga ide i source. sm PS: dakle koji je password ? convert.c