Domanda

Sto lavorando con Subversion, basato su Windows, e vorrei scrivere un semplice programma di utilità in .NET per lavorare con Apache file di password.Capisco che utilizza una funzione di cui all'come MD5Crypt, ma non riesco a trovare una descrizione dell'algoritmo di là che a un certo punto si utilizza l'algoritmo MD5 per creare un hash.

Qualcuno può descrivere il MD5Crypt algoritmo e la password formato della linea?

È stato utile?

Soluzione

Una precisa descrizione testuale della cripta algoritmo di aggiornamento per l'utilizzo con sha256 e sha512 è http://www.akkadia.org/drepper/SHA-crypt.txt

Esso comprende contrasti con l'algoritmo MD5, quindi dovrebbe darti quello che stai cercando.

Altri suggerimenti

È possibile trovare un'implementazione di md5crypt in tcllib pacchetto. Il Download è disponibile da sourceforge.

È inoltre possibile trovare un esempio di un apache-compatibile md5crypt in il codice sorgente per il CAS Generico Gestore

MD5Crypt è fondamentalmente un sostituto per il vecchio unix cripta funzione.E ' stato introdotto in freebsd, ed è stato adottato da altri gruppi.

L'idea di base è questa:

  • un hash è un buon modo per memorizzare una password
    • prendete l'utente ha immesso la password e l'hash
    • confronta l'hash memorizzato
    • se l'hash è la stessa, la password corrispondono

Ma c'è un problema:

  • Si supponga di scegliere la password "jeff" e ho anche scegliere la password "jeff".
  • Ora entrambi i nostri hash delle password sono le stesse.
  • Quindi, se vedo la memorizzati i codici hash, voglio sapere la tua password è la stessa come la mia, di "jeff".

Così, si può aggiungere un "sale" stringa della password.

  • Questo può essere qualsiasi cosa casuale.
  • Supponiamo che il tuo account è "zuzu" e per il mio account è "rjrj".
  • Ora abbiamo l'hash della stringa "jeffzuzu" per la password, e "jeffrjrj" per la mia password.
  • Ora abbiamo diversi valori hash per la nostra password.
  • Siamo in grado di memorizzare in modo sicuro il valore del sale con l'hash della password, dal momento che anche conoscendo il valore del sale, non aiuta a decodificare l'hash.

Si parla .rete, c'è un puntatore in un altro forum per questo:

System.Security.Cryptography.MD5CryptoServiceProvider md5 = new
System.Security.Cryptography.MD5CryptoServiceProvider();

string hash =BitConverter.ToString((md5.ComputeHash(
System.Text.ASCIIEncoding.Default.GetBytes(stringtohash) ) ));

HTH!

Il processo è piuttosto complicato...il sale e la password vengono combinati insieme, non una, ma 1000 volte.Inoltre, la codifica base64 utilizza un diverso alfabeto, e l'imbottitura viene rimosso dalla fine.

La cosa migliore sarebbe probabilmente trovare una libreria da utilizzare, come glibc sotto cygwin.

Poiché il codice contro Apache comunque, date un'occhiata al Apache attuazione della cripta-md5.

L'algoritmo originale (penso) in C può essere trovato qui.Si differenzia dalla precedente attuazione solo dal diverso numero magico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top