Utilizzo di bytearray anziché di una stringa per memorizzare la password in memoria

0

L'uso di un tipo di dati bytearray per memorizzare una password (in memoria) presenta un vantaggio rispetto all'utilizzo di un tipo di dati stringa per una password in quanto un messaggio è modificabile e può essere sovrascritto con valori 0x00 quando la password non è più necessaria per l'elaborazione e fino la variabile password è garbage collection. Tuttavia, non è chiaro per me se la sovrascrittura dei valori 0x00 raggiungerà il risultato desiderato. Quando una password non è più necessaria, dovrebbe essere cancellata dalla memoria, prima di GC. Questo è possibile in Python 3.4 usando bytearray?

    
posta Dowwie 15.01.2015 - 00:02
fonte

2 risposte

2

Almeno usando CPython, sovrascrivere un bytearray è la via da seguire. Come molti sistemi, CPython non cancella la memoria prima della garbage collection, quindi è necessaria una cancellazione manuale. Inoltre, non esegue copie di dati se non specificamente richiesto.

Stai attento alle altre implementazioni Python, comunque. Spesso differiscono nelle specifiche di come viene gestita la memoria e possono, ad esempio, utilizzare un garbage collector di copia o compattazione. In tal caso, la cancellazione manuale della password potrebbe non essere sufficiente, poiché il garbage collector potrebbe aver spostato il riferimento all'oggetto, lasciando una copia dei contenuti dell'array nella vecchia posizione.

    
risposta data 15.01.2015 - 10:27
fonte
0

Cancellare il contenuto in una matrice mutevole è fattibile. Tuttavia, a seconda dell'utilizzo, la funzione downstream che consuma una password può prevedere solo una stringa, non un bytearray. In questo caso, sei bloccato con l'uso della stringa e non ci sarà un modo reale di cancellare la password nella stringa.

Vedi anche discussioni sulla cancellazione della password nella stringa Python in questo Q & A .

    
risposta data 22.01.2016 - 07:20
fonte

Leggi altre domande sui tag