Define bilan ishlash,
![Reja:
Kirish
Asosiy qism :
1. Define bilan ishlash,
2. Interfeys ishlash uchun dasturlar (figma, xd va k.k)
3. Fayl tizimlari(NTFS, FAT32, exFAT va h.k.)
4. Tarmoq protokollari
5. MD5, MD6, CRC, SHA1, SHA2 HESHLASH USLUBLARI
6. O'z Hesh funksiyamizni yaratish.
Xulosa
Foydalanilgan adabiyotlar](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_1.png)
![Kirish
Tizim dasturchiligi dasturchilik va dasturchilik boshqaruvining fanlararo
sohasi bo'lib, u murakkab tizimlarni hayot davrlari davomida loyihalash,
integratsiyalash va boshqarishga qaratilgan . Asosiysi, tizim dasturchiligi ushbu
bilimlarni tartibga solish uchun tizimli fikrlash tamoyillaridan foydalanadi. Bunday
sa'y-harakatlarning individual natijasi, ya'ni ishlab chiqilgan tizim foydali
funktsiyani birgalikda bajarish uchun sinergiyada ishlaydigan tarkibiy qismlarning
kombinatsiyasi sifatida belgilanishi mumkin. Muvaffaqiyatli tizimni loyihalash,
ishlab chiqish, amalga oshirish va yakuniy bekor qilish uchun zarur bo'lgan
dasturchilik talablari , ishonchlilik, logistika , turli guruhlarni muvofiqlashtirish,
sinov va baholash, texnik xizmat ko'rsatish va boshqa ko'plab fanlar kabi masalalar
yirik yoki murakkab loyihalar bilan ishlashda qiyinlashadi. Tizim dasturchiligi
bunday loyihalarda ish jarayonlari, optimallashtirish usullari va risklarni
boshqarish vositalari bilan shug'ullanadi. U sanoat dasturchiligi , ishlab chiqarish
tizimlari dasturchiligi , texnologik tizim dasturchiligi , mashinasozlik kabi texnik
va insoniy yo'naltirilgan fanlarni bir-biriga moslashtiradi .ishlab chiqarish
dasturchiligi , ishlab chiqarish dasturchiligi , nazorat dasturchiligi , dasturiy
ta'minot dasturchiligi , elektrotexnika , kibernetika , aerokosmik dasturchilik ,
tashkiliy tadqiqotlar , qurilish dasturchiligi va loyihalarni boshqarish . Tizim
dasturchiligi loyiha yoki tizimning barcha mumkin bo'lgan jihatlari ko'rib
chiqilishini va bir butunga birlashtirilishini ta'minlaydi. Tizim dasturchilik jarayoni
ishlab chiqarish jarayoniga o'xshamaydigan kashfiyot jarayonidir. Ishlab chiqarish
jarayoni minimal xarajat va vaqt bilan yuqori sifatli mahsulotlarga erishish uchun
takrorlanadigan faoliyatga qaratilgan. Tizim dasturchiligi jarayoni hal qilinishi
kerak bo'lgan haqiqiy muammolarni aniqlash va yuzaga kelishi mumkin bo'lgan
eng mumkin bo'lgan yoki eng yuqori ta'sir ko'rsatadigan nosozliklarni aniqlashdan
boshlanishi kerak - tizim dasturchiligi ushbu muammolarga yechim topishni o'z
ichiga oladi.
2](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_2.png)
![1. Define bilan ishlash.
C++ dilida, #define komandasi boshqa nomlarni belgilangan konstantlar,
masalan, pi, yoki max_value, qo'shish uchun ishlatiladi. Misol uchun, #define pi
3.14 yoki #define max_value 100 kabi. Bu, xohlagan joyda boshqa kodning o'ziga
xos joyda konstantlarni ishlatishga imkon beradi. Bu komanda kompilyatorga
so'zni boshqa so'zga o'zgartirishni buyuradi va kompilyator kodni o'zgartirish bilan
o'zgaruvchan bo'ladi. Bu, kodni o'qish va tuzishni osonlashtiradi va xatoliklarini
kamaytiradi. Bu komanda yaxshi ishlatilganda, kodni o'zgartirish va qayta
kompilyatsiyalash uchun kam vaqt sarflanadi va kodning performansini oshiradi.
#include <iostream>
#define multiply(a, b) (a * b)
int main() {
int x = 5, y = 7;
int result = multiply(x, y);
std::cout << x << " * " << y << " = " << result << std::endl;
return 0;
}
//ikki sonni kopaytirish kodi
#define komandasi bilan ikki sonni ko'paytirish kodida 'multiply' quyidagicha
ishlatilgan (a * b) va bu quyidagicha ishlatilgan (x * y) va natijani chiqarish
(result) va natijani chiqarish (result). #define komandasi kodni o'qish va tuzishni
osonlashtiradi va xatoliklarini kamaytiradi va yaxshi ishlatilganda kodni
o'zgartirish va qayta kompilyatsiyalash uchun kam vaqt sarflanadi va kodning
performansini oshiradi.
#define komandasi bilan tuzilgan konstantlar va funksiyalar bir necha
avzaliklarga ega bo'ladi:
3](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_3.png)
![#define komandasi bilan tuzilgan konstantlar va funksiyalar kompilyatorning
ishga tushirish davrida tuziladi va shuning uchun kompilyatorning ishga tushirish
davrida qo'shilgan xatoliklar ko'rilmasa bo'ladi.
#define komandasi bilan tuzilgan konstantlar va funksiyalar kompilyatorning
ishga tushirish davrida tuzilgan bo'lib, kodning ishga tushirish davrida yangi
xatoliklar yuzaga kelmasa bo'ladi.
#define komandasi bilan tuzilgan konstantlar va funksiyalar kompilyatorning
ishga tushirish davrida tuzilgan bo'lib, kodning ishga tushirish davrida yangi
xatoliklar yuzaga kelmasa bo'ladi va bu kodni o'qish va tuzishni osonlashtiradi va
xatoliklarini kamaytiradi.
#define komandasi bilan tuzilgan konstantlar va funksiyalar kompilyatorning
ishga tushirish davrida tuzilgan bo'lib, kodning ishga tushirish davrida yangi
xatoliklar yuzaga kelmasa bo'ladi va bu kodni o'qish va tuzishni osonlashtiradi va
xatoliklarini kamaytiradi va yaxshi ishlatilganda kodni o'zgartirish va qayta
kompilyatsiyalash uchun kam vaqt sarflanadi va kodning performansini oshiradi.
#include <iostream>
#define TEST_EQUAL(a, b) \
if ((a) == (b)) { \
std::cout << #a << " is equal to " << #b << std::endl; \
} else { \
std::cout << #a << " is not equal to " << #b << std::endl; \
}
int main() {
int x = 5, y = 7;
TEST_EQUAL(x, y);
return 0;
}
//test tuzish kodi
#define komandasi bilan test tuzish kodida TEST_EQUAL quyidagicha
ishlatilgan (a == b) va natijani chiqarish (cout) va natijani chiqarish (cout). #define
komandasi kodni o'qish va tuzishni osonlashtiradi va xatoliklarini kamaytiradi va
yaxshi ishlatilganda kodni o'zgartirish va qayta kompilyatsiyalash uchun kam vaqt
sarflanadi va kodning performansini oshiradi.
4](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_4.png)
![2. Interfeys ishlash uchun dasturlar (figma, xd va k.k)
Interfeys bilan ishlovchi dasturlar, kompyuter foydalanuvchilari va kompyuter
tizimlarini boshqarish uchun ishlatiladigan dasturlardir. Interfeys bilan ishlovchi
dasturlar, kompyuter foydalanuvchilari va kompyuter tizimlarini boshqarishga
yordam beradigan grafik interfeys (GUI) va komandalar interfeysi (CLI) ni
ta'minlaydi.
Grafik interfeys (GUI) bilan ishlovchi dasturlar:
Windows Explorer, Mac Finder va Linux Nautilus - Fayl tizimini ko'rib
chiqish va boshqarish uchun ishlatiladigan dastur
Microsoft Office, LibreOffice va Google Docs - Matn, kalendar, tablitsa va
boshqa dokumentlar bilan ishlash uchun ishlatiladigan dastur
Adobe Photoshop, GIMP va Inkscape - Rassomlik bilan ishlash uchun
ishlatiladigan dastur.
Komandalar interfeysi (CLI) bilan ishlovchi dasturlar:
Command Prompt va Terminal - Windows va Linux/Mac kompyuterlarda
komandalar yuborish va kompyuter tizimini boshqarish uchun ishlatiladigan dastur
Git - Fayl tizimini boshqarish va versiyalashtirish uchun ishlatiladigan dastur
SSH - Xar doimiy kompyuter tizimini boshqarish uchun ishlatiladigan dastur
Interfeys bilan ishlovchi dasturlar, foydalanuvchilar uchun kompyuter tizimini
boshqarish va fayllarni saqlash va yuklashga yordam beradigan komfortli va oson
interfeysni ta'mllaydi.
Grafik interfeys (GUI) bilan ishlovchi dasturlar, kompyuter foydalanuvchilari
uchun kompyuter tizimini boshqarishga yordam beradigan grafik interfeysni
ta'minlaydi. GUI bilan ishlovchi dasturlar, foydalanuvchilarga kompyuter tizimini
boshqarishda qulaylik va osonlikni ta'minlaydi. GUI bilan ishlovchi dasturlar
quyidagilardan iborat bo'ladi:
Fayl tizimini ko'rib chiqish va boshqarish dasturlari: Windows Explorer, Mac
Finder va Linux Nautilus gibi dasturlar fayl tizimini ko'rib chiqish va boshqarishga
yordam beradigan interfeysni ta'minlaydi.
5](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_5.png)
![Dokumentlar bilan ishlash dasturlari: Microsoft Office, LibreOffice va
Google Docs gibi dasturlar matn, kalendar, tablitsa va boshqa dokumentlar bilan
ishlashga yordam beradigan interfeysni ta'minlaydi.
Rassomlik bilan ishlash dasturlari: Adobe Photoshop, GIMP va Inkscape gibi
dasturlar rassomlik bilan ishlashga yordam beradigan interfeysni ta'minlaydi.
Multimedia dasturlari: Windows Media Player, VLC va iTunes gibi dasturlar
audio va video fayllarni chop etish va ko'rishga yordam beradi.
Komandalar interfeysi (CLI) bilan ishlovchi dasturlar, kompyuter
foydalanuvchilari va kompyuter tizimlarini boshqarishga yordam beradigan
komandalar interfeysini ta'minlaydi. CLI bilan ishlovchi dasturlar,
foydalanuvchilarga kompyuter tizimini boshqarishda qulaylik va osonlikni
ta'minlaydi. CLI bilan ishlovchi dasturlar quyidagilardan iborat bo'ladi:
Komandalar yuborish va kompyuter tizimini boshqarish dasturlari: Command
Prompt va Terminal gibi dasturlar Windows va Linux/Mac kompyuterlarida
komandalar yuborish va kompyuter tizimini boshqarishga yordam beradigan
interfeysni ta'minlaydi.
Fayl tizimini boshqarish va versiyalashtirish dasturlari: Git gibi dasturlar fayl
tizimini boshqarish va versiyalashtirishga yordam beradigan interfeysni
ta'minlaydi.
Xar doimiy kompyuter tizimini boshqarish dasturlari: SSH gibi dasturlar xar
doimiy kompyuter tizimini boshqarishga yordam beradigan interfeysni ta'minlaydi.
Scripting va automation dasturlari: Bash, PowerShell va Python gibi dasturlar
kompyuter tizimini avtomatlashtirish va scriptingga yordam beradigan interfeysni
ta'minlaydi.
3. Fayl tizimlari(NTFS, FAT32, exFAT va h.k.)
NTFS (New Technology File System) - Bu tizim, Windows kompyuterlar
uchun ishlatiladigan tizimdir. Ushbu tizim, fayllarning saqlanadigan joylarini
belgilash, kompyuterga qo'shilgan disklarning kapasitetini boshqarish, fayllarni
ko'rib chiqish, yozish va o'chirishni ta'minlaydi. NTFS, fayllarning saqlanadigan
joylarini belgilashda dinamik bir tizim hisoblanadi, shu sababli diskda
6](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_6.png)
![saqlanadigan fayllarning hajmi katta bo'lganda ham, uni boshqarishga imkon
beradi. Ayniqsa, NTFS fayl sistemasi Windowsda fayllarning hajmi, kiritilgan
vaqti, o'zgartirilgan vaqti va boshqa fayl xarakteristikalarini saqlashga imkon
beradi.
FAT (File Allocation Table) - Bu tizim, kompyuterlarning oldindan
yozuvlarida ishlatilgan tizim. Ushbu tizim, fayllarning saqlanadigan joylarini
belgilash uchun ishlatiladi va fayllarni ko'rib chiqish, yozish va o'chirishni
ta'minlaydi.
NTFS (New Technology File System) - Bu tizim, Windows kompyuterlar
uchun ishlatiladigan tizimdir. Ushbu tizim, fayllarning saqlanadigan joylarini
belgilash, kompyuterga qo'shilgan disklarning kapasitetini boshqarish, fayllarni
ko'rib chiqish, yozish va o'chirishni ta'minlaydi. ext (Extended File System) - Bu
tizim, Linux kompyuterlar uchun ishlatiladigan tizimdir. Ushbu tizim, fayllarning
saqlanadigan joylarini belgilash, kompyuterga qo'shilgan disklarning kapasitetini
boshqarish, fayllarni ko'rib chiqish, yozish va o'chirishni ta'minlaydi.
HFS+ (Hierarchical File System Plus) - Bu tizim, Mac kompyuterlar uchun
ishlatiladigan tizimdir. Ushbu tizim, fayllarning saqlanadigan joylarini belgilash,
kompyuterga qo'shilgan disklarning kapasitetini boshqarish, fayllarni ko'rib
chiqish, yozish va o'chirishni ta'minlaydi.
BFS (Btrfs File System) - Bu tizim, Linux kompyuterlar uchun ishlatiladigan
tizimdir.
Fayl tizimlari asosan kompyuter hard disklarida, flash disqlarda va sd
kartlarda ishlatiladi. Fayl tizimlari fayllarni saqlamoqda va ularni kataloglar va
papkalar tizimida tashkil etmoqda, boshqa fayllarni birlashtirish va ularni qaysi
katalogda, papkada saqlamoqda. Fayl tizimlarining boshqa vazifalari:
Fayllarni saqlash va o'chirish,
Fayllarni yozish, o'zgartirish va ko'rib chiqish,
Fayllarni kataloglar va papkalar tizimida tashkil etish,
Fayllarni birlashtirish va ularni qaysi katalogda, papkada saqlamoqda,
Fayllarning saqlanadigan joylarini belgilash
7](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_7.png)
![Fayllarning saqlanadigan joylarini boshqarish, disklarning kapasitetini
boshqarish va boshqa fayl tizimini boshqarish bo'limlarini ta'minlash.
Asosiy fayl tizimlarining eng ko'p ishlatiladiganlar Windowsda NTFS,
Linuxda ext4 va Macda HFS+ tizimlaridir.
Fayl tizimlaridan foydalanadiganlar:
Barcha kompyuter ishchilari, masalan, ofis ishlab chiqarish, internet
foydalanish, multimedia, 3D grafikalar va boshqa kompyuter ishlarini bajarish
uchun foydalanadiganlar.
Serverlar va saytlar, masalan, web-serverlar va boshqa serverlar, internet
saytlarini boshqarish va saqlash uchun foydalanadiganlar.
Uzatuvchi qurilmalar, masalan, flash disqlar, sd kartlar va boshqa uzatuvchi
qurilmalar, fayllarni saqlash va yuklash uchun foydalanadiganlar.
Backup va kompyuter tizimlarini saqlash uchun foydalanadiganlar
Cloud qilish va fayllarni internet orqali saqlash uchun foydalanadiganlar
4. Tarmoq protokollari
Tarmoq pratakollar, kompyuterlarning bir-biriga va internetga ulanish va
ma'lumotlar o'zaro almashtirish uchun ishlatiladigan standartlar va protokollar
hisoblanadi. Tarmoq pratakollar quyidagilardan iborat bo'ladi:
TCP/IP (Transmission Control Protocol/Internet Protocol) - Bu tarmoq
pratakollarining asosiy tarmoq pratakollaridir. Ushbu pratakollar, internet va
kompyuter tarmoqlari uchun ma'lumotlar o'zaro almashtirishni ta'minlaydi.
HTTP (Hypertext Transfer Protocol) - Bu pratakollar, internetda veb-
sahifalarni o'qish va yuklash uchun ishlatiladi.
HTTPS (Hypertext Transfer Protocol Secure) - Bu pratakollar, veb-
sahifalarning ma'lumotlarini himoyalash uchun ishlatiladi.
FTP (File Transfer Protocol) - Bu pratakollar, fayllarni internet orqali yuklash
va o'chirish uchun ishlatiladi.
SMTP (Simple Mail Transfer Protocol) - Bu pratakollar, elektron pochta
xabarlarini internet orqali yuborish uchun ishlatiladi.
8](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_8.png)
![DNS (Domain Name System) - Bu pratakollar, internetdagi veb-sahifalarning
IP manzillarini nomlar bilan aloqalashtirish uchun ishlatiladi.
DHCP (Dynamic Host Configuration Protocol) - Bu pratakollar, kompyuterlar
va tarmoqlar uchun IP manzillarni avtomatik tarzda tayinlash uchun ishlatiladi.
TCP/IP (Transmission Control Protocol/Internet Protocol) tarmoq
pratakollarining asosiy tarmoq pratakollaridir. Ushbu pratakollar, internet va
kompyuter tarmoqlari uchun ma'lumotlar o'zaro almashtirishni ta'minlaydi.
TCP (Transmission Control Protocol) - Bu pratakollar, ma'lumotlarni internet
orqali yuborishda qo'llaniladi va ma'lumotlar yuborilishida tuzatish yoki
zaxiralangan bo'lishi mumkin bo'lganda, ma'lumotlarni qayta yuborishni
ta'minlaydi.
IP (Internet Protocol) - Bu pratakollar, ma'lumotlarni internet orqali
yuborishda qo'llaniladi va ma'lumotlarning manzili va boshqa xarakteristikalarini
belgilashni ta'minlaydi.
TCP/IP tarmoq pratakollarini ishlatilgan kompyuterlar va tarmoqlar, bir-biriga
ma'lumotlar o'zaro almashtirish uchun internet protokollar standartlariga amal
qilishgan, deb hisoblanadi. IP manzil va port nummerlarini ishlatib, ma'lumotlarni
manzilga yuborish va manzilga yuborilgan ma'lumotlarni qabul qilishni
ta'minlaydi.
TCP/IP tarmoq pratakollarining ishlatilishi, internetdagi kompyuterlar va
tarmoqlar o'rtasida ma'lumotlar o'zaro almashtirishni ta'minlaydi va internetda
ma'lumotlar o'zaro almashtirishni qulay va oson etkazishga imkon beradi.
TCP/IP (Transmission Control Protocol/Internet Protocol) tarmoq
pratakollarining yaratilish tarixi, 1960-yillarda boshlangan va 1990-yillarda
yangilangan.
1960-yillarda, US Department of Defense (DoD) Advanced Research Projects
Agency Network (ARPANET) proyekti boshlandi. Bu proyekt, kompyuter
tarmoqlarini bir-biriga ulashga yordam beradigan tarmoq pratakollarini yaratishga
qaratilgan edi. Bu proyektda, ARPANET kompyuterlarini bir-biriga ulash uchun
ishlatiladigan tarmoq pratakollarini yaratishga harakat qilindi.
9](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_9.png)
![1970-yillarda, ARPANET proyekti kompyuter tarmoqlarini bir-biriga ulashga
yordam beradigan TCP/IP tarmoq pratakollarini yaratishga muvaffaq bo'ldi.
TCP/IP tarmoq pratakollarini ishlatish, internetdagi kompyuterlar va tarmoqlar
o'rtasida ma'lumotlar o'zaro almashtirishni ta'minlab boshladi.
1980-yillarda, TCP/IP tarmoq pratakollarini ishlatish, internetga manbalar
qo'shilishi va internetning chegaralanishi bilan birga keng tarqaldi. 1990-yillarda,
internetga manbalar qo'shilishi va chegaralanishi sababli, TCP/IP tarmoq
pratakollarining yangilanishi lozim bo'ldi.
TCP/IP (Transmission Control Protocol/Internet Protocol) va boshqa tarmoq
pratakollarining farqlari quyidagicha:
TCP/IP (Transmission Control Protocol/Internet Protocol) - Bu tarmoq
pratakollarining asosiy tarmoq pratakollaridir. Ushbu pratakollar, internet va
kompyuter tarmoqlari uchun ma'lumotlar o'zaro almashtirishni ta'minlaydi.
OSI (Open Systems Interconnection) - Bu tarmoq pratakollarining asosiy
tarmoq pratakollaridir. Ushbu pratakollar, kompyuter tarmoqlari va internet uchun
ma'lumotlar o'zaro almashtirishni ta'minlaydi. OSI pratakollarining asosiy farqi,
TCP/IP pratakollaridan farqli o'laroq, OSI pratakollarining layering sistemasiga
asoslanganligi va layering sistemasini ishlatib ma'lumotlar o'zaro almashtirishni
ta'minlaydi.
SNA (Systems Network Architecture) - Bu tarmoq pratakollarining IBM
kompaniyasi tarmoqlari uchun ishlatiladigan tarmoq pratakollaridir. SNA
pratakollarining asosiy farqi, TCP/IP va OSI pratakollaridan farqli o'laroq, SNA
pratakollarining IBM kompaniyasi tarmoqlari uchun ishlatiladiganligidir.
NetBIOS (Network Basic Input/Output System) - Bu tarmoq pratakollarining
Windows tarmoqlari uchun ishlatiladigan tarmoq pratakollaridir.
5. MD5, MD6, CRC, SHA1, SHA2 HESHLASH USLUBLARI
Heshlash usullari, ma'lumotlarni himoyalash uchun ishlatiladigan usullardir.
Heshlash usullari quyidagilardan iborat bo'ladi:
Symmetric Key Cryptography - Symmetric key cryptography ishlatilganda,
heshlash va chiqarish uchun bitta unikal kalit yordamida ma'lumotlar
10](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_10.png)
![himoyalanadi. Bu usul, AES (Advanced Encryption Standard) va DES (Data
Encryption Standard) gibi usullarda ishlatiladi.
Asymmetric Key Cryptography - Asymmetric key cryptography ishlatilganda,
ma'lumotlar himoyalanib chiqarish uchun ikkita unikal kalit yordamida amalga
oshiriladi. Bu usul, RSA (Rivest-Shamir-Adleman) va Elliptic Curve Cryptography
(ECC) gibi usullarda ishlatiladi.
Hashing - Hashing usuli ma'lumotlarni himoyalashda ishlatiladi va
ma'lumotlarning asliy holatini tiklashga yordam beradi. Bu usul, MD5 (Message
Digest 5) va SHA (Secure Hash Algorithm) gibi usullarda ishlatiladi.
Salting - Salting usuli ma'lumotlarni himoyalashda ishlatiladi va ma'lumotlar
himoyalangan holda salting ni qo'shilgan holda saqlanadi
MD5 (Message Digest 5) bir heshlash algoritmi hisoblanadi. Bu algoritm, 128
bitlik bir hesh qiymatini yaratishga qodir. MD5 algoritmi ma'lumotlarni heshlash
uchun ishlatiladi va ma'lumotlarning asliy holatini tiklashga yordam beradi. MD5
algoritmi, fayllar, parollar, veb-manzillar va boshqa ma'lumotlar heshlanishi uchun
ishlatiladi.
MD5 algoritmi, ma'lumotlarni heshlashda asosiy o'zgaruvchilarni ishlatadi va
ma'lumotlarni bir marta heshlab, hesh qiymatini chiqaradi. Hesh qiymat,
ma'lumotlarning asliy holatini tiklashga yordam beradi va ma'lumotlarni
himoyalash uchun ishlatiladi.
MD5 algoritmi, o'z navbatida o'zgaruvchilar bilan ishlatilganda, hesh
qiymatlarini yaratishda kamchiliklar mavjud bo'lib, ma'lumotlarni himoyalashda
noto'g'ri hesh qiymatlar yaratishi mumkin. Bu sababli, MD5 algoritmi heshlashda
ishlatilmasa kerak va boshqa algoritmlar ishlatilishi kerak bo'lib qolgan.
MD6 (Message Digest 6) bu MD5 ga nisbatan takomillashtirish sifatida ishlab
chiqilgan xeshlash algoritmidir. U MD5 algoritmida topilgan kamchiliklarni
bartaraf etish uchun ishlab chiqilgan. MD6 algoritmi MD5 algoritmining
ixtirochisi Ronald Rivest va uning Massachusets texnologiya institutida (MIT)
jamoasi tomonidan ishlab chiqilgan.MD6 algoritmi MD5 (128 bit) ga qaraganda
kattaroq xesh qiymatidan (256 bit) foydalanadi va shuningdek, xavfsizlikni
11](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_11.png)
![yaxshilash, ishlash samaradorligini oshirish va uzoqroq kirish xabarlarini qo'llab-
quvvatlash kabi bir qator yangi xususiyatlarni o'z ichiga oladi. Bundan tashqari,
MD6 kalitli xesh funktsiyasidan foydalanadi, bu xesh qiymatining xavfsizligini
oshirish uchun maxfiy kalitdan foydalanishga imkon beradi.
SHA-1 (Secure Hash Algoritm 1) kriptografik xesh funksiyasi bo‘lib, u kirish
xabaridan 160 bitli xesh qiymatini yaratish uchun ishlatiladi. U Milliy Xavfsizlik
Agentligi (NSA) tomonidan ishlab chiqilgan va Xavfsiz Hash Algoritmlari (SHA)
xesh funksiyalari oilasidan biridir. SHA-1 MD5 ga o'xshaydi, chunki u
ma'lumotlarning yaxlitligini tekshirish va asl xabardagi har qanday buzish yoki
o'zgarishlarni aniqlash uchun ishlatiladi.
SHA-1 ko'plab xavfsizlik dasturlari va protokollarida, jumladan SSL va
TLSda keng qo'llaniladi, ular Internet aloqalarini himoya qilish, shuningdek,
raqamli imzolar va fayllarning yaxlitligini tekshirish uchun ishlatiladi.
Biroq, MD5 kabi, uning zaif tomonlari borligi aniqlandi va endi xavfsiz
algoritm hisoblanmaydi. SHA-1 da amalga oshirilishi mumkin bo'lgan ma'lum
to'qnashuv hujumlari mavjud bo'lib, bu hujumchilarga bir xil xeshni ishlab
chiqaradigan ikki xil fayl yaratishga imkon beradi. Shuning uchun SHA-256 yoki
SHA-3 kabi yangiroq va xavfsiz xesh funksiyalaridan foydalanish tavsiya etiladi.
SHA-2 (Secure Hash Algorithm 2) kriptografik xesh-funksiyalar oilasi bo lib,ʻ
turli chiqish uzunliklariga ega bo lgan bir nechta turli xil algoritmlarni o z ichiga
ʻ ʻ
oladi:
SHA-224: 224 bitli xesh qiymatini ishlab chiqaradi
SHA-256: 256 bitli xesh qiymatini ishlab chiqaradi
SHA-384: 384 bitli xesh qiymatini ishlab chiqaradi
SHA-512: 512 bitli xesh qiymatini ishlab chiqaradi
SHA-2 Milliy xavfsizlik agentligi (NSA) tomonidan SHA-1 algoritmiga
nisbatan takomillashtirish sifatida ishlab chiqilgan bo'lib, uning xavfsizlik nuqtai
nazaridan zaif tomonlari borligi aniqlangan. SHA-1 dan farqli o'laroq, SHA-2
yanada xavfsizroq algoritm hisoblanadi va ko'plab xavfsizlik mutaxassislari
tomonidan tavsiya etiladi.
12](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_12.png)
![SHA-2 turli xil xavfsizlik dasturlari va protokollarida, jumladan raqamli
imzolar, SSL va TLS va fayllarning yaxlitligini tekshirishda keng qo'llaniladi.
Ko'pgina sertifikat idoralari va dasturiy ta'minot kompaniyalari SHA-1 dan
foydalanishni to'xtatdilar va raqamli sertifikatlar va dasturiy ta'minotni imzolash
uchun SHA-2 ga o'tdilar.
SHA-256 va SHA-512 SHA-2 oilasida eng ko'p qo'llaniladigan algoritmlar
bo'lib, ular juda xavfsiz deb hisoblanadi va ular yangi dizaynlar uchun tavsiya
etiladi.
CRC (Cyclic Redundancy Check) - bu ma'lumotlarni uzatish yoki saqlashdagi
xatolarni aniqlash uchun ishlatiladigan xesh funktsiyasining bir turi. SHA-2 va
MD5 kabi kriptografik xesh-funksiyalardan farqli o'laroq, ular har qanday kirish
uchun yagona va qat'iy o'lchamli chiqishni ta'minlash uchun mo'ljallangan, CRC
funktsiyasining chiqishi qat'iy o'lchamli bit qatoridir (odatda bir nechta bitlar 8
ning ko'paytmasi, masalan, 16, 32 yoki 64 bit), bu kirish ma'lumotlaridagi xatolarni
aniqlash uchun ishlatiladi.CRC ko'p nomli bo'linish deb ataladigan oddiy
matematik operatsiyaga asoslanadi, u "bo'linuvchi" sifatida belgilangan, oldindan
belgilangan "ko'pnom" qiymatidan foydalanadi va kiritilgan ma'lumotlarni ajratadi,
bu bo'linishning qolgan qismi funktsiyaning chiqishi sifatida ishlatiladi, bu qoldiq
"checkssum" deb ham ataladi. Keyin ma'lumotlarni qabul qiluvchi qabul qilingan
ma'lumotlar bo'yicha bir xil hisob-kitoblarni amalga oshirishi va xatolarni aniqlash
uchun natijani uzatilgan nazorat summasi bilan solishtirishi mumkin.
O'z Hesh funksiyamizni yaratish.
Siz ushbu funksiyadan istalgan turdagi ma lumotlarni xeshlash uchunʼ
foydalanishingiz mumkin, shunchaki xeshlanmoqchi bo lgan ma lumotlarni
ʻ ʼ
funksiyaga satr sifatida o tkazing va u xeshning o n oltilik ko rinishini qaytaradi.
ʻ ʻ ʻ
Shuni ta'kidlash kerakki, BLAKE2 nisbatan yangi xesh-funksiya bo'lib, u juda
tez va xavfsiz xesh-funksiya hisoblanadi, u IETF tomonidan ham
standartlashtirilgan va zamonaviy tizimlarda yaxshi tanlov hisoblanadi.
Ushbu heshlash Python dasturlash tilida BLAKE2
HESHLASH MUXITIDA QILINDI
13](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_13.png)
![import hashlib
def blake2b_hash(data):
# Create a new BLAKE2b hash object
h = hashlib.blake2b()
# Update the hash object with the input data
h.update(data.encode())
# Get the hexadecimal representation of the hash
hex_hash = h.hexdigest()
return hex_hash
# Test the function
data = "example data to hash"
print("BLAKE2b Hash:", blake2b_hash(data)).
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
#include <cstring>
#include <blake2.h>
std::string blake2b_hash(const std::string& data) {
std::stringstream ss;
std::vector<unsigned char> hash(BLAKE2B_OUTBYTES);
blake2b(hash.data(), data.c_str(), NULL, hash.size(), data.size(), 0);
for (unsigned char i : hash) {
ss << std::hex << (int)i; }return ss.str();}
int main() {
std::string data = "example data to hash";
14](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_14.png)
![std::string hash = blake2b_hash(data);
std::cout << "BLAKE2b Hash: " << hash << std::endl;
return 0;}
import java.security.MessageDigest;
public class HashExample {
public static String sha256(String data) {
try {
MessageDigest digest = MessageDigest.getInstance("SHA-
256");
byte[] hash = digest.digest(data.getBytes("UTF-8"));
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexString(0xff & hash[i]);
if(hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
} catch(Exception ex){
throw new RuntimeException(ex);
}
}
public static void main(String[] args) {
String data = "example data to hash";
String hash = sha256(data);
System.out.println("SHA-256 Hash: " + hash);
}
}
15](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_15.png)
![Xulosa
Garchi ko'plab mualliflar ajralib tursa ham (mening fikrimcha noto'g'ri)
superkompyuter serverlari Va hatto meynfreymlar, men sizni superkompyuter
qildim degan ta'rifga ko'ra, serverlar superkompyuterlar singari mukammal tarzda
qamrab olinishi mumkin edi, chunki ular oddiy kompyuterlardan ancha ustun
bo'lgan kompyuterlardan boshqa narsa emas, faqat ular biron bir turdagi xizmatni
taqdim etishga bag'ishlangan. tarmoq ... Bir-biridan farqlanishi kerak bo'lgan
yagona narsa shundaki, mashina nimaga mo'ljallanganiga qarab, biz boshqalar yoki
boshqalarnikidan ustunroq bo'lgan qobiliyatlarga ega bo'lamiz. Dasturlashni
Umumiy Dasturlash teoriyasidan o’rganasiz. Bu kursni o’rganayotganingizda
kompyuter halaqit beradi. Dastulash – o’ylash degani. Kompyuter oldida esa
o’ylash qiyinroq. Odam negadir daftar va ruchkadan foydalanganida yaxshiroq
fikrlaydi. Olimlarning aytishicha, ruchkada yozayotganimizda kichik motorika
(ruscha maqola| ingilizcha maqola) ishlar ekan va odam yozayotgan narsasini
yaxshiroq eslab qolar ekan. Shuning uchun ham, hattoki kompyuteringiz bo’lsada,
umumiy dasturlash teoriyasining kerakli joylarini aynan daftarda konspekt qilishni
maslahat beraman. Vazifalardagi kodlarni ham daftarda yozib, miyada bajaramiz.
Ushbu teoriya sizni dasturchidek o’ylashga majbur qiladi va yozilgan kodlarni
hech qanaqa kompyuterdagi kompilyator bajara olmaydi. Bu esa dasturlashni
o’rganish uchun kompyuter kerak emasligining yana bir isboti. Siz dasturlashni
o’rgandingiz va endi kompyuter olish niyatingiz bor. Mablag’ingiz kam bo’lsa –
xavotir olmang. Barcha tildagi dasturlar: PHP, Java, JavaScript, Python, C, C#, C+
+ va hokazo, barchasini oddiy bloknot dasturida ham yozish imkoningiz bor.
Shuning uchun ham eng oddiy, kuchsiz kompyuter ham yetarli bo’ladi. Lekin,
professional dasturlarni bloknotda yozish juda qiyin. Ko’plab xatolarni ko’rmay
qolasiz. Xatolarni qidirishda qiynalasiz. Dastur yozish uchun mo’ljallangan
dasturlar esa, kodingizni ko’p joylarini o’zi yozib, qayerda hato bo’lishi
mumkinligini ko’rsatib ham beradi. Ushbu maqolada uchta shunaqa dasturlani
ko’rganmiz. Ushbu dasturlani kuchsiz kompyuterlarda ishlatish qiyin, ular juda
katta operativ xotira talab qilishadi. Undan tashqari chome brauzerdan foydalamiz.
16](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_16.png)
![U ham juda ko’p operativ xotira talab qiladi. Demak komfort ishlar uchun kuchli
kompyuter kerak ekan. Lekin “kuchli” tushunchasi hamma uchun har-xil. Bozorga
borib kuchli kompyuter so’rasangiz, sizga o’yin o’ynash uchun moslashgan
kompyuterni ko’rsatishadi. Ushbu turdagi kompyuterlarning video kartasi kuchli
bo’ladi. Bizning esa kuchli o’yinlar o’ynash niyatimiz yo’q. Demak bizga kuchli
video karta kerak emas. Video karta kompyuterning eng qimmat qismlaridan.
Foydalanilgan adabiyotlar :
1. Bruner D. S. Psixologiya poznaniya. - M., 1977
2. Gamezo M. V., Domashenko I. A. Atlas po psixologii. - M.,1986
3. Gippenreyter Yu. B. Vvedenie v obshuyu psixologiyu. Kurs leksiy. - M.,
1996
4. Granovskaya R. M. Elementi prakticheskoy psixologii. SPb, 1997
5. Karimova V. M. Auditoriyada bahs-munozarali darslarni tashkil etishning
psixologik texnikasi. - T., 2000
6. Karimova V. M. Psixologiya. - T., 2002
7. Karimova V. M., Akramova F. Psixologiya. Ma’ruzalar matni - T., 2000
8. Nemov R. S. Psixologiya M. 1990
9. Nemov R. S. Psixologiya. - Kn.1. Obshie osnovi psixologii. - M., 1994
Internet resurslar :
10. https://uz.atomiyme.com/fayl-tizimi-bu-nima-ntfs-fayl-tizimi-fat-raw-udf/
11. https://uzbekdevs.uz/maqolalar/fayl-tizimi-fayl-tizimi-turlari
12. https://uz.wikial.top/wiki/File_system
13. https://uz.denemetr.com/docs/294/index-20614-1.htmlpage=7
14. http://www.myshared.ru/slide/1414933/
17](/data/documents/822607d1-436d-4801-9a9a-c294e555ec8c/page_17.png)
Reja: Kirish Asosiy qism : 1. Define bilan ishlash, 2. Interfeys ishlash uchun dasturlar (figma, xd va k.k) 3. Fayl tizimlari(NTFS, FAT32, exFAT va h.k.) 4. Tarmoq protokollari 5. MD5, MD6, CRC, SHA1, SHA2 HESHLASH USLUBLARI 6. O'z Hesh funksiyamizni yaratish. Xulosa Foydalanilgan adabiyotlar
Kirish Tizim dasturchiligi dasturchilik va dasturchilik boshqaruvining fanlararo sohasi bo'lib, u murakkab tizimlarni hayot davrlari davomida loyihalash, integratsiyalash va boshqarishga qaratilgan . Asosiysi, tizim dasturchiligi ushbu bilimlarni tartibga solish uchun tizimli fikrlash tamoyillaridan foydalanadi. Bunday sa'y-harakatlarning individual natijasi, ya'ni ishlab chiqilgan tizim foydali funktsiyani birgalikda bajarish uchun sinergiyada ishlaydigan tarkibiy qismlarning kombinatsiyasi sifatida belgilanishi mumkin. Muvaffaqiyatli tizimni loyihalash, ishlab chiqish, amalga oshirish va yakuniy bekor qilish uchun zarur bo'lgan dasturchilik talablari , ishonchlilik, logistika , turli guruhlarni muvofiqlashtirish, sinov va baholash, texnik xizmat ko'rsatish va boshqa ko'plab fanlar kabi masalalar yirik yoki murakkab loyihalar bilan ishlashda qiyinlashadi. Tizim dasturchiligi bunday loyihalarda ish jarayonlari, optimallashtirish usullari va risklarni boshqarish vositalari bilan shug'ullanadi. U sanoat dasturchiligi , ishlab chiqarish tizimlari dasturchiligi , texnologik tizim dasturchiligi , mashinasozlik kabi texnik va insoniy yo'naltirilgan fanlarni bir-biriga moslashtiradi .ishlab chiqarish dasturchiligi , ishlab chiqarish dasturchiligi , nazorat dasturchiligi , dasturiy ta'minot dasturchiligi , elektrotexnika , kibernetika , aerokosmik dasturchilik , tashkiliy tadqiqotlar , qurilish dasturchiligi va loyihalarni boshqarish . Tizim dasturchiligi loyiha yoki tizimning barcha mumkin bo'lgan jihatlari ko'rib chiqilishini va bir butunga birlashtirilishini ta'minlaydi. Tizim dasturchilik jarayoni ishlab chiqarish jarayoniga o'xshamaydigan kashfiyot jarayonidir. Ishlab chiqarish jarayoni minimal xarajat va vaqt bilan yuqori sifatli mahsulotlarga erishish uchun takrorlanadigan faoliyatga qaratilgan. Tizim dasturchiligi jarayoni hal qilinishi kerak bo'lgan haqiqiy muammolarni aniqlash va yuzaga kelishi mumkin bo'lgan eng mumkin bo'lgan yoki eng yuqori ta'sir ko'rsatadigan nosozliklarni aniqlashdan boshlanishi kerak - tizim dasturchiligi ushbu muammolarga yechim topishni o'z ichiga oladi. 2
1. Define bilan ishlash. C++ dilida, #define komandasi boshqa nomlarni belgilangan konstantlar, masalan, pi, yoki max_value, qo'shish uchun ishlatiladi. Misol uchun, #define pi 3.14 yoki #define max_value 100 kabi. Bu, xohlagan joyda boshqa kodning o'ziga xos joyda konstantlarni ishlatishga imkon beradi. Bu komanda kompilyatorga so'zni boshqa so'zga o'zgartirishni buyuradi va kompilyator kodni o'zgartirish bilan o'zgaruvchan bo'ladi. Bu, kodni o'qish va tuzishni osonlashtiradi va xatoliklarini kamaytiradi. Bu komanda yaxshi ishlatilganda, kodni o'zgartirish va qayta kompilyatsiyalash uchun kam vaqt sarflanadi va kodning performansini oshiradi. #include <iostream> #define multiply(a, b) (a * b) int main() { int x = 5, y = 7; int result = multiply(x, y); std::cout << x << " * " << y << " = " << result << std::endl; return 0; } //ikki sonni kopaytirish kodi #define komandasi bilan ikki sonni ko'paytirish kodida 'multiply' quyidagicha ishlatilgan (a * b) va bu quyidagicha ishlatilgan (x * y) va natijani chiqarish (result) va natijani chiqarish (result). #define komandasi kodni o'qish va tuzishni osonlashtiradi va xatoliklarini kamaytiradi va yaxshi ishlatilganda kodni o'zgartirish va qayta kompilyatsiyalash uchun kam vaqt sarflanadi va kodning performansini oshiradi. #define komandasi bilan tuzilgan konstantlar va funksiyalar bir necha avzaliklarga ega bo'ladi: 3
#define komandasi bilan tuzilgan konstantlar va funksiyalar kompilyatorning ishga tushirish davrida tuziladi va shuning uchun kompilyatorning ishga tushirish davrida qo'shilgan xatoliklar ko'rilmasa bo'ladi. #define komandasi bilan tuzilgan konstantlar va funksiyalar kompilyatorning ishga tushirish davrida tuzilgan bo'lib, kodning ishga tushirish davrida yangi xatoliklar yuzaga kelmasa bo'ladi. #define komandasi bilan tuzilgan konstantlar va funksiyalar kompilyatorning ishga tushirish davrida tuzilgan bo'lib, kodning ishga tushirish davrida yangi xatoliklar yuzaga kelmasa bo'ladi va bu kodni o'qish va tuzishni osonlashtiradi va xatoliklarini kamaytiradi. #define komandasi bilan tuzilgan konstantlar va funksiyalar kompilyatorning ishga tushirish davrida tuzilgan bo'lib, kodning ishga tushirish davrida yangi xatoliklar yuzaga kelmasa bo'ladi va bu kodni o'qish va tuzishni osonlashtiradi va xatoliklarini kamaytiradi va yaxshi ishlatilganda kodni o'zgartirish va qayta kompilyatsiyalash uchun kam vaqt sarflanadi va kodning performansini oshiradi. #include <iostream> #define TEST_EQUAL(a, b) \ if ((a) == (b)) { \ std::cout << #a << " is equal to " << #b << std::endl; \ } else { \ std::cout << #a << " is not equal to " << #b << std::endl; \ } int main() { int x = 5, y = 7; TEST_EQUAL(x, y); return 0; } //test tuzish kodi #define komandasi bilan test tuzish kodida TEST_EQUAL quyidagicha ishlatilgan (a == b) va natijani chiqarish (cout) va natijani chiqarish (cout). #define komandasi kodni o'qish va tuzishni osonlashtiradi va xatoliklarini kamaytiradi va yaxshi ishlatilganda kodni o'zgartirish va qayta kompilyatsiyalash uchun kam vaqt sarflanadi va kodning performansini oshiradi. 4
2. Interfeys ishlash uchun dasturlar (figma, xd va k.k) Interfeys bilan ishlovchi dasturlar, kompyuter foydalanuvchilari va kompyuter tizimlarini boshqarish uchun ishlatiladigan dasturlardir. Interfeys bilan ishlovchi dasturlar, kompyuter foydalanuvchilari va kompyuter tizimlarini boshqarishga yordam beradigan grafik interfeys (GUI) va komandalar interfeysi (CLI) ni ta'minlaydi. Grafik interfeys (GUI) bilan ishlovchi dasturlar: Windows Explorer, Mac Finder va Linux Nautilus - Fayl tizimini ko'rib chiqish va boshqarish uchun ishlatiladigan dastur Microsoft Office, LibreOffice va Google Docs - Matn, kalendar, tablitsa va boshqa dokumentlar bilan ishlash uchun ishlatiladigan dastur Adobe Photoshop, GIMP va Inkscape - Rassomlik bilan ishlash uchun ishlatiladigan dastur. Komandalar interfeysi (CLI) bilan ishlovchi dasturlar: Command Prompt va Terminal - Windows va Linux/Mac kompyuterlarda komandalar yuborish va kompyuter tizimini boshqarish uchun ishlatiladigan dastur Git - Fayl tizimini boshqarish va versiyalashtirish uchun ishlatiladigan dastur SSH - Xar doimiy kompyuter tizimini boshqarish uchun ishlatiladigan dastur Interfeys bilan ishlovchi dasturlar, foydalanuvchilar uchun kompyuter tizimini boshqarish va fayllarni saqlash va yuklashga yordam beradigan komfortli va oson interfeysni ta'mllaydi. Grafik interfeys (GUI) bilan ishlovchi dasturlar, kompyuter foydalanuvchilari uchun kompyuter tizimini boshqarishga yordam beradigan grafik interfeysni ta'minlaydi. GUI bilan ishlovchi dasturlar, foydalanuvchilarga kompyuter tizimini boshqarishda qulaylik va osonlikni ta'minlaydi. GUI bilan ishlovchi dasturlar quyidagilardan iborat bo'ladi: Fayl tizimini ko'rib chiqish va boshqarish dasturlari: Windows Explorer, Mac Finder va Linux Nautilus gibi dasturlar fayl tizimini ko'rib chiqish va boshqarishga yordam beradigan interfeysni ta'minlaydi. 5