picha

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:

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:

(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:

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

Zoezi la Maswali

Nyuma Endelea


Umeionaje Makala hii.. ?

Nzuri            Mbaya            Save
Author: Rajabu image Tarehe: 2025-11-30 Topic: Python Main: ICT File: Download PDF Views 587

Share On:

Share follows: 54 | Unique share links followed: 2
Sponsored links
👉1 Sira ya Mtume Muhammad (s.a.w)    👉2 Bongolite - Game zone - Play free game    👉3 Kitau cha Fiqh    👉4 ai web app    👉5 web hosting    👉6 Tafasiri ya Riyadh Swalihina   

Post zinazofanana:

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...
PYTHON somo la 12: assignment operator, logical operator, identity oeprator na membership operator

Katika somo hili utakwenda kujfunza operator nyingine kama assignment operator logical, identity operator na membership operator.

Soma Zaidi...
Python somo la 47: Jinsi ya kupokea na kuchakata fomu

Katika somo hili utakwend akujifunza jinsi ya kupokea na kuchakata fomu

Soma Zaidi...
Python somo la 48: Jinsi ya Kutumia JavaScript kwenye Fomu za Django

Katika somo hili tutakwend akujifunza kuhusi Jinsi ya Kutumia JavaScript kwenye Fomu za Django

Soma Zaidi...
Python somo la 43: Kutuma Data kutoka View kwenda Template katika Django

Katika somo hili uatajifunza jinsi gani unaweza kutumia view kma logic kuuma data kwenye template

Soma Zaidi...
PYTHON - somo la 1: Jinsi ya ku install python

Katika somo hili utajifunza kuhusu maana ya python na kazi zake. pia jinsi ya kuandaa kifaa chako kwa ajili ya somo.

Soma Zaidi...
PYTHON - somo la 9: indexing katika strinfg

Katika somo hili tutakwenda kujifunza kuhusu string indexing. Kama tulivyojifunza kuhusu namba katika somo lililopita, basi hapa tutakwenda kucheza na string.

Soma Zaidi...
Python somo la 52: Kutengeneza table na kufanya Migrations Katika Django

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...
Python somo la 49: Jinsi ya ku host project ya Django

Katika somo hili utakwenda kujifunza jinsi ya ku host website ya Django. Hapa tutakwenda kutuma plaform ya pythonanywhere.com.

Soma Zaidi...
Python somo la 51: Jinsi ya kutengeneza Model ya menu

Katika somo hili utakwend akujifunza ktengeneza model kwa ajili ya database table ya menu yetu.

Soma Zaidi...