basi di crittografia pitone w / hashlib SHA1
-
26-10-2019 - |
Domanda
sto lottando per comprendere appieno come funziona la crittografia e viene codificata, in particolare con il pitone. Sto solo cercando di ottenere le basi verso il basso e creare codice nella forma più semplice.
ho intenzione di essere il superamento di un userID tra due siti diversi, ma ovviamente ho bisogno di questo per essere crittografato con una chiave privata in modo Website2 sa che è venuto da Website1. Questo sembra essere il codice per me: http://docs.python.org/library/hashlib.html#module-hashlib , ma che non si sono molto buoni esempi (o forse sono nel posto sbagliato).
Il problema che sto avendo è completamente capire come per codificare e decodificare.
Quindi, consente di dire che la chiave privata condivisa che ogni sito web saprà è:
shared_private_key = "ABCDEF"
E voglio Website1 di passare al Website2 l'userID di:
userID = "123456"
Come direbbe Website1 cifrare il mio ID utente con la chiave privata in un modo che la cifratura può essere inviato tramite intestazioni HTTP, e quindi avere Website2 decifrare ed essere in grado di leggere l'userID utilizzando la chiave privata condivisa?
mi scuso per chiedere una domanda così semplice, ma sto riuscendo a capire come questo dovrebbe essere fatto. Grazie.
Soluzione
Il modulo hashlib
fornisce funzioni di hashing. Mentre v'è una certa relazione con la crittografia, una volta che si hash alcuni dati non si può tornare indietro per ottenere i dati originali dal risultato hash.
Invece di encripting i dati che è possibile adottare un approccio diverso:. La creazione di una firma unica usando un hash dei dati e qualche segreto
shared_private_key = "ABCDEF"
def create_signature(data):
return hashlib.sha1(repr(data) + "," + shared_private_key).hexdigest()
def verify_signature(data, signature):
return signature == create_signature(data)
Infine, si invia al Sito 2 i dati più la firma. In questo modo si può essere (per lo più) in modo che nessuna persona non autorizzata manomesso i dati.
Altri suggerimenti
Ciò che si vuole è una libreria di crittografia non uno che fornisce solo algoritmi di hash. Con la libreria hashlib
di Python:
import hashlib
m = hashlib.sha1()
m.update("The quick brown fox jumps over the lazy dog")
print(m.hexdigest())
Returns: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
Dato questo hash, è estremamente difficile impossibile (in generale) per ripristinare il messaggio originale. Ciò che si vuole è una libreria di crittografia, che la libreria standard di Python non ha. Ci sono un sacco di domande relative al pitone crittografia librerie in modo che possa essere utile.