Crittografia con Python

Crittografia con Python

La crittografia, la scienza delle cifre, è resa reale con l'aiuto della codifica. Non possiamo decidere che un linguaggio di programmazione sia migliore o peggiore di un altro. Tuttavia, la selezione di una biblioteca di crittografia appropriata fa la differenza.

Python fornisce alcune librerie e moduli molto sofisticati per la crittografia e la decrittografia dei dati. Alcuni di loro sono crittografici, hashlib, cripto semplice, ecc. L'articolo dimostra l'uso delle moderne pratiche crittografiche in Python con l'aiuto della biblioteca di crittografia illustrando come crittografare e decrittografare stringhe e file di testo.

Installazione della libreria di crittografia

La crittografia è una biblioteca di Python che fornisce vari modi crittografici agli utenti; Uno di questi è la crittografia e la decrittografia facili. Utilizzare il seguente comando per installare la libreria di crittografia.

ubuntu@ubuntu: ~ $ pip Installa Cryptography

Crittografia del testo

Importazione di Fernet

Dopo un'installazione riuscita, il modulo Fernet viene importato dalla libreria. La funzione si assume la responsabilità della crittografia e la decrittografia dei dati. Per questo, crea un file Python e importa il modulo Fernet dalla libreria di crittografia come segue:

dalla crittografia.Fernet Fernet Fernet

Chiave di generazione

Ora genera il tasto di autenticazione definendo una funzione o semplicemente usando un generatore di fernet in Python. Il felce.La funzione Generate_key () genererà una chiave per la crittografia e la decrittografia. Aggiungi la riga seguente al codice:

>> chiave = Fernet.generare_key ()

Ora la classe Fernet verrà istanziata utilizzando la chiave generata.

>> fernet = fernet (chiave)

Crittografia stringa di testo

La crittografia del testo è ora a poche righe di codice di distanza. Aggiungi le seguenti righe per ottenere il tuo testo crittografato.

>> messaggio = "Questo testo verrà crittografato"
>> cripted_message = fernet.crittografare (messaggio.codificare())
>> print ('String di testo originale:', messaggio)
>> stampa ('Messaggio dopo crittografia:' cripted_message)

L'esecuzione del codice Python sopra emette una stringa indecifrabile di caratteri alfanumerici, come mostrato di seguito. È la forma più semplice di crittografia delle stringhe di testo con l'aiuto della libreria di crittografia in Python. In primo luogo, codifica la stringa per crittografarla in seguito usando la ricetta di crittografia di crittografia.

La decrittografia della stringa di testo

Dopo la crittografia della stringa tramite metodo di crittografia del furetto, decrittono il testo nella sua forma originale. La decrittazione di successo garantisce che il destinatario possa decodificare e accedere alle informazioni senza problemi.

Pertanto, per una regolare decrittazione, i moduli Fernet rendono anche una facile funzione di decrittografia. L'aggiunta di queste due righe al tuo file Python decritticherà lo stesso messaggio alla sua forma iniziale.

decrypted_message = fernet.decrypt (cripted_message).decodificare()
print ('Stringa di testo decrittografata:', decrypted_message)

Le righe precedenti del codice utilizzano la stessa istanza di Fernet che utilizza la chiave salvata nella memoria del programma per la decrittazione. Il felce.La funzione decrypt () restituisce la stringa codificata dopo la decryption in quanto è stata codificata prima della crittografia. Ora la funzione di decode restituisce la stringa codificata nella sua forma originale.

Crittografia dei file

Proprio come la crittografia del testo, importa il modulo FerNet per la crittografia dei file e la generazione di chiavi. Importa il modulo Fernet dalla libreria di crittografia.

dalla crittografia.Fernet Fernet Fernet

Generazione chiave

Come mostrato sopra, utilizzare la funzione del generatore della chiave Fernet per generare la chiave. Anche se è un approccio migliore per testare la crittografia e la decrittografia dei testi brevi, non è praticamente utile, in quanto perde la chiave permanentemente dopo la risoluzione del programma. Quindi, si consiglia di archiviare la chiave in un file in modo sicuro in modo che possa essere letta e utilizzata quando necessario.

Abilita questo definendo una funzione del generatore di chiavi nel codice che scrive la chiave su un file. Può anche essere fatto memorizzando la chiave Fernet in un file di testo. Genera la chiave e memorizzala in un file per un uso futuro.

>> chiave = Fernet.generare_key ()
>> con Open ('KeyFile.Key ',' WB ') come KeyFile:
Keyfile.Scrivi (chiave)

Questo codice genererà una stringa alfanumerica casuale e la memorizzerà nel KeyFile.File chiave.

Crittografia

Utilizzare la seguente riga di codice per leggere la chiave già memorizzata per la crittografia dei file.

>> con Open ('KeyFile.Key ',' RB ') come KeyFile:
>> key = keyfile.Leggere()

Utilizzo della chiave per l'istanza Fernet:

>> fernet = fernet (chiave)

Apri e leggi il file da crittografare e crittografare i dati nel file utilizzando la crittografia Fernet:

>> con Open ('Elenco.CSV ',' RB ') come originale_file:
originale_data = originale_file.Leggere()
>> cripted_data = fernet.crittografico (originale_data)

Ora apri il file in modalità di scrittura e scrivi i dati crittografati:

>> con Open ('Elenco.CSV ',' WB ') come cripted_file:
cripted_file.Scrivi (cripted_data)

L'esecuzione del codice sopra sostituirà i dati dei file originali con una maggior parte delle stringhe alfanumeriche.

Decripting il file

Usa nuovamente il modulo Fernet per decrittografare il file con la stessa chiave. Il seguente codice legge per la prima volta i dati dal file crittografato e li ripristina nella sua forma originale con la funzione decrypt.

>> fernet = fernet (chiave)
>> con Open ('Elenco.csv ',' rb ') come cripted_file:
cripted_data = cripted_file.Leggere()
>> decrypted_data = fernet.decrypt (cripted_data)
>> con Open ('Elenco.CSV ',' WB ') come decrypted_file:
decrypted_file.Scrivi (decrypted_data)

Conclusione

La biblioteca di crittografia è una delle tante biblioteche e moduli che Python offre per una comunicazione e crittografia sicure. Il modulo Fernet della libreria fornisce un generatore di chiavi integrato e fornisce funzioni di crittografia e decrittografia per una stringa di dati e file di grandi dimensioni.