Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:perl:perl_hash

< Perl

Perl hash

  • Szerző: Sallai András
  • Copyright © Sallai András, 2011, 2015
  • Licenc: GNU Free Documentation License 1.3

A hashről

Hash alatt kétféle dolgot érthetünk. Egy adattípust és függvényeket. Lényegét tekintve mindkettő hasonló, de más-más területen használjuk. A magyar nyelven kivonatnak is nevezzük.

Adattípusként adatokat tárolunk egy hash típusú változóban. Az adatokra jellemző, hogy kulcs és érték párokból állnak. Új adat felvétel esetén egy algoritmus keresi az olyan kulcsot, amely még nem létezik.

A hash függvényekkel adatsorokhoz tartozó kulcsokat állíthatunk elő, adott algoritmussal. A hash függvények jellemzője, hogy csak egyirányú algoritmusok, vagyis a kulcsból nem állítható elő az adatsor. Az előállított kulcsok mindig különböznek. Elvileg előfordulhat, hogy két adatsorból azonos kulcsot állítunk elő, azonban ennek gyakorlati esélye nagyon kicsi.

Láthatjuk, hogy mindkét esetben van egy kulcs és a hozzátartozó adat. A kulcs alapján azonosítható az adat. Az elv ugyanaz, de más területen használjuk.

A hash függvények felhasználásának két példája: Adott egy DVD képfájl, és szeretnénk egy rövid karaktersorozatot, kulcsot, vagy másként mondva hash szöveget hozzárendelni. A hash szöveggel ellenőrizhetjük a DVD képfájl sértetlenségét.

Másik felhasználási területe a jelszavak titkosítása.

Hash függvények

Minta 001

mcedit tit.pl
tit.pl
#!/usr/bin/perl
 
printf("crypt => '%s'\n", crypt("titok", '$6$sosososo$'));

Futtatás és annak eredménye:

chmod u+x tit.pl
./tit.pl
crypt => '$6$sosososo$sFbKykZmKl/KqRsFA7oIwO2SrLAqT0JB/JA2.ooSTpzIajwUyVQtOX9FDn85pKkX4hh2q3bmNRessW/lGXUGY1

Minta 002

A következő példához telepíteni kell a digest-sha perl modult. Debian GNU/Linuxon ez például így lehetséges:

apt-get install libdigest-sha-perl

Ezek után egy mintaprogram:

main.pl
#!/usr/bin/perl
 
use Digest::SHA qw(sha512_hex);
 
my $kivonat = sha512_hex("hello");
 
print "$kivonat\n";

Hash típus

prog01.pl
%janos = (
	'név' => 'János',
	'kor' => 28,
	'fizetés' => 875000.0
	);
 
print $janos{'kor'};
oktatas/programozas/perl/perl_hash.txt · Utolsó módosítás: 2019/08/22 10:10 szerkesztette: admin