Vorrei sapere l'algoritmo o tecnica utilizzata da questo comando (mvn --encrypt-master-password). Ogni volta che eseguo, produce un output diverso. Suppongo che ci voglia del tempo di sistema come parametro seme.Come funziona mvn --encrypt-master-password <password>?
8
A
risposta
8
meccanismo La crittografia non è l'esperto di codice di base di per sé. Si trova su una libreria denominata plexus-cipher
. È sempre sulla distribuzione di esperti. Il mio è lib/plexus-cipher-1.7.jar
3.0.5
la versione di Maven.
Il cifrario reale è AES/CBC/PKCS5Padding
. La chiave per la cifratura e IV per il concatenamento blocco derivano iterazione SHA-256
-zione sopra la password fornita (codificati come UTF-8) concatenato con un JVM-configurazione-specifico (solitamente SHA1PRNG
) a 64 bit salt casuale una o due volte.
grandi sorprese qui. Sembra essere sullo stesso formato che ogni altra anima usa al giorno d'oggi.
I dettagli scabrosi si possono trovare leggendo la sorgente sul GitHub project page
Così il sale a 64 bit casuali offre l'unicità di volta in volta, ma il sale ha bisogno di un seme così, è che l'ora di sistema o qualcos'altro? – SDS
Dipende dall'implementazione casuale del PRNG che trova per prima. Ad esempio, su linux, 'NativePRNG' si inizializza leggendo il suo seed da'/dev/random', che era la causa della performance kerfuffle. Non riesco a capire quali risorse di sistema utilizza il fallback 'SHA1PRNG'. –
Grazie per la spiegazione – SDS