Python somo la 60: Hashing na Encryption kwenye Django
Katika somo hili tutajifunza: Tofauti kati ya hashing na encryption Jinsi ya kufunga packages muhimu Jinsi ya kufanya hashing kwa maneno ya kawaida (mfano “bongoclass”) Jinsi ya kufanya encryption na decrypt kutumia Fernet Jinsi Django inahash password kupitia User model Mazoezi ya vitendo
Utangulizi
Katika mifumo ya kisasa ya web, usalama wa data ni jambo la lazima. Django imeshawekewa mifumo thabiti ya kusimamia usalama wa password, na tunao uwezo wa kuongeza hashing na encryption ya data yoyote tunayotaka kulinda. Tutatumia shell ili ku run mifano.
Kabla ya kuanza, ni muhimu kujua kwamba:
-
Hashing ni “one way”—haiwezi kurejeshwa.
-
Encryption ni “two way”—unaweza kusimba na kufumbua (encrypt na decrypt).
Sasa tuingie kwenye maelezo ya kina.
1. Tofauti kati ya hashing na encryption
| Kigezo | Hashing | Encryption |
|---|---|---|
| Maana | Kubadilisha data kuwa mfuatano wa herufi zisizorejesheka | Kusimba data ili isomeke, lakini inaweza kufumbuliwa |
| Mwelekeo | One-way | Two-way |
| Matumizi | Kusalimisha password, tokens | Kulinda data nyeti kama namba za kadi, emails n.k. |
| Mfano | SHA256, bcrypt | AES, Fernet |
2. Kufunga packages zinazohitajika
(a) Install package ya cryptography (kwa ajili ya encryption)
pip install cryptography
3. Hashing katika Django`
Hashing ni kubadilisha maneno tusiyopenda yasomeke kuwa “hash code” isiyoweza kurudishwa katika hali yake ya awali.
Django inakuja na hashing nyingi tayari:
-
SHA256
-
SHA1
-
PBKDF2 (default ya Django)
-
BCrypt
-
Argon2 (salama zaidi)
(a) Mfano rahisi wa hashing kwa kutumia Python ndani ya Django shell
import hashlib
data = "bongoclass"
hash1 = hashlib.sha256(data.encode()).hexdigest()
hash2 = hashlib.sha1(data.encode()).hexdigest()
hash3 = hashlib.md5(data.encode()).hexdigest()
print("SHA256:", hash1)
print("SHA1:", hash2)
print("MD5:", hash3)
? Hii inafanya hashing—HAIWEZI KUREJESHWA KINYUME.
4. Hashing password katika Django (User Model)
Django haibebi password kama ulivyoitoa.
Badala yake, hutumia hashing yenye salt. Hii tutakuja kujifunza zaidi tutakapokuwa tunafanya project.
Mfano wa kuweka password:
from django.contrib.auth.models import User
user = User.objects.create(username="sky")
user.set_password("bongoclass123")
user.save()
? set_password() inafanya:
-
Kuongeza salt
-
Kutumia PBKDF2 (default)
-
Kutengeneza hash yenye usalama mkubwa
Hakuna developer anayeweza kuona password halisi.
5. Encryption na Decryption kutumia Fernet (cryptography)
Tofauti na hashing, encryption inaweza kufumbuliwa kurudisha data ya mwanzo. Nikukumbushe tu kuwa tunapofanya encryption maana yake tunaficha data kwa kuziweka kwenye string maalumu ili mtu asiweze kuona data halisi. Hivyo ili kuirudisha data hiyo katika hali ya kawaida tunatakiwa tufanye decryption. hivyo decryption ni kinyume cha encryption. Jambo la kuzingatia ni kutumia key moja.
Hatua ya 1: Tengeneza key
Key ni kama password za hiyo data yako. Bila ya kuwa na key zilizo sahihi huwezi kuifunguwa data iliyofanyiwa hashing. Key zinatakiwa ziwe 32, na njia bora ya kutengeneza key hizo ni kwa ku run command hiyo hapo chini.
from cryptography.fernet import Fernet
print(Fernet.generate_key())
Itatoa kitu kama:
b'd4q6iHZaYe1pME1TYuRaeCCEe4bO4AUgOTaTSj9Bzg8='
Hatua ya 2: Weka kwenye settings.py
FERNET_KEY = b'd4q6iHZaYe1pME1TYuRaeCCEe4bO4AUgOTaTSj9Bzg8='
Hatua ya 3: Tumia encryption (mfano kwa email mafunzo@bongoclass.com)
from cryptography.fernet import Fernet
from django.conf import settings
cipher = Fernet(settings.FERNET_KEY)
email = "mafunzo@bongoclass.com"
encrypted = cipher.encrypt(email.encode())
print(encrypted)
Output inaweza kuwa kitu kama:
b'gAAAAABnggk0zJ7FT....'
Jiunge nasi WhatsApp kupata update zetu
Umeionaje Makala hii.. ?
Share On:
👉1 Kitabu cha Afya 👉2 Dua za Mitume na Manabii 👉3 Sira ya Mtume Muhammad (s.a.w) 👉4 Kitau cha Fiqh 👉5 Simulizi za Hadithi Audio 👉6 ai web app
Post zinazofanana:
Python somo la 37: Jinsi ya ku install Django na kutengeneza project na app
Katika somo ili utajifunza hatuwa kwa hatuwa za ku install Django, kutengeneza project na kutengeneza app
Soma Zaidi...PYTHON - somo la 2: Sheria za uandishi wa pyhton yaani syntax za python
Katika somo hili utakwenda kujifunza syntaxy za python yaani sheria na kanuni za kuandika code za python
Soma Zaidi...Python somo la 61: Jinsi ya kutuma email kwenye django
Katika maeneo ya development, tunahitaji kutuma email mara nyingi kwa madhumuni ya: Kujaribu mfumo wa OTP Password reset System notifications Activation codes Lakini mara nyingi hatutaki emails ziondoke kwenda kwa watu halisi wakati bado tupo kwenye majaribio.
Soma Zaidi...Python somo la 40: Jinsi ya Kuunda Simple Navigation Menu Katika Django
Katika somo hili utajifunza Jinsi ya Kuunda Simple Navigation Menu Katika Django kwa kutumia template
Soma Zaidi...Python somo la 13: Kutumia condition statement - if, else, elif
Katika somo hili tutakwend akuziona aina za condition statement kwneye python na jinsi ya kuzitumia
Soma Zaidi...Python somo 57: Matumizi ya Python shell
Katika somo hili, tutajifunza: Maana ya Python shell na umuhimu wake. Tofauti kati ya shell na terminal ya kawaida. Matumizi ya shell, hususan kwenye Django. Amri muhimu zaidi za Python shell, zilizotokana na models na views zako za pybongo.
Soma Zaidi...