Se vuoi solo evitare di guardare casualmente una password, potresti prendere in considerazione la codifica/decodifica della password da/verso base64. Non è affatto sicuro, ma la password non sarà leggibile casualmente da umani/robot.
import base64
# Encode password (must be bytes type)
encoded_pw = base64.b64encode(raw_pw)
# Decode password (must be bytes type)
decoded_pw = base64.b64decode(encoded_pw)
Ovviamente la tua migliore opzione è delegare questo a una terza parte. Se puoi autenticarti con qualunque cosa ti stia connettendo utilizzando qualche altra credenziale (ad esempio l'account utente con cui è in esecuzione il tuo processo), puoi lasciare i livelli di autorizzazione fino al livello del sistema operativo. In alternativa, se sufficientemente importante/possibile, potresti chiedere all'utente (memorizzando la chiave nel (probabilmente) wetware leggermente meno hackerabile)
Se lo fai devi memorizzare una password o una chiave, ti consiglio di memorizzarla separatamente dal tuo codice, in un file che hai letto e de-offuscato se necessario. Questo ha i vantaggi che:
-
Puoi impostare i permessi del file sul file il più stretto possibile (cioè leggibile solo dall'account con cui viene eseguito il tuo programma), a differenza del resto del tuo programma che può essere letto da più persone.
-
Non lo controllerai accidentalmente nel tuo sistema di controllo della versione!
-
Non c'è bisogno di essere limitati a caratteri stampabili (o usare l'escape imbarazzante) per una stringa python, quindi puoi usare un file di chiavi arbitrario se possibile, piuttosto che una password leggibile dall'uomo. Se non è inserito dall'uomo, non c'è motivo di avere tutti i punti deboli delle password.
Per offuscare, puoi utilizzare base64 come suggerito, o qualche schema casalingo come XORing o decrittografia con un'altra chiave memorizzata altrove, richiedendo che entrambe le posizioni vengano esaminate. Tieni presente che questo non protegge da nulla al di là dell'opportunistico shoulder surfing (se quello) - assicurati che ci sia un certo livello di reale anche la sicurezza (compresi quelli ovvi come l'accesso fisico alla macchina!)