Tiivistegeneraattori

Laske minkä tahansa tekstin tai tiedoston MD5-, SHA-1-, SHA-256-, SHA-384-, SHA-512-, SHA-3-, Keccak-256-, RIPEMD-160-, BLAKE2b- tai BLAKE2s-tiivisteet — hyödyllinen tarkistussummiin, eheystarkistuksiin ja välimuistiavaimiin. Liitä odotettu tiiviste syötettä vasten vertailua varten tai liitä tuntematon tiivistemerkkijono, jolloin näkyy, mistä algoritmista se todennäköisesti on peräisin. SHA-1/256/384/512 tulevat selaimen omasta WebCrypto-toiminnosta; muut ovat itsenäisiä puhtaan JavaScriptin toteutuksia, joten kaikki toimii paikallisesti. Katso myös Satunnaislukugeneraattori siemenöidyille satunnaisjonoille.
Toimii kokonaan paikallisesti — mitään ei ladata. Syötteet enintään 200 MB.
Syöte: Algoritmit:
Tulosmuoto: SHA-1 on vanha — suosi SHA-256/512:ta, ellei tarvitse sitä.
Tiivisterivit ovat muodossa “ALGORITMI  tiiviste”, joten ne voi kopioida julkaisutiedotteisiin tai latausmanifesteihin.
Liitä tiiviste, jonka lataussivu tai manifesti antoi. Työkalu sietää isot ja pienet kirjaimet, välilyönnit, kaksoispisteet, sha256=-tyyliset etuliitteet, MD5 (file.exe) =-tyyliset kääreet ja monirivisen md5sum-tulosteen, ja vertaa sitä yllä valittuihin algoritmeihin.
Liitä tuntematon tiivistemerkkijono. Työkalu lukee sen pituuden, merkkijoukon ja etuliitteet ja luettelee algoritmit, jotka ovat voineet tuottaa sen — tavallisesta heksatiivisteestä PHC-tyylisiin salasanatiivisteisiin, kuten $2b$… tai $argon2id$….
Algoritmin valinta:
SHA-256 on järkevä oletus eheystarkistuksiin tänään. SHA-512 on vahvempi ja toimii nopeammin 64-bittisellä laitteistolla pidemmän tuloksen hinnalla; SHA-384 on välivaihtoehto, kun tarvitaan SHA-2-tiiviste katkaistulla pituudella. SHA-3 on itsenäisesti suunniteltu NIST-standardi (ei SHA-2:n päivitys) ja on tavallinen vastaus, kun halutaan algoritmi, jolla ei ole yhteistä sukulinjaa SHA-2:n kanssa; Keccak-256 on Ethereumin ja muutaman muun järjestelmän käyttämä ennen standardointia oleva muunnelma, ja se eroaa SHA3-256:sta yhdellä täytetavulla. BLAKE2b/BLAKE2s ovat nopeita nykyaikaisia tiivisteitä, jotka on suunniteltu ohjelmistokäyttöön; RIPEMD-160 on vanhempi rakenne, jota käytetään yhä Bitcoinissa ja OpenPGP-yhteyksissä. SHA-1 ja MD5 ovat kryptografisesti murtuneita vihamielisten syötteiden kohdalla, mutta ne ovat yhä oikein ja laajasti käytössä kaksoiskappaleiden etsimiseen, vanhoihin järjestelmiin ja ei-vastustajallisiin tarkistussummiin — älä koskaan käytä niitä, missä hyökkääjä voisi valita sisällön. Mikään tämän päivän tiiviste ei ole “kvanttikestävä” siinä mielessä, missä kvanttitietokoneet uhkaavat ensin allekirjoituksia ja avainvaihtoa — Groverin algoritmi puolittaa vain tehokkaan tiivistepituuden, joten SHA-256 on jo mukavasti käytännön rajan yläpuolella. Tiivisteet ovat deterministisiä: sama tavujono tuottaa aina saman tiivisteen, ja juuri se tekee niistä hyödyllisiä sen varmistamisessa, että lataus tai asetustiedosto on ehjä.
Kiinalainen kansallinen tiiviste?
SM3 (GB/T 32905-2016), kiinalaisessa kaupallisessa kryptografiassa määrätty tiiviste, ei kuulu tälle sivulle — sillä on oma työkalunsa HMAC-SM3-tuella SM3-tiivistegeneraattori -sivulla, SM-sarjan muiden osien rinnalla: SM4 (lohkosalain), SM2 (allekirjoitukset ja salaus) ja SM9 (identiteettipohjainen kryptografia).
Tiivistegeneraattori — jokainen algoritmi selitetty alusta asti
Yhdellä lauseella: kryptografinen tiivistefunktio on yksisuuntainen sekoitin — se ottaa minkä tahansa määrän tavuja ja puristaa ne kiinteänmittaiseksi sormenjäljeksi niin, että sama syöte antaa aina saman sormenjäljen, eikä sormenjälki kerro mitään siitä, miten syöte rakennetaan uudelleen. Tämä sivu ajaa niistä yhdentoista kokonaan selaimen välilehden sisällä.

Jokainen alla oleva algoritmi selitetään samoissa neljässä vaiheessa: mitä se on yksinkertaisin sanoin, intuitio siitä, miten se toimii ilman kaavoja, pitäisikö sitä yhä käyttää tänään ja virheet, joita ihmiset tekevät useimmin sen kanssa.

MD5

Mitä se on. MD5 (1992) puristaa minkä tahansa syötteen 128-bittiseksi (32 heksamerkkiä) sormenjäljeksi. Se suunniteltiin nopeaksi 1990-luvun koneilla, ja se on yhä — juuri siksi se on yhä kaikkialla: ohjelmien lataussivuilla, tiedostojen päällekkäisyyden poiston välimuisteissa, vanhoissa tietokantaavaimissa.

Miten se toimii intuitiivisesti. Syöte leikataan 64 tavun lohkoihin. Jokainen lohko sekoitetaan nelinkertaisesti 128-bittiseen liukuvaan tilaan (neljä hieman erilaista sekoituskierrosta), ja viimeisen lohkon jälkeen tila tulostetaan tiivisteenä. Sekoitus koostuu yhteenlaskuista, kierroista ja taulukkohauista — silloin halpaa, nytkin halpaa.

Pitäisikö sitä käyttää? Tarkistussummiin, joissa kukaan ei yritä huijata — vioittuneen latauksen havaitsemiseen, kaksoiskappaleiden etsimiseen — kyllä, se raportoi vioittumisen yhä täydellisesti. Kaikkeen vastustajalliseen ei: vuodesta 2004 lähtien tutkijat ovat voineet laatia kaksi eri tiedostoa, joilla on sama MD5, sekunneissa, ja todelliset sertifikaattiväärennökset MD5-törmäyksiä käyttäen tehtiin vuonna 2008. Käsittele sitä sarjanumerona, ei lukkona.

Yleiset virheet. MD5:n käyttö salasanoihin (aivan liian nopea — katso Salasanatiivisteen generaattori, mikä sinne kuuluu); tiedoston luottaminen siksi, että “MD5 täsmää”, vaikka hyökkääjä on julkaissut myös MD5:n; ja koko MD5 (file) = hash -rivin liittäminen pelkän tiivisteen sijaan — yllä oleva Vahvista-kenttä hyväksyy molemmat.

SHA-1

Mitä se on. SHA-1 (1995, NSA) tuottaa 160 bitin (40 heksamerkkiä) tiivisteen. Kahden vuosikymmenen ajan se oli Gitin, TLS-sertifikaattien ja PGP-allekirjoitusten oletusarvoinen eheystiiviste.

Miten se toimii intuitiivisesti. Sama reseptiperhe kuin MD5:ssä, mutta 160 bitin tilalla, 80 sekoituskierrosta 64 tavun lohkoa kohden ja laajempi joukko operaatioita. Lisäkierrosten oli tarkoitus tehdä sekoittimesta vaikeampi käänteissuunnitella.

Pitäisikö sitä käyttää? Ei vastustajallisiin tarkoituksiin. Teoreettinen murto tuli käytännölliseksi vuonna 2017, kun Google tuotti kaksi eri PDF-tiedostoa, joilla oli identtiset SHA-1-arvot (SHAttered-hyökkäys, noin 6500 CPU-vuotta). Git tallentaa yhä objektit SHA-1:n alle, mutta käsittelee sen vain tunnisteena, ja on sittemmin lisännyt törmäystunnistuksen. Uuteen työhön käytä SHA-256:ta tai SHA-3:a.

Yleiset virheet. Uskotaan, että 160 bittiä “on yhä riittävän pitkä” — murtuma koskee sisäistä rakennetta, ei raakavoimaa; ja sekoitetaan RIPEMD-160 SHA-1:een, koska molemmat ovat 40 heksamerkkiä pitkiä (yllä oleva tunnistuskenttä erottaa ne).

SHA-2: SHA-256, SHA-384 ja SHA-512

Mitä se on. SHA-2-perhe (2001, NSA) on nykyaikaisen eheystarkistuksen työjuhta. SHA-256 antaa 256 bittiä (64 heksamerkkiä), SHA-512 antaa 512 bittiä, ja SHA-384 on SHA-512 tulos katkaistuna 384 bittiin — hyödyllinen, kun protokolla vaatii lyhyemmän tunnisteen.

Miten se toimii intuitiivisesti. 64 tavun lohkot (512-bittisille muunnelmille 128 tavua) taitetaan 8 sanan tilaan 64 (tai 80) kierroksen aikana, joissa on yhteenlasku-, kierto- ja sekoitusvaiheita. Toisin kuin MD5:ssä, aikataulu venyttää ensin jokaisen lohkon laajennettuun puskuriin, ja juuri se torjui hyökkäystyypin, joka rikkoi MD5:n ja SHA-1:n. Kannattaa tietää: 64-bittisillä suorittimilla SHA-512 on nopeampi kuin SHA-256, koska se käsittelee kierrosta kohden kaksinkertaisen datamäärän 64-bittisellä aritmetiikalla.

Pitäisikö sitä käyttää? Kyllä — SHA-256 on tänään oletusvastaus tiedostojen tarkistussummiin, koodin allekirjoittamiseen ja sertifikaattien sormenjälkiin, eikä kahden vuosikymmenen analyysin jälkeen tunneta käytännöllistä murtoa. Käytä SHA-384/512:ta, kun halutaan lisää marginaalia tai kun alusta ajaa ne nopeammin.

Yleiset virheet. SHA-256:n käyttö yksinään salasanoihin — se on nopea tiiviste, ja nopeus on siinä vihollinen (käytä bcrypt/scrypt/Argon2id:tä); ja tiivisteen pituuden sekoittaminen vahvuuteen vastustajallisissa törmäysvastusasetuksissa — pituus asettaa vain katon.

SHA-3 (SHA3-256 / SHA3-512) ja Keccak-256

Mitä se on. SHA-3 (2015, standardoitiin Keccak-ehdotuksesta Bertonin, Daemenin, Peetersin ja Van Asschen toimesta) on NISTin kolmas tiivistestandardi. Sillä ei ole mitään yhteistä SHA-2:n sisäisten rakenteiden kanssa — se valittiin juuri riippumattomaksi varakappaleeksi siltä varalta, että SHA-2 joskus murtuu.

Miten se toimii intuitiivisesti. Sen sijaan, että lohkoja sekoitettaisiin pieneen tilaan, Keccak toistuvasti “imee ja puristaa”: syöte imeytyy bitti kerrallaan 5×5×64-bittiseen sieniin, koko sieni sekoitetaan kiinteällä permutaatiolla (24 kierrosta bittioperaatioita koko tilan yli), ja tiivisteen bitit puristetaan ulos. Sienikuva on koko idea: kapasiteettibittejä ei koskaan tulosteta, ja juuri ne tekevät funktiosta yksisuuntaisen.

Keccak-256 vs. SHA3-256. Ne eroavat täsmälleen yhdellä täytetavulla. Keccak-tiimin alkuperäinen ehdotus täytti viimeisen lohkon tavulla 0x01; NIST muutti standardin täytteen tavuun 0x06 (toimialueen erottelu, jota SHA-2-aikakauden Keccak käyttää). Ethereum otti alkuperäisen täytteen käyttöön, joten sen “keccak256” eroaa standardista SHA3-256:sta jokaisella syötteellä. Tämä sivu tarjoaa molemmat erikseen valittavina.

Pitäisikö sitä käyttää? Kyllä — joko ensisijaisena valintana, kun käytäntö vaatii muun kuin SHA-2-algoritmin, tai missä tahansa ekosysteemissä, joka sitä jo puhuu. Yleiset virheet: oletetaan, että SHA3-256 ja Keccak-256 ovat keskenään vaihdettavissa (eivät ole — vertaa tämän sivun tuottamia kahta riviä samalle syötteelle); ja oletetaan, että “SHA-3” korvaa SHA-2:n — molemmat ovat turvallisia, ja SHA-2 on yhä laajemmin käytössä.

RIPEMD-160

Mitä se on. RIPEMD-160 (1996, eurooppalaisten akatemian tutkijoiden RIPE-konsortio, vahvistettu Dobbertinin, Bosselaersin ja Preneelin toimesta) tuottaa 160 bittiä. Se on kokonaan eurooppalainen suunnittelu, tarkoituksella riippumaton NSA:n suunnittelemasta SHA-perheestä.

Miten se toimii intuitiivisesti. Jokaista 64 tavun lohkoa käsitellään kahdella rinnakkaisella 80 kierroksen linjalla, joilla on eri vakiot ja kiertomäärät; lopuksi kaksi linjaa ja vanha tila yhdistetään. Kaksiraiteinen rakenne oli suunnittelijoiden tapa vastustaa differentiaalihyökkäyksiä, jotka rikkoivat muita 1990-luvun tiivisteitä.

Pitäisikö sitä käyttää? Käytännössä se säilyy lähinnä muiden järjestelmien sisällä: Bitcoin-osoitteet tiivistävät julkiset avaimensa RIPEMD-160(SHA-256(pk))-muodossa, vanhemmat OpenPGP-avaimet tarjoavat sitä tiivistevaihtoehtona, ja se on BitTorrent v1 -osien perinteinen tiiviste SHA-1:n rinnalla. Sille ei ole käytännöllistä törmäyshyökkäystä, mutta 160 bitin koko antaa sille tällä sivulla pienimmän turvamarginaalin. Itsenäiseen uuteen käyttöön suosi SHA-256:ta tai SHA-3:a.

Yleiset virheet. Uskotaan, että kaksi rinnakkaista linjaa tekevät siitä “kaksinkertaisen vahvan” — tuloksen koko on se, mikä rajoittaa törmäysvastusta; ja sekoitetaan se SHA-1:een (sama 40 heksamerkin pituus; yllä oleva tunnistuskenttä listaa molemmat mahdollisuudet rinnakkain).

BLAKE2b-512 ja BLAKE2s-256

Mitä se on. BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn ja Winnerlein) on ohjelmistonopeuteen suunniteltu tiiviste: BLAKE2b on tarkoitettu 64-bittisille alustoille ja antaa jopa 512-bittisen tuloksen, BLAKE2s on tarkoitettu 32-bittisille alustoille ja antaa jopa 256-bittisen tuloksen.

Miten se toimii intuitiivisesti. Se juontuu SHA-3:n finalistista BLAKEsta, jonka ydin on avainpohjainen permutaatio, lainattu virtasalausalgoritmista ChaCha: 4×4-sanamatriisi sekoitetaan vuorotellen sarake- ja lävistäjäsekoitusvaiheilla — kuten ruudukon sekoittaminen ensin ylhäältä alas, sitten lävistäjien suuntaisesti — 12 (BLAKE2b) tai 10 (BLAKE2s) kierrosta lohkoa kohden. Koska nämä vaiheet kuvautuvat hyvin suorittimen käskyille, BLAKE2 on usein nopeampi kuin MD5 ja tarjoaa SHA-3:een verrattavan turvallisuuden.

Pitäisikö sitä käyttää? Kyllä — se on täysin nykyaikainen, murtamaton rakenne, suosittu suorituskykyä vaativissa ohjelmistoissa (paketin eheys joissakin ekosysteemeissä, sisältöosoitteinen tallennus, varmuuskopioiden päällekkäisyyden poisto) ja nopeana MAC:ina. Tällä sivulla BLAKE2b-512 antaa pisimmät tiivisteet ja BLAKE2s-256 tiiviin nykyaikaisen vaihtoehdon.

Yleiset virheet. Ajatellaan, että “nopeampi tarkoittaa heikompaa” — BLAKE2 on nopea suunnittelun ansiosta, ei oikoteiden kautta; ja ei tajuta, että BLAKE2 hyväksyy myös avaimen (jolloin se on MAC) tai personointimerkkijonon — tämä sivu käyttää sitä aina avaimettomassa tavallisessa tilassa.

Vahvista- ja Tunnista-kenttien lukeminen

Vahvista. Vahvista-kenttä normalisoi kaiken, mitä liität — isot tai pienet kirjaimet, kaksoispisteet joka kahden numeron välissä, sha256=-etuliitteen, BSD-tyyppisen SHA256 (file) = hash -kääreen, GNU:n md5sum-rivin, jossa tiedostonimi on tiivisteen jälkeen, eksyneet \r\n-merkit — ja laskee sitten uudelleen jokaisen valitun algoritmin nykyisen syötteen (tekstin tai valitun tiedoston) yli ja raportoi jokaisen täsmäävän algoritmin. Vihreä osuma tarkoittaa “nämä tavut ovat täsmälleen sitä, minkä julkaisija tiivisti”; punainen tarkoittaa, ettei mikään valituista algoritmeista tuottanut sitä — kokeile valita lisää algoritmeja tai tarkista, onko liitos katkennut.

Tunnista. Tunnistuskenttä ei tiivistä mitään; se lukee merkkijonon muodon. Pituus rajaa ehdokkaita: 32 heksamerkkiä voi olla MD5, 40 voi olla SHA-1 tai RIPEMD-160, 64 voi olla SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Etuliitteet paljastavat salasanatiivisteet ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — ne ovat eri lajia (katso Salasanatiivisteen generaattori), eikä tämä sivu tarkoituksella laske niitä. Merkkijono, jossa on +, / ja = ja jonka pituus on nelljällä jaollinen, on todennäköisemmin Base64-koodattua dataa kuin heksatiiviste; työkalu purkaa sen ja raportoi tavupituuden, joka siitä seuraisi.

Mitä tunnistaminen voi ja ei voi kertoa. Pituus ja merkkijoukko ovat muodon sormenjälkiä, eivät todiste algoritmista: kaksi 64-heksamerkkistä merkkijonoa voi olla peräisin SHA-256:sta tai katkaistusta SHA-512:sta. Tunnistin järjestää mahdollisuudet; Vahvista-kenttä on se, joka todistaa, mihin algoritmiin tavut todellisuudessa täsmäävät.

Kaikki yhdentoista yhdellä silmäyksellä
Algoritmi Hajotus Keksitty Tiiviste lauseelle “The quick brown fox jumps over the lazy dog”
MD5128 bittiä19929e107d9d372bb6826bd81d3542a419d6
SHA-1160 bittiä19952fd4e1c67a2d28fced849ee1bb76e7391b93eb12
SHA-256256 bittiä2001d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-384384 bittiä2001ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1
SHA-512512 bittiä200107e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
SHA3-256256 bittiä201569070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04
SHA3-512512 bittiä201501dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450
Keccak-256256 bittiäennen vuotta 20154d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
RIPEMD-160160 bittiä199637f332f68db77bd9d7edd4969571ad671cf9dd3b
BLAKE2b-512512 bittiä2013a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918
BLAKE2s-256256 bittiä2013606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812

Jokainen yllä olevan taulukon tiiviste tuotetaan tämän sivun omilla moottoreilla — valitse kaikki algoritmit, napsauta Näyte ja vertaa. SHA-3-, Keccak-, RIPEMD-160- ja BLAKE2-rivit tulevat tämän sivuston salaustyökalujen käyttämästä itseisännöidystä crypto-shared.js-ytimestä.

UKK

Mihin kenttään latauksen kohdalla kannattaa luottaa? Vahvista-kenttään, jossa SHA-256 on valittuna — useimmat julkaisijat allekirjoittavat nykyään SHA-256- tai SHA-512-tiivisteen. Tunnista-kenttä vain nimeää ehdokkaat; se ei todista mitään tiedostostasi.

Miksi Keccak-256 on ylipäätään listalla? Koska Ethereum, Swarm ja muutama kirjanpitojärjestelmä ovat standardoineet ennen standardointia käytetyn täytön. Jos vahvistat Ethereumin keccak256-tiivisteen, käytä sitä riviä, ei SHA3-256:ta.

Voivatko kaksi eri syötettä jakaa tiivisteen? Teoriassa kyllä — äärettömän monta syötettä kuvautuu äärelliseen tiivistejoukkoon (laatikkoperiaate). Käytännössä tällaisen parin löytäminen ennen maailmankaikkeuden kuolemaa on se, mitä “törmäysvastus” tarkoittaa, ja kaikki yllä olevat algoritmit paitsi MD5 ja SHA-1 ovat yhä pystyssä.

Ovatko tiivisteet salausta? Eivät. Salaus on palautettavissa avaimella; tiiviste on yksisuuntainen sekoitin. Mitään tällä sivulla ei voi “purkaa” takaisin tekstiksi — ja se on ominaisuus, ei rajoitus.