Népítélet: Hash-ítsunk előre!

Balu Ertl képe

A sikeres D8-hajrá (megvan a 100% :) után folytatjuk szóhasználatunk pallérozását és módszereink csiszolását. A Kézikönyv-fejezetünk újraírása mellett tucatnyi kifejezésről kell közösen döntenünk, hogy melyik magyar jelentés illeszkedik hozzájuk jobban. Így a közösségi szellemet fokozandó folytatjuk eddigi „Népítélet” sorozatunkat.

Dankó Márton vette észre, hogy az elmúlt évek alatt nem következetesen, sőt, sok helyütt tévesen „ellenőrzőösszeg”-nek fordítottuk, pedig itt alapvetően két külön fogalomról van szó (idézet tőle):

„A hash egy egyirányú (azaz nem visszafejthető) titkosítási módszer, amit általában jelszavakra szoktak használni, hogy ne plain text-ben legyen az adatbázisban, ilyen például az md5 is. Képzése: beadunk neki valamilyen inputot és kiad egy közel egyedi outputot (két inputra lehet ugyanaz az output).

Ellenőrző összeg, angolul checksum: lényege, hogy leellenőrizzük, hogy egy csomag az adatátvitel (vagy tárolás, stb.) esetében sérült-e. Képzése általában: az összes átvitt bájtot összeadjuk, ez lesz az ellenőrző összeg.”

Szavazás: Mi legyen a „hash” magyarul?

A pillanatnyi állás nyilvános, szavazat beküldéséhez D.org-on be kell lépni. A szavazásban jelöltem a Microsoft és Mozilla magyar honosítása által használt kifejezéseket is.

Taxonomy upgrade extras: 
Fórum: 
Sweetchuck képe

Jó lenne egyben látni a hash, checksum és a fingerprint kifejezések honosítási javaslatait is.

Én nem tudok túl sokat ezekről a dolgokról, de eddig én ezt úgy képzeltem el, hogy mind a három esetben (hash, checksum, fingerprint) a generált kódod ugyan olyan eszközzel készítem (md5, sha, stb ...), a különböző kifejezések csak azt mutatják, hogy éppen mire használom.

2
0
Balu Ertl képe

checksum: ellenőrzőösszeg nálunk és Microsoft-nál is.

fingerprint: nálunk még nincs fordítva, de Microsoft és Mozilla is egyöntetűen "ujjlenyomatot" használ.

0
0
golddragon007 képe

Ahogy szokták említeni jelenleg az egyetemen ezeket (és esetleg egyéb anyagokban):
hash - hash/hasító
checksum - ellenőrző összeg
fingerprint - ujjlenyomat

Mind a hármat ugyan arra lehet használni, az adat helyességének ellenőrzésére (ujjlenyomat esetén az egyediségére is).*

Viszont, az ellenőrző összeg készítése az gyorsabb művelet mint a másik kettő, mivel ez egyszerű bit szintű összeadásból és fájl darabolásból áll (TCP protokol is ilyesmit használ), esetenként az is megállapítható, hogy melyik bit hibásodott meg, vagy a fájl melyik részén történt a hiba. (így akár automatikus javítás vagy egyszerű fájl rész újraküldését is tudja az rendszer kérni a hibás fájl kijavításához, implementációtól függően). Az ellenőrző összeg egy másik tulajdonsága lehet, hogy akár több hibát is lehet vele detektálni és akár a hibák helyét is meg lehet mondani vele, ez az ellenőrző összeget készítő függvény megvalósításától függ. (pl; md5sum()) Kimenete egy szám szokott lenni.

A hash az egy olyan hasítás a beviteli adathalmazon (ami lehet kicsi és nagy is), ami egy pontosan meghatározott hosszúságra redukálja a fájlt (md5 esetében 32 karakter hosszú hexadecimális szám), nem visszafejthető, viszont egy kriptográfiailag gyenge függvény esetében könnyen törhető (található olyan más beviteli adat, amire ugyan azt a kimenetet adja vissza). Ellentétben az ellenőrző összeggel, ennél a függvénynél a legkisebb beviteli változásra is, teljesen más kimenetet kapunk (akár, ha csak egy bit-et megváltoztatunk, akkor akár a teljes kimeneti bitsorozat lecserélődhet). (pl; md5() vagy egy egyszerű prímes modulo osztás is ilyen) Kimenete számok és betűk egyaránt esetlegesen írásjel is lehet benne pl; : (kettőspont karakter).

Az ujjlenyomatot többféleképpen is lehet képezni. Ezeknél fontos, hogy teljesen egyediek legyenek. Vannak "kimondottan" ujjlenyomat készítő függvények (Rabin) illetve itt szoktak használni hash függvényeket is. A hashből itt viszont kimondottan a kriptográfiailag erőseket ajánlják, így az md5-öt már nem (az md5-nek a képzése gyorsabb és rendelkezésre áll kb mindenhol alapból ezért szokták még a neten használni, valószínűleg), de az SHA-256, SHA-512 már elfogadhatóbbak. Tipikusan nagy mennyiségű adatra szokták használni. Alapvetően ahogy a nevéből is jön, egyénileg tudja azonosítani az adatott, viszont az ujjlenyomatból szintén nem állítható vissza a fájl. Itt talán az egyediség van a hangsúlyban, míg a hashnél a titkosítás/visszafejthetetlenség.

Összefoglalva:
Bár mind ugyan arra lehet használni mégis az ellenőrző összeg teljesen más, míg a másik kettő akár lehet ugyan az is. (megvalósításilag és kimenetként egyaránt, apróbb eltérésekkel)

Itt pl megtaláljátok a különféle függvényeket: https://en.wikipedia.org/wiki/List_of_hash_functions

Elégé jól összeszedték a valóságot a wikin is ezzel kapcsolatban:
Hash függvény
Ellenőrző összeg
Ujjlenyomat (IT értelemben)

SZERK:
* Pontosítok: mindhárom alkalmas ugyan arra, azaz ellenőrizni, hogy a fájl/adat módosult-e. Viszont alapjában véve, a hash egy egyirányú titkosítási/kódolási módszer (is), míg az ellenőrző összegre ez már kevésbé igaz.

2
0
pp képe

" hash egy egyirányú titkosítási/kódolási módszer (is)"

Az (is) fontos része ennek a mondatnak, mert csak a hash (és nem Cryptographic hash) nem titkosítási módszer.
https://en.wikipedia.org/wiki/Hash_function

Bár lehet, hogy Drupal esetében mindig csak a Te általad emlegetett értelemben használják.

pp

0
0
pp képe

A legegyszerűbb, hogyha a commit hash-t nézzük. :)

A teljes hash az igazából a commit fingerprintje, vagyis újlenyomata, egyedi csak az adott kommitra jellemző azonosító. De pl a timestamp és a szerző is lehetne fingerprint, az is kb. elég egyedi. Meg igazából nem is kell az egész hash, hanem elég csak az első pár karakter (Linux kernelnél 10)

Ha arra használják, hogy ellenőrizzék, hogy az adott commitot sérült-e, akkor igazából egy checksum.
Mondjuk checksumra jobb egy jó kis crc(https://en.wikipedia.org/wiki/Cyclic_redundancy_check) mert azzal nem csak jelezni, hanem adott esetben javitani is lehet a hibát.

Az első pár karaktere (akár csak egy) használható arra, hogy a nagy commit halmot hasítsák, vagyis hash.

Tegyük fel, hogy van sok szövegünk, ekkor:
Ha vesszük egy szövegnek az első 3 karakterét az jó hash-nek(gyors keresés), de nem jó fingerprintnek, és nem jó checksum.
Ha egy teljes szövegnek képezzük a karakterek ASCII kódjainak összegét úgy, hogy nem érdekel minket a túlcsordulás, akkor az tök jó checksum, de nem jó fingerprint. stb.

Szóval nem mindig ugyan azzal az eszközzel készíted ezeket, sőt. De az igaz, hogy ha az md5-el készítik, akkor csak a felhasználás módja mutatja meg, miért hívod úgy ahogy hívod.

pp

0
0
balagan képe

0
0
Sweetchuck képe

Most hogy ilyen szépen összeszedtünk, hogy melyik hogyan működik és mire való, el kéne dönteni, hogy hogyan honosítjuk őket. :-)

Talán a legkönnyebb a checksum => ellenőrzőösszeg
Nekem egy pici bajom mégis van az összeg végződéssel.
Magyarban az "összeg" kifejezés több dolog együttes értékét jelenti. Viszont a checksum 1 adatból készül.
Ezért számomra az ellenőrzőazonosító vagy ellenőrzőkivonat kifejezőbbek lennének. (Ahogy elnézem egybeírva helyesírási hibának számítanak)

A hash => hasító párhuzam nagyon idegen számomra.
A "hasító" hallatán nekem egy balta jut eszembe. Mégpedig az a balta amelyikkel szívesen felaprítanám a kitalálójának a nyelvét :-)

Mindig arra a következtetésre jutok, hogy könnyebb modult írni mint honosítani.

0
0
golddragon007 képe

szerintem teljesen jó és érthető, amennyiben ismered a pontos működésüket. Egyértelműen utal hogy mit csinál és mire jó. (avagy úgy is mondhatnám, hogy triviális, nem értem hol itt a probléma :D )

Nézzük:

Magyarban az "összeg" kifejezés több dolog együttes értékét jelenti. Viszont a checksum 1 adatból készül.

Az ellenőrző összeg generálásakor vagy a szöveg karaktereinek az összege vagy a szöveg (jól meghatározott) blokkjainak az összege az ellenőrző összeg végeredménye, a használt metódustól függően. (ez egy egyszerű példa, lehet bonyolultabb generálási mód is!)

A "hasító" hallatán nekem egy balta jut eszembe. Mégpedig az a balta amelyikkel szívesen felaprítanám a kitalálójának a nyelvét :-)

A balta helyénvaló, bár a nyelv már kevésbé. Ennek az elnevezésének okát legkönnyebben a hasító táblával lehet szemléltetni. Ilyenkor a beviteli adatott (a beviteli adat csoportból) széthasítja a hasító függvény a hasító táblába.
i.e.
Van egy hasító függvényünk, ami ideális (- hogy egzakt milyen módon hasít az mindegy számunkra, a lényeg, hogy a cél helyre betudjuk illeszteni a bevitt adatott -) és van egy hasító táblánk ami 255 férőhelyes (- azaz jelen esetben a hasító függvényünk 1-255-ig [0-254 programozói szemmel] add vissza egy számot és oda tesszük bele a beadott adatot –) és kezdetben üres. A hasító függvény az legyen h().
A bemenetek: "a", "b", "c", "d", "e" .

Ekkor az eredmények:
h(a) -> 198
h(b) -> 3
h(c) -> 103
h(d) -> 255
h(e) -> 156

Ekkor így néz ki a hasítótáblánk:

  1. 1-2 - üres
  2. 3 - b
  3. 4-102 - üres
  4. 103 - c
  5. 104-155 - üres
  6. 156 - e
  7. 157-197 - üres
  8. 198 - a
  9. 199-254 - üres
  10. 255 - d

(Sor sorszáma. Hasító tábla indexe - az adott indexen az érték)

Ebben az esetben a h() hasító függvény széthasította a bemeneti értékeket a hasító táblába. (mint a balta a fát, csak itt az összes bemenetet egymáshoz viszonyítva, nem pedig egy egyéni darabot/bevitelt nézve mint a fás példánál)

0
0
Sweetchuck képe

A lényeg az, hogy olyan emberek is használják a Drupal adminisztrációs felületét akik soha életükben nem tanultak számítás technikát. Ez a hasítós témakőr számukra teljesen kínai.

Az angolban a "hash" szó jelentése sokkal közelebb áll az "identifier"-hez mint például a "cut"-hoz vagy a "split-hez".
Magyarban ezt a "hasító" magyarázatot is nagyon erőltetettnek érzem :-(

A bemeneti adatok nincsenek összenőve, nem kell őket hasogatni.

1
0
golddragon007 képe

Igen, használják. De angoloknál is használják és biztos vagyok benne, hogy az ottani "hétköznapi" ember se tudja, hogy mi az a hash, mivel IT szakzsargonba van a szövegbe írva és nem is tudnék egy másik szinonima szót mondani erre az angol szóra úgy, hogy ugyan azt jelentse (max one-way-coded, de ez nem minden használatnál igaz). Erről nem mi tehetünk, hogy a modul fejlesztője olyan szót tett bele a szövegbe ami IT-s... Emiatt jobb is lehet, ha nem fordítanánk le, aki akar rákeres a "hash"-re, magyar irodalomba is benne van így, nem muszáj a magyar megfelelőjét használni. De én határozottan elutasítom azt, hogy olyan fordítás legyen belőle, mint az NDK-s pornófilm szinkronizáció volt... (nem én szinkronizáltam/fordítottam még a félreértés előtt ezt leszögezem) Arról aztán nem is beszélve, hogy a szövegnek egyértelműnek kell lennie, ha azonosító lenne (identifier) akkor mindenki szerintem az ID-re fog gondolni (legalábbis a szakmabeliek biztosan valami hasonlóra).
Ha már ID, azt se hiszem, hogy minden felhasználó tudja mi az az ID. Ennek ellenére van olyan fordítás ahol ID-ként maradt a magyar szövegben, míg más magyar szövegben "azonosító"-ra lett helyesen lefordítva (az ID is helyes, csak kérdés, hogy ki érti meg ha a normál felhasználókat nézzük?). Azonosításra meg inkább az ujjlenyomat esetben van.

Ha rákeresünk, hogy "mi az a hash?" akkor a google jelenleg elégé sok jó találtatott dob ki, ahol a wikik általában konyha nyelven magyarázzák el, így ha nem értik meg a userek, azzal már semmit se tehetünk.

De ha valami gáz van, és nem megfelelő üzenet jelenik meg, akkor aztán kezdhetjük az egész rendszer debuggolni, meg hackelni, mire rájövünk, hogy mi az igazi probléma... (a fordítás) Mondjuk szerintem ezért szeretem én is angolul adminisztrálni a drupalt, mert úgy biztos nincs szöveg és valóságbeli eltérés. (legalábbis olyan nagy)
Elhiszem, hogy jó lenne, ha mindenki érteni mi az, de ez csak egy ideális képzeletbeli világban fog sikerülni talán, bármennyire is szeretnénk megoldani ezt a problémát. Itt az első az, hogy a fordítás szöveg hű legyen, azaz legyen visszakereshető így akit érdekel megnézheti, hogy mi az vagy legyen érthető egy (talán) tágabb csoport számára is.

1
0
pp képe

gondolom azért ellenőrzőösszeg, mert számolják, még, ha nem is mindig az összeadás az ami a művelet. Az ellenőrző szám, vagy ellenőrző számjegy jobb lenne, ha egy számról vagy számjegyről lenne szó, de a hash tipikusan nem számjegy, vagyis az, csak ugye nem úgy jelenik meg... na megyek inkább modult írni. :D

pp

0
0
asrob képe

Én a "hash" szót meghagynám így ahogy van. :)

3
0

--
Borsa Péter
https://peterborsa.eu

nevergone képe

aboros képe

köszi szépen, sose értettem miért hasítás. nagyon érdekes volt. szerintem fordítsuk "hash" -nek bár, hogy akkor úgy írjuk majd hogy hasht? hasheket? hasheit? hasheiket? jó mondjuk nem tudom vannak e ilyen előfordulások. én a hasítást is meg tudom szokni azok után hogy kábé értem miért az :) (persze mondjuk az ellenörzőösszeg meg az ujjlenyomat egyből érthető volt még úgy is hogy az nem tudtam pontosan hogyan áll elő, de hogy kb mire való az világos, míg a hasítás azért bonyolultabb még elmagyarázva is hogy most mi is történik pontosan miért jó az és akkor kicsit oké hogy hasítás, de hogy ezt hogy hasító kulcs furán fogja nézni sok ember az tuti)

0
0

-
clear: both;

duc-sai képe

Végiggondolva az itt leírtakat (ami nekem is új ismeretanyagot jelentett), az fogalmazódott meg: valóban az eredeti kifejezés használata a legkorrektebb.
A laikusok számára mégis egyfajta kapaszkodót jelenthetne a dolog mibenlétére, ha a "hash-kód" (esetleg "hash-kulcs") kifejezést használnánk a magyar felületen...és így már ragozható is :)

0
0
Balu Ertl képe

Én csak poénból írtam a címben, de sok-sok hasznos hozzászólásotok (nagy kösz érte!) valamint elődeink akkori, nem kevésbé aktív párbeszéde alapján úgy tűnik, valóban a „hashító” lenne a két tábor közös kompromisszuma :D

A magam részéről viszont nem is a műszaki értelmezésébe mennék most bele, csak barátilag emlékeztetném minden vitaoldal résztvevőjét, hogy a más szoftverhonosítók által magyarul már használt „kivonat” kifejezést mennyire tartanátok elfogadhatónak az alábbiak szerint:

hash (fn): kivonat
hash function (fn): kivonatoló függvény
hash key (fn): kivonatkulcs
hash table (fn): kivonattábla
hashing (ige): kivonatolás

(És akkor most válasszuk külön a checksum: ellenőrzőösszeg és fingerprint: ujjlenyomat párosokat, mert azok legalább vitán felüli egyetértéssel megfeleltethetőek egymásnak :)

0
0
pp képe

öööö izé más szoftverhonosítók, eléggé reklámszagú általánosításnak hangzik számomra. Konkrétumokat lécci, mert így nekem elfogadhatatlan.

Rákeresetem
https://www.google.hu/webhp?q=hash%20magyar%C3%ADt%C3%A1sa%20kivonat

egy találat, ahol nem egy szótárra talál a google, amiben az abstract fordítása a kivonat, ez pedig a CleanCode könyv ferdítésében van:
http://hup.hu/node/94092#comment-1137986

A Kiskaput én nem tekinteném követendő mintának a fordításban. Egy könyvüket lektoráltam, de volt nem egy fejezet, ahol az angol eredeti nélkül esélyem se lett volna, hogy megértsem miről szól. Ez a kivonat, ez olyan, hogy aki nem érti az nem kerül hozzá közelebb, aki meg tudná, annak meg esélye se lesz kitalálni mit takar.

pp

2
0
Balu Ertl képe

A Google túl általános kereső ehhez, a témanyitó utolsó bekezdésében kifejezetten referenciaként való hivatkozási céllal emeltem ki linkként a "Microsoft" és "Mozilla" szavak mögött e két szervezet magyar nyelvű kifejezéstárát. Ne haragudj, hogy elkerülte a figyelmed.

Valamint nemrég jelent meg a Pontoon nevű lokalizációs eszköz, amelynek kifejezéskeresője e két fenti mellett további más szabadon elérhető fordítási tárakban is elvégzi a keresést egyszerre. Ezen hasznosságokkal mindig leellenőrizhető, hogyan tud a magyar Drupal nyelvezete jobban alkalmazkodni a felhasználók által más szoftverekben már megszokott-elfogadotthoz.

A belinkelt Google-keresésed tehát nem tekinthető e szempontból mérvadónak és sajnos a nyomtatott könyvek magyar fordításának kritizálása sem vitt minket előrébb.

Továbbra is várjuk hozzászólásaidat, mert fontos lenne, hogy mihamarabb megállapodhassunk és továbbléphessünk.

0
0
pp képe

Béna vagyok, bocsi. Nem láttam a két keresőt, amit belinkeltél az elején. Biztos bénaság ez is, de én csak az MS-nél találtam meg:

https://www.microsoft.com/Language/en-US/Search.aspx?sString=hash&langID...

A Mozillánál nem:

https://transvision.mozfr.org/?recherche=hash&repo=aurora&sourcelocale=e...

De a lényeg, hogy az MS-nél használják, tehát van egy jelentős tábor aki ezt használja már.

pp

0
0
thomas73 képe

Én vidéken hallottam erre a "zsizsik" kifejezést is. :)

0
0
Balu Ertl képe

A 2011-es fórumtémát is beleszámítva.

Ezek alapján tehát a legtöbb név az első lehetőség mellett sorakozott fel.

Példaképpen kigyűjtöttem l.d.o-ról, hogy milyen kifejezésekben fordul elő a D8 és D7 core-ban, a feltételezett szófajonként csoportosítva. A lehetséges új magyar fordításukat még csak javaslatként vittem fel, a sztringazonosítóra kattintva ott láthatóak:

  • Főnévként
    #303104 hash
    #656684 Hash
    #2448284 Default configuration hash
    #1733078 Calculated hash of the feed data, used for validating cache.
  • Igeként
    #355328 User passwords rehashed to improve security
  • Jelzőként
    #2310203 The hashed password
    #1930198 The password of this user (hashed).

Kérdésem a résztvevőkhöz: elfogadjuk akkor a többség véleményét?

2
0
golddragon007 képe

Balu Ertl képe

Eszerint frissítettem a Szójegyzékünket is, valamint hamarosan elfogadásra kerülnek a javított fordítások is.

2
0