2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Hash, joka tunnetaan myös nimellä hash, on salauksen perusta. Hajautus on välttämätön edellytys digitaalisten allekirjoitusten ja salatun viestinnän ymmärtämiselle.
C++:ssa tiivisteitä käytetään usein merkkijonojen salaamiseen niin, että eri merkkijonoilla on eri arvot.
Samanaikaisesti tiivisteet ovat myös peruuttamattomia, joten niitä käytetään usein salasanojen salaamiseen.
Hajautusperiaate on itse asiassa hyvin yksinkertainen. Se on käsitellä tätä merkkijonoa monikantaisena numerona ja sitten muuntaa tämä luku desimaaliluvuksi.
Tuntemalla hajautusperiaatteen, koodin kirjoittaminen on erittäin helppoa.
const int base=131;//这里是将字符串看成的进制
int hash(string str) {
int ans=0;
for(int i=0;i<str.size();++i) ans=ans*base+(int)str[i];
return ans;
}
Itse asiassa on olemassa monia hajautusmenetelmiä, kuten kaksoistiivistys. Mutta itse asiassa vain yksi hash riittää.