Portál AbcLinuxu, 14. května 2025 02:38

Dotaz: Bash | encrypt - decrypt

25.7.2012 16:24 Jarek
Bash | encrypt - decrypt
Přečteno: 335×
Odpovědět | Admin
Ahoj, neznáte někdo nějakou funkci nebo navod jak zakodovat cca 25-30 znaku do max 16znaků? Samozrejme to musi jit i provest zpet ;) Díky

PS: jeste priklad
moje_mila_babicka_ma_buchty = asds5v4zr2d6f42v

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

frEon avatar 25.7.2012 17:01 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
Odpovědět | | Sbalit | Link | Blokovat | Admin
pokud zakodovany retezec ma byt kratsi nez nezakodovany, tak si muzes byt jisty, ze existuji 2 ruzne retezce, ktery kdyz zakodujes, tak na tebe vypadne to samy.... takze si myslim, ze chces nesmysl... k cemu to chces? mozna se da najit pro reseni tveho problemu neco lepsiho...
Talking about music is like dancing to architecture.
25.7.2012 17:58 Jarek
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
Potřebuji nějak ošetřit názvy uživatelů v mysql. Jelikož můžu uložit max. 16 znaků jako název uživatele a potřebuji daleko více než 20 znaků tak nevím jak to mám udělat. Tvořím plně automatický systém pro zálohování jak http tak sql databází, ale potřebuji nějak ošetřit to, že chci mít stejný název databáze jako jsou domény včetně domén 3 řádu. Čili když budu mít např. takové názvy domén
www.domena.cz
foo.domena.cz
www.domena.eu
foo.domena.eu

www.jina-domena.cz
foo.jina-domena.cz
www.jina-domena.eu
foo.jina-domena.eu
atd..
chci mít i takové názvy uživatelů a databází aby script věděl kam má co uložit.. Samozřejmě můžu napsat do souboru co k čemu patří ale to nechci, jak jsem psal systém je zcela plně automatický a tohle je jediný problém na který jsem narazil...
25.7.2012 18:22 Kit
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
Udělat uživatele s <=16 znaků a oddělit je od názvů domén. Nechápu, proč bych se jako uživatel měl jmenovat www.domena.cz. To bych musel mít pro každou doménu nový účet.
25.7.2012 18:29 Jarek
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
No to by mě zajímalo jak by jsi to chtěl udělat automaticky.. bez zasahu do nějakého nastavení..
25.7.2012 21:27 Kit
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
Uživatel si zvolí přihlašovací jméno a ve svém účtu si založí potřebné domény. Je to dost automatické?
25.7.2012 18:33 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
Na to ale nepotřebujete umět zpětný převod z uživatelského jména na doménová jméno, ne? Doménové jméno může být uložené třeba v nějaké tabulce v té databázi. Pokud pro jména uživatelů můžete využít všechny 8bitové ASCII znaky, použijte MD5 - to vám dá právě 16 osmibitových písmen. Pokud je pro jméno možné použít jen malá a velká písmena a číslice (a velikost písmen se rozlišuje), chtělo by to nějakou hashovací funkci v výstupem 96 bitů a výstup zakódovat pomocí bas64. Žádná taková mne ale nenapadá. Jedině vzít třeba MD5 a z výstupu použít jen 96 bitů, což je sice kryptografický paskvil, ale tady by to snad mohlo být jedno. Akorát bych pak už radši počítal s možností kolizí -- spočítat uživatelské jméno, ověřit doménu podle tabulky v databázi, a pokud nesedí, přičíst k výstupu např. jedničku, otevřít příslušnou databázi a takhle pokračovat, dokud se příslušný uživatel nenajde.

A nebo vytvořit jeden uživatelský účet pod kterým bude tabulka s mapováním doména -> uživatelské jméno. Tj. to vaše řešení se souborem, akorát by to bylo v databázi.
14.8.2012 16:44 Jarek
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
použijte MD5 - to vám dá právě 16 osmibitových písmen
no já nevím, ale mě to vrací 32 znaků, ne 16 znaků..

echo "$NAZEV_UZIVATELE" | md5sum // c8cd77bdbaa7fb89239df8f30d97b952
14.8.2012 16:56 l4m4
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
To je hexadecimální zápis, tj. jeden bajt (znak) je zapsán pomocí dvou hexadecimálních číslic.
rADOn avatar 14.8.2012 17:04 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
Však Filip psal uříznout požadovaný počet bitů. Nebo si napsat hustší než hexadecimální reprezentaci. Navíc já bych se tolik nebál kolize a klidně si složil řekněme kousek jména a kousek hashe, aby to bylo taky trochu lidsky čitelný. Pokud nemáš spousty stejných domén tak by klidně mohlo stačit 4-6 znaků.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
14.8.2012 17:10 l4m4
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
echo -e $(echo $NAZEV_UZIVATELE | md5sum | sed 's/ .*//;s/../\\x\0/g') | base64
Na base64 to zhustíš třeba takhle (a pak teprve uřízneš).
rADOn avatar 14.8.2012 17:28 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
To je dobrej trik s tim sedem do echa, čuměl jsem na to asi minutu než mi to došlo… smekam.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
14.8.2012 17:18 Jarek
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
Odpovědět | | Sbalit | Link | Blokovat | Admin
OK, poradíte mi prosím ještě tedy jak bych mohl získat z proměnné třeba prvních 10 znaků? Děkuji
rADOn avatar 14.8.2012 17:32 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Bash | encrypt - decrypt
${FOO:0:10}
"2^24 comments ought to be enough for anyone" -- CmdrTaco

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.