Python Language
hashlib
Sök…
Introduktion
hashlib implementerar ett gemensamt gränssnitt till många olika säkra hash- och meddelandedigeringsalgoritmer. Inkluderade är FIPS-säkra hash-algoritmerna SHA1, SHA224, SHA256, SHA384 och SHA512.
MD5-hash för en sträng
Den här modulen implementerar ett gemensamt gränssnitt till många olika säkra hash- och meddelandedigeringsalgoritmer. Inkluderade är FIPS-säkra hash-algoritmerna SHA1, SHA224, SHA256, SHA384 och SHA512 (definierad i FIPS 180-2) samt RSAs MD5-algoritm (definierad i Internet RFC 1321).
Det finns en konstruktormetod som heter för varje typ av hash. Alla returnerar ett hashobjekt med samma enkla gränssnitt. Till exempel: använd sha1()
att skapa ett SHA1-hashobjekt.
hash.sha1()
Konstruktörer för hashalgoritmer som alltid finns i den här modulen är md5()
, sha1()
, sha224()
, sha256()
, sha384()
och sha512()
.
Du kan nu mata detta objekt med godtyckliga strängar med update()
. När som helst kan du be det om att smälta sammankopplingen av strängarna som hittills hexdigest()
metoderna för digest()
eller hexdigest()
.
hash.update(arg)
Uppdatera hashobjektet med strängen arg. Upprepade samtal motsvarar ett enda samtal med sammanlänkningen av alla argument: m.update (a); m.update (b) motsvarar m.update (a + b).
hash.digest()
Återställ upptäckten av strängarna som hittills överförts till uppdateringsmetoden. Detta är en sträng av digest_size-byte som kan innehålla tecken som inte är ASCII, inklusive null-byte.
hash.hexdigest()
Som digest () förutom att digereringen returneras som en sträng med dubbel längd, som endast innehåller hexadecimala siffror Detta kan användas för att utbyta värdet på ett säkert sätt i e-post eller andra icke-binära miljöer.
Här är ett exempel:
>>> import hashlib
>>> m = hashlib.md5()
>>> m.update("Nobody inspects")
>>> m.update(" the spammish repetition")
>>> m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
>>> m.hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'
>>> m.digest_size
16
>>> m.block_size
64
eller:
hashlib.md5("Nobody inspects the spammish repetition").hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'
algoritm tillhandahållen av OpenSSL
En generisk new()
konstruktör som tar strängenamnet på den önskade algoritmen som sin första parameter finns också för att möjliggöra åtkomst till ovan listade hash samt alla andra algoritmer som ditt OpenSSL-bibliotek kan erbjuda. De nämnda konstruktörerna är mycket snabbare än new()
och bör föredras.
Använda new()
med en algoritm från OpenSSL:
>>> h = hashlib.new('ripemd160')
>>> h.update("Nobody inspects the spammish repetition")
>>> h.hexdigest()
'cc4a5ce1b3df48aec5d22d1f16b894a0b894eccc'