Asi byste měl upřesnit co myslíte tím "obousměrným šifrováním". Existuje pojem pro "jednosměrné šifrování", ale to není ekvivalent opaku pro "obousměrné šifrování". Tady by bylo na místě hovořit o asymetrickém a symetrickém šifrování. Respektive o jednocestném (šifrování + dešifrování) stejným postupem. Při tom nejde o úplně správný popis. Mezi pojmy "jednosměrný, respektive jednocestný" algoritmus je propastný rozdíl.
Tím jedním jednocestným šifrováním + dešifrováním je algoritmus ROT13 který je zabudovaný do Calcu jako funkce. Na první kliknutí zašifruje a na druhé kliknutí dešifruje. Není vybaven heslem a patřil by správně mezi proudové metody.
Naopak jednosměrné (nikoliv jednocestné) šifrování je opravdu jiný pojem. Je to šifra která se vůbec nedešifruje. Pouze se porovnává "její otisk". Takže například Váš e-podpis "zašifrujete" a porovná se to s kopií jednosměrné šifry. Když to souhlasí - je to ověřeno, když ne tak nic:-)
Takže pokud to není jednocestné, respektive jednosměrné šifrování - pak je to vše ostatní, což znamená symetrické nebo asymetrické šifrování. Takže "obojsměrná šifra je tak široký pojem až je téměř úplně vágní - jsou to téměř všechny šifry, metody, algoritmy ap.".
Samozřejmě ne všechny šifry používají klíč. Typicky pro proudové šifry (respektive typy korporátních šifer) postačuje znalost algoritmu. Toto funguje například mezi servery a zabezpečuje se tak jen cesta pro případ odposlechu. Algoritmus se mění podle nějakého konceptu a může se měnit například hodinu po hodině ap.
Celkem pochopitelnější je to co následuje (pomoci neverejneho klice) do cisel a pismen (napr. 16-soustava) - cca 25-30 znaku (ne vice). To je celkem zřetelné využití "Base64" které se také používá jako proudová šifra, ale také jako klasická.
Jde tam o to, že se šifrují jen znaky ASCII 7bit (anglická mluvnice - znaky čísel, + velká a malá písmena plus tečka a tuším otazník, nebo vykřičník - celkem 64 znaků). Ty se zapíšou pomocí 4 bytů v osmičkové soustavě, ale pak se šifrují do 3-bytové soustavy osmiček. Tím se zvětší šifra o 1/3 oproti zdrojovému textu. Ovšem vlastní šifra už je zapsána zase do 4 bytů hexadecimálně.
To co popisujete jako potřebu - nanejvýš 25-30 znaků je v přímé relaci kterou Base64 bohatě pokrývá. Takže si vyhledejte na cizích fórech heslo - něco ve smyslu "cipher Base64", nebo "how to Base64" a podobně. Já jsem tam viděl takové makro pro šifrování a dešifrování. Příspěvků na takové téma bylo více nežli 2.
Zase ta Vaše poznámka vychází ze skutečnosti že se šifruje jen málo znaků na principu primitivní substituce (například Ceasarova šifra). Pak také skutečně může jít o ten algoritmus ROT13.
Správná, respektive standardně dobrá šifra funguje tak, že substituční tabulku určuje heslo. Proto některé šifry uvádějí heslo na začátku, na konci nebo na určitém segmentu šifry. Pokud by vaše šifra měla mít jen asi 25-30 znaků, tak Vám jde evidentně o určení číselné substituce (25^2 až 30^2) znaků (jako číslelná soustava) = vyjádření čísla znaku (nejspíš dvojice znaků = CHAR(číslo).
Znaky ve dvojici pak představují číslo znaků abecedy. Pak těchto 25-30 znaků jsou jediné znaky které jsou v šifře obsaženy. Příklad možného užití :
Česká sada Unicode 8 bit obsahuje do znaku 31 jen znaky "netisknutelné" - respektive řídící. Pak obsahuje ještě 4 "jalové znaky" které se určují jinými čísly, ale čtou se stejně (tuším jako otazník). No a pak na konci jsou málo používané znaky speciálního určení, které běžně není potřeba, respektive je není třeba šifrovat. Takže vystačíme jen se 169 tvary (=13^2), nebo 196 tvary (=14^2), respektice 225 tvarů (=15^2). Těch 225 tvarů vyhovuje prakticky všem znakům mimo netisknutelných (254-31 = 225).
Takže si vyberte znaky pro první a extra pro druhou polovinu. Jejich svázání do dvojic udělejte dle hesla a máte šifru jako víno. To jaké znaky jsou na prvním místě a jaké na druhém už je dost silná šifra.
Ovšem pak ještě potřebujete znát dost věcí. Například že při stavbě maker není snadné jen tak nakódovat "české znaky ze sady Unicode" - v Basicu se dají přímo psát jen obecné Unicode (16 bitů). Podobně je na tom UTF8(16) při tom nejde o českou sadu Unicode. Dále není ani moc snadné zadeklarovat různé uspořádání substitučních dvojic (když to nebude flexibilní tak to dokáže snadno dešifrovat běžný uživatel - zakóduje si několik podobných zpráv a má klíč když porovná zdroj a šifru...:-)
Přesně tyhle věci dělám a mám připraveno několik šablon, respektive rozšíření pro AOO a LO. Jde například o "odstavcové šifry", nebo o "korporátní" či "proudové" šifry a podobně. Takže vím dost abych byl opatrný a Vy byste měl být také.
Asi byste se měl zamyslet co až se Vám povede sestrojit dobrou a funkční šifru - co s ní budete dělat? Dáte ji k dispozici široké veřejnosti? Nebo to poskytnete nějakým extrémistům (byť nevědomě) - a budete čekat až Vás přijdou vzbudit chlapci z rychlé roty co klepou zásadně beranidlem? :-)
Editoval neutr (8. 4. 2016 22:07:55)
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ