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
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.
| 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 |
pip install cryptography
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)
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.
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.
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.
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='
settings.pyFERNET_KEY = b'd4q6iHZaYe1pME1TYuRaeCCEe4bO4AUgOTaTSj9Bzg8='
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....'
Umeionaje Makala hii.. ?
Katika somo hili utakwend akujifunza jinsi ya kucheza na data kuzibadili kwa namna mbali mbali kwenye template
Soma Zaidi...Katika somo hili tutajifunza jinsi ya kuunda dashboard rahisi ndani ya Django ambayo itaruhusu mtumiaji kuongeza, kusoma, kuhariri na kufuta taarifa za MenuItem bila kutumia Django built-in admin, bali kwa kutumia HTML templates na views tulizotengeneza sisi wenyewe.
Soma Zaidi...Katika somo hili utakwenda kujifunza syntaxy za python yaani sheria na kanuni za kuandika code za python
Soma Zaidi...Katika somo hili utakwend akujifunz anamna ya kuwez akupata taarifa zinazohusu faili
Soma Zaidi...Katika somo hili tutajifunza jinsi Django hutumia migrations kuunda na kubadilisha tables kwenye database kulingana na models tunazoandika. Tutapitia maana ya migration, hatua za kuitumia, umuhimu wake, misingi ya makemigrations na migrate, pamoja na mfano halisi kutoka kwenye project yetu ya pybongo (app: menu).
Soma Zaidi...Katika somo hili utakwenda kujifunza jinsi ya ku host website ya Django. Hapa tutakwenda kutuma plaform ya pythonanywhere.com.
Soma Zaidi...Katika somo hili tunakwenda kujifunza aina nyingine za data ambazo hutumika kwenye python.
Soma Zaidi...Katika somo hili utakwenda kujifunza zaidi kuhusu Jinsi ya Kuongeza Kurasa Nyingine Katika Django View
Soma Zaidi...Katika somo hili utakwend akujifunza ktengeneza model kwa ajili ya database table ya menu yetu.
Soma Zaidi...Katika somo hili tunakwenda kujifunza matumizi ya break na continue kwenye loop
Soma Zaidi...