[ AelTHeGriN @ 04.09.2004. 13:19 ] @
Vec dvije godine radim na jednom programu za enkripciju, princip rada je one-time pad, nije sad bitno da ulazim u sustinu programa, no postoji jedan problem. Naime napravio sam da se tekst koji korisnik unese prebacuje u odgovarajuce ASCII vrijednosti i da se te vrijednosti smjestaju u listu kvarteta. Kod koji to obavlja izgleda ovako: Code: kvartet = 4 P = select.poll() grupe = [] fajl = raw_input("Unesite ime datoteke koju zelite enkriptirati: ") f1 = open(fajl, "r") P.register(f1.fileno(),select.POLLIN) duljina = os.stat(fajl)[ST_SIZE] while len(grupe) < duljina/2: grupa = "" while len(grupa) < kvartet: datum = ord(f1.read(1)) if datum < 200: grupa+="%2.2d"%(datum%100) grupe.append(int(grupa)) print grupe Nakon sto se to obavi, tekst se XOR operacijom preklapa sa listom kvarteta izvucenih iz /dev/random-a. Takav se enkriptirani tekst prebacuje mailom. Korisnik zatim skida enkriptirani tekst direktno sa POP3 servera i dekriptira ga preklapajuci ga sa istom (tajnom) listom kvarteta cime se dobiva onaj pocetni tekst, odnosno lista kvarteta sa pocetka. Problem je sto ne znam KAKO vratiti tu listu kvarteta s ASCII vrijednostima u pravi (razumljivi) tekst, a problem proizlazi iz toga sto se tekst onim prvim kodom ne prebacuje u "prave" ASCII vrijednosti... Vjerojatno nista niste shvatili:) Ali evo pokusat cu biti razumljiviji, kao primjer cu uzeti ovaj tekst (bez navodnika): "Elitesecurity tekst za enkripciju" Taj tekst nakon prebacivanja u ASCII vrijednosti mojim kodom izgleda ovako: [6908, 516, 115, 199, 1714, 516, 2132, 1601, 715, 1632, 2297, 3201, 1007, 1405, 1299, 506, 1710] Dok bi u stvarnosti trebao izgledati otprilike ovako (bez kvarteta): 69 108 105 116 101... Dakle moj kod brise neke jedinice i pocetne nule i neke druge znakove. Upravo zbog toga ne mogu dobiti pravi pocetni tekst. Ima li pomoci za mene, molim vas pomozite, bio bi jako zahvalan:))) Ako nesto nije jasno (makar sam se zbilja potrudio sve objasniti koliko god mogu), samo pitajte. Hvala puno:) |