Questi comandi gpg sono identici?

1

Ho trovato gpg -c < unencrypted_file > encrypted_file questo comando da link questa pagina, ma nel manuale gpg dice gpg --output test.gpg --symmetric test.out qualcosa di simile. Non ho trovato nulla sul primo uno è un alias nella pagina di manuale, quindi voglio vedere c'è una differenza e testato in questo modo:

crea prima un file di 500 Mb

dd if=/dev/urandom of=./tmpfile bs=1000000 count=500

time gpg -c <tmpfile> file1 (19 secs)

time gpg --output file2 --symmetric tmpfile (21 secs)

time gpg --output file3 --symmetric tmpfile (21 secs)

time gpg -c <tmpfile> file4 (20 secs)

il secondo comando mi sembra un po 'più lento, è dovuto alla coincidenza o questi comandi sono diversi?

modifica: la versione di gpg è 1.4.20

    
posta rugowimola 17.11.2017 - 01:31
fonte

2 risposte

2

Sì, questi comandi sono effettivamente gli stessi:

gpg -c < file > file.gpg
gpg --output file.gpg --symmetric file

Innanzitutto, -c è solo una scorciatoia per --symmetric :

 -c, --symmetric             encryption only with symmetric cipher

Nota inoltre che i caratteri < e > vengono utilizzati in Bash per I / O reindirizzamento , non fanno parte della sintassi delle opzioni di GPG.

Quello che sta succedendo qui è che GPG può prendere input sia da stdin sia da un file specificato come argomento. Invece di dare il nome file come argomento, < FILE lo alimenta semplicemente tramite stdin. Quando GPG nota che l'input è dato tramite stdin, stamperà l'output su stdout di default invece di creare un file (a meno che non si usi --output ). Quindi puoi semplicemente reindirizzare lo stdout con > FILE per scrivere i dati crittografati in un file di destinazione.

    
risposta data 17.11.2017 - 01:52
fonte
0

second command seems a bit slower to me, is this because of coincidence or are these commands different?

Potrebbero essere equivalenti nella funzionalità di alto livello , ma chiaramente non sono identici; i due comandi non corrispondono esattamente, quindi non sono identici.

Non è una coincidenza che siano equivalenti in funzionalità, in quanto la decisione di gpg di utilizzare stdin e stdout non può essere stata involontaria.

Tuttavia, ciò che è casuale è che uno è più lento dell'altro. Ci sono fattori in gioco come buffering dei file che possono variare nelle specifiche e nelle prestazioni tra le implementazioni della libreria standard C e tanto meno il terminale POSIX. In poche parole, uno potrebbe essere più lento sul tuo computer, ma più veloce o uguale velocità su un'altra configurazione hardware, utilizzando un compilatore o una libreria standard diversi.

Da un punto di vista della sicurezza (che è il significato di questo sito), dovresti usare quello che ritieni più comodo. Immagino che i progettisti dell'interfaccia utente abbiano aggiunto entrambe le interfacce per fornire un'alternativa per le configurazioni di shell che non supportano le pipe, e che da sole non sembra rappresentare un rischio significativo per la sicurezza.

    
risposta data 17.11.2017 - 02:47
fonte

Leggi altre domande sui tag