Meriv çawa di Python de Pirtûkxaneya Kîrpotografiyê bi îfre û Decrypt dike

Di vê tutoriyê de hûn ê fêr bibin ka meriv çawa şîfre û deşîfre dike, mînak. rêzek nivîsê ku li Python pirtûkxaneya şîfrekirinê bikar tîne.

Ryîfrekirin pêvajoyek şîfrekirina agahiyê ye bi rengek ku tenê aliyên rayedar pê bigihîjin. Ew dihêle ku em bi ewlehî daneyên ku em naxwazin tenê kes bibîne an bigihîje wan biparêze.

Girêdayî:


Di vê mînakê de, em ê şîfrekirina symetrîkî bikar bînin, ku tê wateya heman mifteya ku me daneyên şîfrekirinê bikar dianî, ji bo deşîfrekirinê jî bikêr tê.

Pirtûkxaneya şîfrekirinê ya ku em li vir bikar tînin li ser algorîtmaya AES-ê hatiye avakirin.




Li Python Daneyê ryîfre bikin

Ya yekem, em hewce ne ku pirtûkxaneya kriptografiyê saz bikin:

pip3 install cryptography

Ji pirtûkxaneya şîfrekirinê, pêdivî ye ku em Fernet û dest bi hilberîna miftekê bikin - ev mifte ji bo şîfrekirin / deşîfrekirina simetrîk pêdivî ye.

Mifteyê çêbikin

Ji bo hilberandina miftekê, em ji generate_key() | dibêjin awa:

from cryptography.fernet import Fernet def generate_key():
'''
Generates a key and save it into a file
'''
key = Fernet.generate_key()
with open('secret.key', 'wb') as key_file:
key_file.write(key)

Em tenê hewce ne ku carek rêbaza jorîn biafirînin da ku mifteyek çêbikin.


Not:Hûn hewce ne ku vê mifteyê li cîhekî ewledar bihêlin. Heke hûn mifte winda bikin, hûn ê nekarin daneyên ku bi vê mifteyê hatine şîfre kirin deşîfre bikin.

Mifteyê barkirin

Gava ku me mifteyek çêkir, ji bo ku em daneyê şîfre bikin, pêdivî ye ku em mifteyê di rêbaza xwe de barkirin.

def load_key():
'''
Loads the key named `secret.key` from the current directory.
'''
return open('secret.key', 'rb').read()

Peyamek Encîfre kirin

Naha, em amade ne ku peyamek şîfre bikin. Ev pêvajoyek sê gav e:

  • 1 - şîfreyê şîfre dikin
  • 2 - destpêkirina pola Fernet
  • 3 - peyama kodkirî bigihînin encrypt() awa

peyamê şîfre bikin:

message = 'message I want to encrypt'.encode()

destpêkirina çîna Fernet:


f = Fernet(key)

peyamê şîfre bikin:

encrypted_message = f.encrypt(message)

Mînaka Koda Tevde

Li jêr mînakek xebata tam a şîfrekirina peyamek li python heye:

from cryptography.fernet import Fernet def generate_key():
'''
Generates a key and save it into a file
'''
key = Fernet.generate_key()
with open('secret.key', 'wb') as key_file:
key_file.write(key) def load_key():
'''
Load the previously generated key
'''
return open('secret.key', 'rb').read() def encrypt_message(message):
'''
Encrypts a message
'''
key = load_key()
encoded_message = message.encode()
f = Fernet(key)
encrypted_message = f.encrypt(encoded_message)
print(encrypted_message) if __name__ == '__main__':
encrypt_message('encrypt this message')

Karûabr:

b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4='

Li Python Daneyê Deşîfre bike

Ji bo deşîfrekirina peyamê, em tenê bang li decrypt(). Dikin rêbaza ji Fernet pirtûkxane. Bînin bîra xwe, divê em kilîtê jî barkirin, ji ber ku kilît ji bo deşîfrekirina peyamê hewce ye.


from cryptography.fernet import Fernet def load_key():
'''
Load the previously generated key
'''
return open('secret.key', 'rb').read() def decrypt_message(encrypted_message):
'''
Decrypts an encrypted message
'''
key = load_key()
f = Fernet(key)
decrypted_message = f.decrypt(encrypted_message)
print(decrypted_message.decode()) if __name__ == '__main__':
decrypt_message(b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4=')

Karûabr:

encrypt this message