Ahoj, me na tech "stejnych prefixech" nic divneho neprijde - naopak, kdyby to tak nebylo, tak bys ten text nikdy nemohl desifrovat ;-)
Kdyz si aspon neco malo prectes o AES, zjistis, ze sifruje po 128 bitovych blocich (tj. 16 bytu), takze kdyz vezmes "stejnych 16 bitu dat" a zasifrujes je pokazde "stejnym klicem", tak neni snad nic prekvapiveho na tom, ze vychazi "stejne vypadajici zasifrovany blok". J. 2011/6/8 miamia <peterirbi...@gmail.com> > > Ahoj Peťo, > > áno, potvrdzujem, že to ide v tej hombinácii ok. ďakujem za ukážku. > Spravil som pokus: > plain = "Hello, World11" > ciphertext = AES.new("tajneheslo123456", > AES.MODE_ECB).encrypt(resize(plain, AES.block_size)) > print ciphertext.encode('hex') # adc1f6cd135accd4d3627083facc4074 > > plain = "Hello, World111" > ciphertext = AES.new("tajneheslo123456", > AES.MODE_ECB).encrypt(resize(plain, AES.block_size)) > print ciphertext.encode('hex') # c29cfc58173b5a4f4ba6d397fe083600 > > plain = "Hello, World1111111111" > ciphertext = AES.new("tajneheslo123456", > AES.MODE_ECB).encrypt(resize(plain, AES.block_size)) > print ciphertext.encode('hex') # napise > a8ba9848cd563d3e762de25fffaf7aa46e7a5f28eae4e2f0684f8d9ef949869f > > plain = "Hello, World111111111111" > ciphertext = AES.new("tajneheslo123456", > AES.MODE_ECB).encrypt(resize(plain, AES.block_size)) > print ciphertext.encode('hex') # napise > a8ba9848cd563d3e762de25fffaf7aa4e9277a3748ee1a6daf8f1d0e5fdfc026 > > > Jediné, čo ma trápi je to, že pri posledných dvoch plainoch sú rovnaké > začiatky. zaujímavé je, že pri "Hello, World11" a "Hello, World111" > nie sú rovnaké začiatky. hm. Skúšal som zmeniť mód na CFB, CBC, ale > vždy tie začiatky sú rovnaké. prečo tomu tak je? dúfal som, že by to > nemalo byť rovnaké. > > > On 4 čvn, 18:59, Petr Messner <petr.mess...@gmail.com> wrote: > > Ahoj, > > > > jen ze zajímavosti jsem vyzkoušel AES a šlo to dobře, v PHP s nějakou > > knihovnou, co jsem našel na webu... > > > > Zašifrování v Pythonu: > > > > #!/usr/bin/env python > > from Crypto.Cipher import AES > > def resize(s, blockSize): > > if len(s) % blockSize == 0: > > return s > > else: > > return s + " " * (blockSize - len(s) % blockSize) > > plain = "Hello, World!" > > ciphertext = AES.new("tajneheslo123456", > > AES.MODE_ECB).encrypt(resize(plain, AES.block_size)) > > def to_hex(s): > > return " ".join(hex(ord(c)).replace("0x", "").rjust(2, "0") for c in s) > > print to_hex(ciphertext) # napise 3d e8 9f 9f 8d dc f1 ef 1c 6f fc 45 > > c6 72 14 f7 > > > > Dešifrování v PHP: > > > > <?php > > $ciphertext = "3d e8 9f 9f 8d dc f1 ef 1c 6f fc 45 c6 72 14 f7"; > > require("./AES.class.php"); //http://www.phpaes.com/ > > $aes = new AES('tajneheslo123456'); > > $ciphertext = > > "\x3d\xe8\x9f\x9f\x8d\xdc\xf1\xef\x1c\x6f\xfc\x45\xc6\x72\x14\xf7"; > > echo "'" . $aes->decrypt($ciphertext) . "'\n"; > > ?> > > > > Problém je, že klíč pro AES musí mít délku 16, 24 nebo 32 bajtů a > > délka plaintextu musí být dělitelná 16, takže jsem na konec přidal > > patřičný počet mezer (v Pythonu funkcí resize). Správně bych měl asi > > místo mezer použít náhodné znaky a spolu se zprávou poslat i délku > > plaintextu a dešifrovaný text pak na tuto délku oříznout. > > > > AES má různé módy, použil jsem ECB, protože phpAES umí (podle > > informací na phpaes.com) v neplacené verzi jen tento mód. Bohužel > > nevím v čem se tyto módy liší. U ostatních módů se musí kromě klíče > > určit i inicializační vektor. > > > > Jo a pokud by bylo potřeba binární řetězec (tedy zašifrovaný text) > > nějak rozumně čitelně vypsat, hodí se na to base64 (v ukázce jsem > > použil hexadecimální čísla). > > > > Petr Messner > > > > 2011/6/4 miamia <peterirbi...@gmail.com> > > > > > > > > > > > > > Dobry den, > > > prosim Vas, potrebujem zasifrovat text v pythone a potom ho desifrovat > > > v skripte PHP. Skusal som pycrypto a nejake aes php skripty, ale > > > vysledky (zasefirovanie/desifrovanie) neboli rovnake - nepodarilo sa > > > mi to rozchodit. Da sa niekde najst priamo nejaky priklad, ako toto > > > spravit v pythone a desifrovat v PHP (najlepsie zdrojaky)?velka vdaka > > > _______________________________________________ > > > Python mailing list > > > pyt...@py.cz > > >http://www.py.cz/mailman/listinfo/python- Skrýt citovaný text - > > > > - Zobrazit citovaný text - > > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python -- Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet. _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python