[python] Sifrovani
Ivo Štolpa
pussa na pussa.cz
Pátek Srpen 19 10:47:21 CEST 2005
Ivo Štolpa napsal(a):
> Milan Zmatlo napsal(a):
>
>> Ivo Štolpa napsal(a):
>>
>>> Milan Zmatlo napsal(a):
>>>
>>>> Zdravim,
>>>>
>>>> obracim se na zdejsi osazensvto s nasledujicim mirnym OT:
>>>>
>>>> Rad bych k zakaznikovi distribuoval obecne "prelozeny kus kodu",
>>>> ktery by obsahoval nejakym zpusobem zasifrovanou informaci o
>>>> nastaveni teto konkterni distribuce (poc. uzivatelu, casova
>>>> platnost atp.) Tento kod bych generoval pro kazdou instalaci
>>>> unikatni.. to neni problem.
>>>>
>>>> Potrebuji poradit s pouzitim vhodneho algoritmu na zasifrovani /
>>>> rozsifrovani teto informace. Nerad bych ale do aplikace ukladal
>>>> nejaky klic pro sifrovani a desifrovani, to mi nepripada vhodne.
>>>> Radsi bych mel dva klice. Mam spis predstavu, nez znalosti..
>>>>
>>>> Natuknete me prosim, kudy se vydat....
>>>>
>>> Já to dělám trochu "naruby" pomocí md5, který je v Pythonu
>>> standardním modulem. Ty informace k uživateli dopravuji zcela
>>> veřejně v textovém souboru. Při prvním spuštění aplikace se zobrazí
>>> registrační formulář, do kterého načtu hodnoty z toho textového
>>> souboru (kdyby tam nebyl, tak by to holt uživatel musel všechno
>>> vypsat ručně). Jako poslední je místo pro zadání kódu md5, který
>>> musí uživatel vyplnit dle dodané registrační karty. Graficky to může
>>> být rozsekáno do několika částí, aby se to při zadávání lépe
>>> kontrolovalo. Program pak z vyplněných údajů vypočítá kód md5 a
>>> porovná ho se zadaným kódem. Pokud se rovná, je to OK vše se zapíše
>>> někam do hloubi programu. Nemusí se to nějak moc schovávat, protože
>>> při každém startu se z uložených hodnot vypočítá kód md5 a porovná s
>>> uloženým kódem, takže by poznal, že se s údaji manipulovalo a
>>> zobrazil by znovu registrační formulář.
>>>
>>> Jak jsem říkal není to bůhvíco, ale šel jsem cestou nejmenšího
>>> odporu. Nelíbí se mi například, že při prodloužení musí uživatel
>>> zadat nové datum platnosti, nebo při rozšíření o další modul jej
>>> zafajfknout a poté zadat 32znakové hausnumero. Na druhou stranu je
>>> možné mít jeden instalák (třeba pro internet bez toho textového
>>> souboru). Uživatel pak sice musí vyplnit všechno, ale pro mne to
>>> znamená pouhé zaslání registrační údajů včetně kódu md5 e-mailem
>>> nebo poštou.
>>>
>>> Pokud někdo zná lepší řešení, sem s ním.
>>>
>>> Ivo
>>>
>>
>> V prvnim momentu mi to prislo jako super reseni, jednoduche,
>> elegantni. Nemate ale zaruceno, ze si zvidavy uzivatel tento md5
>> vygeneruje proste sam. Obzvlast, pokud se mu dostane do ruky i ten
>> textovy soubor. Myslim, ze uhodnout ze string typu
>> e23ecba40665787a55afcbbe8a2efaa6 je md5 hash neni az tak slozite..
>> jde uz jen o to, ceho..
>>
>> Ale diky za napad..
>>
> Oops! Zapoměl jsem dodat, že do toho generování kromě těch veřejně
> známých registračních údajů vstupuje i několik údajů, které si program
> zjistí bokem. Musí to být údaje zjistitelné jak u mne, tak v běžící
> aplikaci u zákazníka. Stačí velikost nějakého modulu nebo souboru(ů).
> Nebo nějaká hexahodnota vydolovaná odkudkoliv, která je pro tuto verzi
> pevně daná. Takže zase tak jednodu to není. Navíc při generování md5
> kódu také záleží na pořadí v jakém se do md5 jednotlivé hodnoty
> vkládají..
>
> Ivo
>
Ještě jsem zapoměl dodat, že s těmi registračními údaj lze před
vytvořením md5 hash různě manipulovat. Pospojovat je v přesně daném
pořadí do jednoho stringu, udělat reverse na jednotlivé stringy nebo až
na výsledný string, zyměnit všechna "a" a "e" za znaky mimo naši
klávesnici. Pak to rozsekat a přeházet. Prostě cokoliv, co se dá
jednoznačně udělat u mne i u uživatele se stejným výsledkem. Znalost
těch registračních údajů proto v žádném případě nepomůže.
Ivo
--
Ing. Ivo Štolpa
***********************************************
PUSSA software, Žižkova 13, 58601 Jihlava
e-mail: pussa na pussa.cz, ivo.stolpa na seznam.cz
stránky: http://www.pussa.cz
mobilní telefon: 602 735 124
pevná linka: 567 320 386
fax: 602 783 071
***********************************************
Další informace o konferenci Python