2009-08-25 9 views
7

Esiste un modo per calcolare un hash SHA256 in Python 2.4? (Sottolineo: Python 2.4) So come farlo in Python 2.5 ma sfortunatamente non è disponibile sul mio server e non verrà effettuato un aggiornamento. Ho lo stesso problema del ragazzo nella domanda this, ma usando Python 2.4. Qualsiasi aiuto sarà molto apprezzato.SHA256 hash in Python 2.4

MODIFICA: Mi spiace, intendo SHA 256. Ero troppo di fretta. Ancora una volta mi dispiace.

risposta

10

Sì, è possibile. Con Python 2.4, c'era il modulo SHA-1 che fa esattamente questo. Vedi the documentation.

Tuttavia, tenere presente che l'importazione di codice da questo modulo causerà DeprecationWarnings quando viene eseguito con Python più recente.

Ok, poiché il requisito è stato stretto per essere SHA-256, l'uso del modulo SHA-1 nella libreria standard non è sufficiente. Suggerirei di controllare pycrypto, ha un'implementazione SHA-256. Ci sono anche versioni binarie di Windows per abbinare i vecchi Python, seguire i link di Andrew Kuchlings old PyCrypto page.

+0

Se si utilizzano password di hashing, non mi consiglia di utilizzare SHA-1, mai. È stato rotto e non è considerato insicuro. Anche l'uso di MD5 per le password hash è considerato non sicuro. Se non puoi accedere alle nuove librerie di hashing nelle versioni più recenti di Python, ti consiglio di effettuare una chiamata di sistema a 'ssh-keygen' (su Linux) e leggere nel file che crea. – MikeyE

+0

È un po 'esagerato dire "sempre", nel 2009, quando la domanda e la risposta erano state scritte, SHA1 era OK. Per riferimento, il primo approccio teorico per fare in modo che gli hash SHA1 si scontrino con Marc Stevens non è stato pubblicato fino al 2013. Ma sì: conoscete i vostri hash e comprendete le implicazioni sulla sicurezza delle vostre scelte. –

+0

Ti sento. Quando ho detto "mai", ciò che intendevo era "sempre da questo momento in avanti". Ma, pensavo che fosse implicito. Fai un buon punto. Penso che la tua risposta sia stata utile quando è stata scritta. Forse potrebbe essere rivisto per essere al passo con i tempi? – MikeyE

8

È possibile utilizzare il modulo sha, se si vuole rimanere compatibile, è possibile importare in questo modo:

try: 
    from hashlib import sha1 
except ImportError: 
    from sha import sha as sha1 
+0

Il codice pubblicato calcola SHA-1 ed è inutile calcolare SHA-256. – pts