[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