Sto migrando un codice c da Linux a Mac OSX (yosemite). La funzione crypt() di Mac OSX (che è in unistd.h, come ho determinato), non è la stessa di gcc/gnu in Linux. Ho programmi di test su Linux e Mac OSX e la funzione c-library crypt() visualizza una stringa di 34 caratteri, se si visualizza il risultato utilizzando printf. Lo stesso codice su Mac OSX, mostra solo una stringa di 13 caratteri. Un po 'di ricerca suggerisce che la differenza è che apparentemente la routine della libreria crypt() di Linux genera l'hash dai vettori più lunghi sul lato gnu/gcc Linux, usando forse un algoritmo di crittografia diverso. Alcune informazioni suggeriscono anche che la funzione crypt() di Apple Mac OSX c-library utilizza solo DES per crittografare la stringa originale più il sale. Voglio che il mio codice di prova produca gli stessi risultati, su piattaforme Linux e Mac OSX.Come ottenere la stessa funzione crypt (3) in Mac OS X come Linux gcc/gnu crypt (3)? Linux gcc crypt (3) ha MD5 e SHA512. Apple GCC crypt (3) * only * utilizza DES
Esiste una funzione crypt() corretta per Apple Mac OSX, isometrica alla versione gnu/gcc di Linux, forse in una libreria di crittografia open source?
Oppure c'è una funzione di crypt (3) gnu/gcc equivalente (3) disponibile per Apple Mac OSX da qualche parte negli strumenti di sviluppo di Mac OSX? (Sono molto nuovo su Mac OSX). Sto usando il compilatore clang, parte del materiale Xcode scaricato da Apple, corrente per Yosemite 10.10.5, e suppongo di non essere il primo a incontrare questa anomalia. Grazie per qualsiasi informazione.
Ah. solo una piccola modifica: La roba Apple MacOSX sta usando DES algo, da qui il risultato di 13 caratteri, quando ispeziona l'hash. Gnu/gcc usa MD5 algo, da cui l'hash risultante da 34 caratteri. Questo è spiegato qui: http://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/crypt.html#crypt La mia domanda raffinata quindi; c'è una funzione equivalente a crypt (3) per Mac OSX che usa MD5 (o SHA512) invece di DES?
(*** seconda modifica Nota:.?. Questo è sempre interessante DES è povero, ma MD5 può essere violata in Kali Linux, utilizzando "hashcat" raccomandazione è di andare a SHA512 apparentemente dettagli sulla prova accademica/verificare re MD5 cracking sono qui: https://uwnthesis.wordpress.com/2013/08/07/kali-how-to-crack-passwords-using-hashcat/ Ancora, la mia domanda rimane.È la funzione MD5 crypt (3) per Mac OSX da qualche parte? Thx.)
(Pls scusa il mio grado di ignoranza del protocollo Mac OS X LLVM/gcc basato crypt() fuction è bunked junk, hardwired a solo usa DES, un hash irrinunciabile provato, peggio di MD5. (Chiamalo con la stringa salt di $ 6 $, e otterrai un hash DES di 13 caratteri. Incredibile!) Ho scoperto numerosi metodi per creare correttamente gli hash delle password (ad esempio MD5 e SHA512) su Linux piattaforme (perl, python, ecc.) In genere usano la lib di "crypt" (la stessa che si usa usando l'opzione "-lcrypt" in gcc su Linux), o "passlib" per python. Ma il mio MacBook, appena aggiornato su Yosemite 10.10.5, non ha nemmeno "passlib"! (Il mio vecchio box Fedora esegue Python 2.5.1, l'attuale scatola CentOS esegue Python 2.6.6 Il piccolo Macbook cattivo indica Python 2.7.10, usando il comando "python --version". Ho trovato questo eccellente post sul sito "ServerFault" : https://serverfault.com/questions/330069/how-to-create-an-sha-512-hashed-password-for-shadow?newreg=df160746fbcd47878d600cbe76ec8b7f
Il primo pitone e gli script Perl lavorano su Linux, dal momento che stanno usando glibc crypt(), sto indovinando, ma nessun "passlib.hash" sembra esistere da nessuna parte, Linux o Mac OS X.
Come diavolo posso creare un hash di password decente su questo MacBook? Sono un Mac OS X noob, e dal momento che ho confermato che Apple sta usando hash password SHA512 nei suoi file .plist, sono sicuro che questa fuctionality ha di esistere da qualche parte su questo strano (ma delizioso) pezzo di hardware alieno.Nel caso in cui uno è curioso, è possibile inserire questo per vedere il vostro "ShadowHashData" su Yosemite, dalla linea di cmd nel terminale: (mi dispiace, ha dimenticato di riferimento per questo, ho trovato la ricerca ultima notte, veramente utile)
sudo defaults read /var/db/dslocal/nodes/Default/users/<yourusername>.plist ShadowHashData | tr -dc 0-9a-f | xxd -r -p | plutil -convert xml1 - -o -
Quindi sembra che Darwin/Yosemite stia usando la crittografia ok. Ho letto alcuni documenti Apple su cose di criptaggio comune, ma ci sono poche informazioni su come modificare il tuo gcc per puntare effettivamente alla libreria che contiene questa roba critica. Quando deciderò come fare, pubblicherò la risposta qui.
È possibile utilizzare direttamente il codice [glibc crypt] (https://sourceware.org/git/?p=glibc.git;a=tree;f=crypt;hb=HEAD) - è necessario fornire qualsiasi codice modificato sotto la LGPL, ma è tutto gratis. – Useless
md5sum dovrebbe essere lo stesso su entrambi OSX e Linux – stark
OSX è ancora disponibile con OpenSSL (anche se deprecato)? In tal caso, 'openssl passwd -1' genera un hash crypt compatibile con md5. – indiv