Autor Zpráva
sitole
Profil
Ahoj, nejsem moc spokojený s MD5 a podobným "šifrovacím" a kodovacím systémem. Rozhodl jsem se tedy vytvořit vlastní.
Jedná se zatím jen o takovou maličkost, kterou plánuji využít na vlastních projektech, protože ji vlastně není možné zjístit. Tedy asi je, ale útočníci asi budou hledat kodovaní pomocí MD5 a podobné.

Stránka s testem

Jedná se jen o testík toho kdo to vlastně zjísti. a dokáže případně rozkodovat text, který naleznete na spodní straně stránky.
Jak se vlastně při dešifrování postupuje a jak se mu bránit? :)
Děkuji všem!
Dan Charousek
Profil
sitole:
Je důležité si uvědomit, že MD5, SHA1 a jim podobné funkce nejsou funkce šifrovací, ale hashovací. Jejich návratové hodnoty jsou pouze otisky vstupních dat, ze kterých je nedostaneš zpět. Jednoduše řečeno jedná se o jednosměrný proces.
sitole
Profil
Dan Charousek:
To je vlastně pravda. Proto je můj "hashovací" a né "šifrovací", protože z šifrování se to dá vždy dostat, ale z hashe by to nešlo vůbec či velice ale velice špatně že?
Chci to udělat tak, aby byl pokaždé stejný výsledek, ale nešlo to dovést na základní hodnotu. Proto tam nejsou žádné mezery a spoustu znaků má stejný výsledek.
Tomáš123
Profil
sitole:
> „podobným "šifrovacím" [...] Rozhodl jsem se tedy vytvořit vlastní.
> „Proto je můj "hashovací" a né "šifrovací"
Ujasni si čo chceš napísať a netvár sa, že chyba vznikla dezinterpretáciou.

Proto je můj "hashovací" a né "šifrovací", protože z šifrování se to dá vždy dostat, ale z hashe by to nešlo vůbec či velice ale velice špatně že?
Z toho tvojho to tipujem až tak ťažko nepôjde. Vyskúšal som prvých šesť alebo sedem písmen v abecede a náhodou sa v niektorých prípadoch vo výslednom reťazci výsledok vyskytoval aj šesť či osem krát.

Na druhej strane, keď budeš tak často meniť algoritmy...
sitole
Profil
Tomáš123:
Nic takového nedělám a sám jsem v komentáři [#3] uznal chybu.
Je pravda, že to dělá a já moc netuším proč. Nejspíše jsem přidal znak navíc. Přepočítám to jednotlivě a pokusím se doladit.
fandaa
Profil
sitole:
Jak to vypadá, děláš pouhou substituci každého znaku za jiný znak, či sekvenci znaků. Pokud by se jednalo o smysluplný zašifrovaný text, dalo by se jej dešifrovat kombinací pevně dané překládací tabulky, jenž tvůj kód obsahuje, a různých dalších technik, např. frekvenční analýzy.

Co se hashování týče, je ten kód taktéž k ničemu. Po půl minutě jsem schopen vytvořit tisíce řetězců, které budou mít shodný výstup jako ten, co je uveden na stránce. Což je klíčová věc u hashovacích funkcí - aby nebylo snadné nalézt původní, případně jiný řetězec se shodným výstupem. Tedy aby nebylo snadné nalézt kolizní řetězec.
sitole
Profil
fandaa:
Postupuje to vlastně v několika krocích nejdříve se upravují znak za znak a poté dle shody upravuji například "sd" na něco zase jiného. Takže vlastně "s" je "1" a "d" zase "0", ale když jsou zapsány hnedle za sebou vypíše se například "54". Je pravda, že je to značně nedořešené ale potřeboval jsem zjístit i různ možnosti. Děkuji :-)

EDIT: Rozhodl jsem se tedy využít hotového "sha1" a "md5" a použít tam čas. Tedy že čísla pomocí kterých se bude hashovat bude například sekunda odečtená od minuty a podobně. Bude to malinko složitěji, ale bude to dobrý základ? :)
fandaa
Profil
sitole:
I tak, stačí špetka výkonu a nějaký čas na napsání skriptu, který bude generovat vstup, porovnávat s očekávaným výstupem a učit se. V dnešní době s dostupným machine learningem, např. v Microsoft Azure, tě to celé bude stát třeba dolar.

Z toho tedy vyplývá, že psát vlastní šifry / hashovací funkce, je bez znalostí vyšší matematiky a možností dešifrování takřka nemožné a doporučuji od toho upustit. :-)
lionel messi
Profil
sitole:
Bude to malinko složitěji, ale bude to dobrý základ? :)

Pokiaľ beží na serveri verzia PHP 5.5.0 alebo vyššia*, používaj password_hash() a password_verify() a máš od podobných vylomenín svätý pokoj.

*) od 5.3.7 môžeš využiť túto implementáciu: github.com/ircmaxell/password_compat
sitole
Profil
lionel messi:
To by mohlo být to co si přeji! Děkuji moc! :)
Joker
Profil
sitole:
Ahoj, nejsem moc spokojený s MD5 a podobným "šifrovacím" a kodovacím systémem. Rozhodl jsem se tedy vytvořit vlastní.

Snažit se vymyslet vlastní alternativy vestavěných knihoven bývá většinou špatný nápad, ale u kryptografických funcí je to úplný nesmysl.
Je prakticky vyloučené, aby někdo bez rozsáhlých zkušeností v oboru (řekněme minimálně tak PhD) vymyslel nový kvalitní kryptografický algoritmus.

Chci to udělat tak, aby byl pokaždé stejný výsledek, ale nešlo to dovést na základní hodnotu. Proto tam nejsou žádné mezery a spoustu znaků má stejný výsledek.
To jsou ale jen některé z podmínek.
Dobrý hashovací algoritmus:
1. Musí pro stejný vstup dát pokaždé stejný výsledek,
2. naopak pro různé vstupy to musí dávat co nejširší škálu výsledků (tj. musí být pokud možno co nejméně kolizí),
3. nesmí pro podobné vstupy dávat podobné hashe, ani nesmí existovat algoritmus, jak pozměněním vstupu dosáhnout změny jen určité části hashe,
4. nesmí mít možnost se na základě znalosti hashe dopracovat k nějakému vstupu, který ten hash generuje.
Martin2
Profil *
lionel messi:
Pokiaľ beží na serveri verzia PHP 5.5.0 alebo vyššia*, používaj password_hash() a password_verify()
V podstatě je to klasický bcrypt, jen s jednodušším použitím. Takže u starších verzí PHP postačí extenze MCrypt a její funkce.

Jinak je svatá pravda, co psal Joker. Nemá smysl vymýšlet vlastní šifry bez velmi dobré znalosti vyšší matematiky a informatiky. Síla moderních šifer nestojí na utajení, ale na obtížné řešitelnosti některých známých matematických problémů (faktorizace, nalezení diskrétního logaritmu křivky a tak dál).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: