uy - Qayta tiklash
Oqim shifrlari. XOR ishlashi va oddiy fayl shifrlash XOR qanday ishlashiga misol

Shifrlashning asosiy tushunchalari

Shifrlash- ochiq axborotni yopiq axborotga aylantirish usuli va aksincha. U muhim ma'lumotlarni ishonchsiz manbalarda saqlash yoki ularni himoyalanmagan aloqa kanallari orqali uzatish uchun ishlatiladi. GOST 28147-89 ga binoan shifrlash shifrlash va shifrlash jarayoniga bo'linadi.

Shifr, kod- mumkin bo'lgan ochiq ma'lumotlar to'plamini mumkin bo'lgan shifrlangan ma'lumotlar to'plamiga va ularning teskari o'zgarishlariga moslashtiradigan kriptografik transformatsiya (shifrlash) algoritmlari to'plami.

Shifrlar shifrlash kaliti bilan shifrlash kaliti mos kelishiga qarab, nazariy jihatdan tushunarsiz va amaliy jihatdan tushunarsiz, kalitlarning tuzilishiga ko'ra simmetrik va assimetrik bo'linadi. Simmetrik shifrlar, o'z navbatida, blokli va oqimli shifrlarga bo'linadi.

Kriptografiya- ma'lumotlarning maxfiyligini (ma'lumotni begona shaxslar tomonidan o'qishning mumkin emasligi) va haqiqiyligini (mualliflikning yaxlitligi va haqiqiyligi, shuningdek, mualliflikni rad etishning mumkin emasligi) ta'minlash usullari haqidagi fan.

Dastlab kriptografiya axborotni shifrlash usullarini o'rgandi - maxfiy algoritm va/yoki kalit asosida oddiy (asl) matnni shifrlangan matnga (shifrlangan matn) teskari o'zgartirish. An'anaviy kriptografiya simmetrik kriptotizimlarning bir tarmog'ini tashkil qiladi, ularda shifrlash va shifrni ochish bir xil maxfiy kalit yordamida amalga oshiriladi.

Kriptografiya eng qadimgi fanlardan biri bo'lib, uning tarixi bir necha ming yilliklarga borib taqaladi.

Ochiq (manba) matn- kriptografiyadan foydalanmasdan uzatiladigan ma'lumotlar (matn bo'lishi shart emas).

Shifrlangan (yopiq) matn- belgilangan kalit bilan kriptotizimdan foydalangandan so'ng olingan ma'lumotlar.

Kriptosistema- ochiq matnni shifrlangan matnga qaytariladigan o'zgartirishlar oilasi.

Kalit- berilgan matnning o'ziga xos o'zgarishini tanlashni belgilaydigan shifrlash parametri. Zamonaviy shifrlarda shifrlash algoritmi ma'lum va shifrning kriptografik kuchi butunlay kalitning maxfiyligi bilan belgilanadi (Kerkhoffs printsipi).



Shifrlash- algoritm va kalit asosida ochiq matnni kriptografik o'zgartirishni normal qo'llash jarayoni, natijada shifrlangan matn.

Shifrni ochish- shifrlangan matnni ochiq matnga kriptografik o'zgartirishni normal qo'llash jarayoni.

Shifrni ochish (deshifrlash)- ma'lum shifrlangan kalitga asoslangan kriptografik kalitni bilmasdan ochiq matnni olish jarayoni. Shifrni hal qilish atamasi odatda shifrlangan matnni kriptotahlil qilish jarayoniga nisbatan qo'llaniladi (kriptotahlilning o'zi, umuman olganda, shifrlangan tizimni tahlil qilishni ham o'z ichiga olishi mumkin, bu shifrlangan ochiq xabarni emas).

Kriptanaliz- axborotning maxfiyligi va yaxlitligini buzishning matematik usullarini o'rganuvchi fan.

Kriptografik hujum- kriptoanalitikning hujumga uchragan xavfsiz axborot almashish tizimida og'ishlarni keltirib chiqarishga urinishi. Muvaffaqiyatli kriptografik hujum deyiladi sindirish yoki ochilish.

Kriptografik kuch- kriptografik algoritmning kriptoanalizga qarshi turish qobiliyati.


XOR shifrlash algoritmi

Ehtimol, eng oddiy va eng ibtidoiy shifrlash algoritmi XOR shifrlashdir. XOR shifrlash algoritmi ba'zi usullar bilan murakkablashishi mumkin, bu juda yaxshi natijalarga erishishi mumkin. Ammo uning asosiy amalga oshirilishida algoritm juda beqaror.

XOR shifrlash algoritmi eksklyuziv yoki ikkilik mantiqiy operatsiyadan foydalanishga asoslangan. Jadval ko'rinishida funktsiya quyidagicha ko'rinadi:

A B Axor B

Algoritmga kirish manba matni (umuman, har qanday baytlar to'plami, ya'ni ixtiyoriy fayl) va parol qatoridir.

Algoritmning g'oyasi shundan iboratki, bitli mantiqiy XOR operatsiyasi manba matnining har bir belgisiga va parol qatorining keyingi belgisiga qo'llaniladi. Natija faylga yoziladi.

XOR operatsiyasi simmetrikdir. Bu shuni anglatadiki, agar siz bitta faylni bir xil parol bilan 2 marta shifrlasangiz, u holda chiqish o'zgarishsiz ushbu faylning o'zi bo'ladi. Ushbu faktdan ma'lum bo'ladiki, xuddi shu funktsiya shifrlash va shifrni ochish uchun ishlatiladi, bu algoritmni amalga oshirishni sezilarli darajada osonlashtiradi. Bundan tashqari, agar shifrlash paytida bo'lgani kabi, parolni hal qilishda ham xuddi shunday parol ishlatilsa, chiqish asl fayl bo'ladi. Agar parollar boshqacha bo'lsa, chiqish noto'g'ri ma'lumotlarni o'z ichiga olgan fayl bo'ladi.

Keling, XOR shifrlash algoritmini batafsil ko'rib chiqaylik:

  1. Kirishda biz manba va natijada paydo bo'lgan fayllarga ko'rsatgichlar va parollar qatorini olamiz (bo'sh bo'lmasligi kerak).
  2. Biz manba fayldan keyingi belgini (bayt) o'qiymiz.
  3. XOR operatsiyasini o'qilgan baytga va keyingi parol belgisiga qo'llang.
  4. Amaliyot natijasi olingan faylga yoziladi.
  5. Agar manba faylning oxirigacha etib bormagan bo'lsa, 2-bosqichga o'ting.

Agar parol asl fayldan qisqaroq bo'lsa (va aksariyat hollarda bu shunday bo'ladi), u holda parol tsiklik ravishda ishlatiladi, ya'ni. Parolning oxirgi belgisidan keyin biz birinchisiga qaytamiz.

Jarayonni amalga oshirish uchun quyidagilar zarur:

protsedura XOR_CoDec (const SourceFile, DestFile, Password: string);

Quyidagilar parametr sifatida qabul qilinganda:

SourceFile - manba fayl nomi.

DestFile - natijada olingan faylning nomi.

XOR ikkilik operatsiyasi (eksklyuziv OR degan ma'noni anglatadi) Boole algebrasidan ikkilik operanddir (va, OR va boshqalar kabi). Ushbu operand ikki bitni taqqoslaydi va buning evaziga bir bit hosil qiladi. Agar taqqoslangan ikkita bit boshqacha bo'lsa, bu bit 1 ga, agar ular teng bo'lsa, 0 ga teng bo'ladi. Xor shifrlash odatda bir nechta simmetrik shifrlarda qo'llaniladi (ayniqsa AES). Simmetrik shifr oddiygina shifrdir, unda kalit shifrlash va shifrni ochish jarayoni uchun ishlatiladi. XOR operandi siz shifrlamoqchi bo'lgan matn va siz tanlagan kalit o'rtasidagi har bir bitga shunday qo'llaniladi. Misollar so'zlardan yaxshiroq, keling, "xor" so'zini olaylik. Biz uni "cle" kaliti bilan shifrlamoqchimiz. Avval biz kirish va kalitni ikkilik ko'rinishga aylantirishimiz kerak:

Keyin har bir bitni XOR operandi bilan solishtiramiz. Bu sizga beradi:

Xor: 01111000 01101111 01110010
telefon: 01100011 01101100 01100101
00011011 00000011 00010111

Agar biz dastlabki kirishga ("xor") qaytishni istasak, XORni chiqish va kalit o'rtasida qayta qo'llashimiz kerak bo'ladi. Shuni ta'kidlash mumkinki, XOR ko'paytirish kabi kommutativ funktsiyadir. Endi kalit kirishdan kichikroq bo'lsa, nima qilamiz? Aksariyat hollarda shunday bo'ladi. Agar kalit kiritish uzunligi bilan bir xil bo'lsa, bu qiziq bo'lmaydi, chunki siz kalitni kiritishni o'qimoqchi bo'lgan odamga ham etkazishingiz kerak bo'lar edi.Agar kalit va kirish uzunligi bir xil bo'lsa, u kalitni o'qimoqchi Kimdir shifrni buzishi mumkin emas. Shunday qilib, kalit kiritishdan kichikroq bo'lsa, siz kiritish oxiriga yetguncha uni qaytadan qo'llaysiz. Agar misol uchun "bonjour" so'zini "cle" kalitim bilan shifrlamoqchi bo'lsam. , men buni shunday qilardim:

Bonjour: 01100010 01101111 01101110 01101010 01101111 01110101 01110010
cleclec: 01100011 01101100 01100101 01100011 01101100 01100101 01100011

Siz shunchaki kalitni takrorlayotganimizni ko'rishingiz mumkin. Kalit qanchalik kichik bo'lsa, shifrni buzish shunchalik oson bo'ladi (aniq). XOR yorilishi ko'pincha chastota tahliliga asoslanadi. Lekin buning uchun men sizga bir oz tadqiqot qilishni taklif qilaman.

Oqim shifrlash bitlar yoki belgilar (masalan, 8, 16 yoki 32 bit) ustida operatsiyalarni bajaradi. Oqim shifrlash bir xil ochiq matn belgisini turli shifrlangan matn belgilariga aylantiradi, masalan, avval qancha va qaysi belgilar qayta ishlanganiga qarab.

Xor shifrlash

Ko'pgina oqim shifrlarida shifrlash quyidagicha amalga oshiriladi. Soxta tasodifiy sonlar generatori bitlar ketma-ketligini (gamma) hosil qiladi. Ushbu gamma bitli XOR operatsiyasi yordamida ochiq matnga qo'llaniladi. Natijada shifrlangan matn. Shifrni ochish uchun siz aynan bir xil protsedurani bajarishingiz kerak, faqat shifrlangan matnga aynan bir xil boshlang'ich holatga ega bir xil generator yordamida olingan gamma-ni qo'llang.

Keling, ushbu eng oddiy usulning g'oyasini ko'rib chiqaylik. Mantiqiy algebradan ma'lumki, "⊕" mantiqiy qo'shish moduli 2 (yoki mantiqiy eksklyuziv OR - XOR, eksklyuziv OR) operatsiyasi quyidagi semantikaga ega:

XOR uchun haqiqat jadvali:

x i⊕ y i

x = 10011 101

y= 01001 100

z= 11010 001

Ya'ni operatsiya z= xy asosan bit bo'yicha (bit bo'yicha - natija qo'shni bitlarga bog'liq emas). Agar mos keladigan bitlardan faqat bittasi 1 bo'lsa, natija 1 bo'ladi. Agar ikkalasi ham 0 bo'lsa yoki ikkalasi ham 1 bo'lsa, natija 0 bo'ladi. Agar qo'llash natijasiga diqqat bilan qarasangiz. XOR ikkita ikkilik raqamga, keyin ikkinchisidan foydalanib atamalardan birini tiklashimiz mumkinligini ko'rishingiz mumkin: x= zy yoki y= zx.

Bundan quyidagi xulosalar chiqarishimiz mumkin: raqamni bilish y va murojaat qilish XOR Kimga x, olamiz z. Keyin, biz yana foydalanamiz y dan olamiz z orqa raqam x. Shu tarzda biz raqamlar ketma-ketligini o'zgartirishimiz mumkin ( x) i ketma-ketlikda ( z) i. Endi biz raqamni nomlashimiz mumkin y kodlash (yoki shifrlash) kaliti. Agar biror kishi kalitni bilmasa, u raqamlarning asl ketma-ketligini tiklay olmaydi ( x) i. Lekin agar ( x) i matn harflarining bayt tasviri bo'lsa, tajribali foydalanuvchi shifrlangan matnni buzishi mumkin bo'ladi. Chunki har bir harf shifrlangan matnda bir xil kod bilan ifodalanadi z, keyin chastota lug'atidan foydalanib, tajovuzkor shifrlash kalitini hisoblashi mumkin bo'ladi y, agar uning ixtiyorida etarlicha uzun shifrlangan matn bo'lsa.

So'nggi mulohazalarni hisobga olgan holda, biz oddiy matnni to'g'ridan-to'g'ri kodlash mumkin emas degan xulosaga keldik. Birinchidan, bo'shliqni ifodalovchi raqam shifrlangan matndagi so'zlarni ajratib turadi. Tez-tez uchraydigan bir xil raqamni ajratib ko'rsatish orqali foydalanuvchi bu kodlangan bo'sh joy ekanligini taxmin qiladi. Ikkinchidan, qisqa, tez-tez uchraydigan predloglar va qo'shma gaplar ham kalitni aniqlashda yordam beradi. Shuning uchun, eng samarali usul - bu bir nechta harflarni qamrab oladigan uzun kalitdan foydalanish yoki undan ham yaxshiroq, uzunligi xabarning o'ziga teng. Shunday qilib, agar biz bir xil uzunlikdagi tasodifiy kalit yordamida juda uzun xabarni (kamida 5-10 jumla) kodlasak, bunday xabarni shifrlash juda qiyin. Agar, masalan, shifrlashdan oldin matn qandaydir arxivlovchi bilan siqilgan bo'lsa, yanada yuqori ishonchlilik natijalariga erishish mumkin. Bundan tashqari, agar xabar qisqa bo'lsa, siz xabarning boshi va oxiriga tasodifiy belgilar ketma-ketligini qo'shishingiz mumkin.

Shunday qilib, algoritmning mustahkamligi faqat generator tomonidan ishlab chiqarilgan gamma xususiyatlariga bog'liq. Agar gamma faqat nollardan iborat bo'lsa (degenerativ holat), u holda shifrlash paytida ma'lumotlar umuman o'zgarmaydi. Agar gamma qisqa muddatga ega bo'lsa (masalan, 32 bit), shifrlash 32 bitli doimiy bilan XOR operatsiyasiga qisqartiriladi. Agar gamma hech qanday naqshga bo'ysunmaydigan bitlarning tasodifiy to'plami bo'lsa, natijada mutlaq himoyani ta'minlovchi bir martalik shifrlash padining analogi bo'ladi. Albatta, gamma generatorida ishlatiladigan deterministik algoritm haqiqiy tasodifiy ketma-ketlikni keltirib chiqara olmaydi. Agar ketma-ketlikni takrorlash imkoni bo'lmasa, xabar shifrdan chiqarilmaydi.

Agar ikkita xabar bir xil gamma yordamida shifrlangan bo'lsa va xabarlardan biri (uzunroq) qandaydir tarzda ochiq matnni olishi mumkin bo'lsa, boshqa xabar uchun ochiq matnni olish oson bo'lar edi. XOR operatsiyasini birinchi xabarning ochiq matni va shifrlangan matniga qo'llash orqali biz gamma fragmentini olamiz. Va ikkinchi xabarning shifrlangan matniga gamma-ni qo'llash orqali biz uning ochiq matnini olamiz. Shuning uchun ikkita turli oqim yoki xabarlarni shifrlashda bir xil gammadan foydalanishga yo'l qo'yilmasligi kerak.

Agar gamma xabar mazmunidan mustaqil ravishda yaratilgan bo'lsa, unda bunday oqim algoritmi sinxron deb ataladi. Odatda, sinxron oqim shifrlarida shifrlash kaliti gamma generatorining dastlabki ichki holatini o'rnatish uchun ishlatiladi.

Ta'rifga ko'ra, ikkita bir bitli eksklyuziv OR operatsiyasi Jadvalda ko'rsatilgan amallarni bajaradi. 19.1.

19.1-jadval. Eksklyuziv OR(XOY)

Kirish 1

Kirish 2

Chiqish

Uni "mos kelmaslik operatsiyasi" deb ham atash mumkin - kirishlardagi qiymatlar mos kelmasa, chiqish mantiqiy hisoblanadi. Bu ta’rifdan bu amalning asosiy xossasini chiqarish oson: agar bir operandga ikki marta qo‘llanilsa, ikkinchi operandning qiymatidan qat’iy nazar, o‘zgarmas ekan, hech narsani o‘zgartirmaydi. Bu, xususan, kompyuter grafikasida keng qo'llaniladi: agar siz XOR operatsiyasi orqali fonga barcha birliklardan (sof oq) iborat niqobni qo'llasangiz, u holda bu joydagi tasvir rangga teskari bo'ladi; xuddi shu harakatni takrorlashda, hamma narsa o'zgarishsiz tiklanadi (shuning uchun, xususan, tanlov qilish qulay (10-bobga qarang).

Bu xususiyat deyarli barcha shifrlash algoritmlari uchun asos bo'lib, ular ba'zan juda murakkab bo'lishi mumkin, ammo biz bu masalani ko'rib chiqmaymiz, shunchaki ushbu usulni asl shaklida qo'llashga harakat qilamiz. Tekshirish uchun siz ushbu oddiy protseduradan foydalanishingiz mumkin. Aytaylik, biz matnli faylni shifrlamoqchimiz. Biz diplomatik sirlarni yashirmaganimiz sababli, bunday holatlarda odatiy kalit uzunligi 8 belgidan (64 bit) biz uchun etarli - bu oddiy shaxsiy kompyuterda shifrni shafqatsiz kuch bilan buzishni "parvozda" vazifaga aylantirish uchun etarli. hal qilib bo'lmaydigan. Masalan, kalit "yvre-vich" so'zi bo'ladi. Amalda, familiyangizdan bunday kalitlarni yaratish hech qanday sharoitda mumkin emas; siz har qanday lug'at so'zlarini, sanalarni, telefon raqamlarini ham ishlata olmaysiz; Vernam shuningdek, samarali shifrlash uchun kalit mutlaqo tasodifiy bo'lishi kerakligini ko'rsatdi; bu faqat shu erda amalga oshiriladi. misol sifatida ( Tasodifiy kalitni qanday o'rnatish haqida keyinroq gaplashamiz).

Keling, ProbaCrypt nomli yangi loyihani (Glaval9\l jildida) yaratamiz va faylni sinov uchun o'sha papkaga joylashtiramiz. Men A.Makarevichning repertuaridan (bir kun kelib dunyo egiladi) qo‘shig‘ining matnini akkordlar bilan oldim (xuddi shu matn formatida mashinavremeni.txt fayli), chunki bu matnni ancha murakkab formatlash aniqroq misol 3.

Shaklda Memo komponentini, OpenDialog dialog oynasini va ikkita Butt elektron pochta tugmalarini joylashtiramiz. Buttoni sarlavhasida biz Encrypt deb yozamiz, Buttoni sarlavhasida - Decrypt. Keling, quyidagi o'zgaruvchilarni e'lon qilaylik:

Shakl: TForml; fname,key:string; fi,fo:bayt fayli; i:integer; xb:bayt;

Shaklni yaratishda biz kalit va dialog oynasini ishga tushiramiz:

protsedurasi TForml.FormCreate(Sender: TObject); start kaliti:=’yvrevich";

OpenDialogl.InitialDir:=ExtractFiieDir(Application.ExeName); oxiri;

Tugmachani bosish ishlov beruvchisi Buttonl biz quyidagi ancha uzun kodni yozamiz:

protsedurasi TForml.ButtonlClick(Sender: TObject); /Encrypt/ OpenDialogl ni ishga tushiring. Fayl nomi:?= 11 ;(toza) OpenDialogl.Filter:=”; agar OpenDialogl.Execute keyin fname:=OpenDialogl.FileName boshqa chiqish; tayinlash fayli (fi, fname);(belgilangan manba faylI harakat qilib ko'ring

qayta o'rnatish (fi); (asl nusxasini ochdi) bundan mustasno

Chiqish; (Agar Yo'q ochadi - chiqish) oxiri;

assignfile(fo,ChangeFileExt(fname, 1 .sec’)); qayta yozish (fo);

o'qish (fi, xb); (birinchi baytni o'qing)

Forml.Caption:='ProbaCrypt: '+ExtractFileName(fname);

/Ism fayl - V sarlavha) Memol.Lines.Clear; Memol.Lines.Add('Kuting...');

Application.ProcessMessages; Memol.Lines.Clear; eof(fi) bo'lmasa ham boshlanadi

xb:=xb xor ord(key[i]);(biz shifrlaymiz)

Memol.Text:=Kemol.Text+chi(xb);(Memoga chiqarish)

yozish (fo, xb); (faylga yozish)

o'qish (fi, xb); (agar fayl oxirida bo'lsa, chiqing) tanaffusdan tashqari; oxiri; oxiri; oxiri;

closefile(fi);

o'chirish (fi); (manbani yo'q qilish)

yopiq fayl(fo);

(shifrlangan) oxiri;

Bu erda biz XOR operatsiyasi orqali manba faylning har bir baytini kalit baytlari bilan navbatma-navbat qo'shamiz; kalit tugagach, biz uning birinchi belgisi bilan yana boshlaymiz. Natijalarni sek kengaytmali faylga yozamiz ("xavfsizlik" dan) va uni Memoi-ga chiqaramiz. Biz shifrni ochishda xuddi shu operatsiyani faqat shifrlangan fayl bilan bajaramiz, buning natijasida asl fayl to'liq tiklanadi:

protsedurasi TForml.Buttor.2Click(Sender: TObject); boshlanishi(Raqamlash j OpenDialogl.FileName:=”;(toza/ OpenDialogl.Filter: = ‘№4>poBaHHbie fayllari| *.sec' ; agar OpenDialogl.Execute keyin fname:OpenDialogl.FileName boshqa chiqish; tayinlash fayli (fi, fname);(shifrlangan ochilgan) harakat qilib ko'ring

qayta o'rnatish (fi); chiqishdan tashqari; oxiri;

tayinlash fayli (fo, ChangeFileExt (fname, '.txt')); qayta yozish (fo);(eskisining ustiga yozish) o'qish (fi, xb);

Forml.Caption:='ProbaCrypt: '+ExtractFileNajne (fname) ;

!fayl nomi – sarlavhada

Memol.Lines.Clear;

Memol.Lines.Add (1 kutish...’);

Application.ProcessMessages;(ogohlantirishni ko'rish uchun) Memol.Lines.Clear; eof(fi) bo'lmasa ham boshlanadi yuqoridagi kabi o'zgarishlar) i:=l dan uzunlikka(kalit) uchun boshlang

xb:=xb xor ord(keyU));

Memol.Text:=Memol.Text+chr(xb);

yozish (fo, xb);

o'qish (fi, xb); tanaffusdan tashqari; oxiri; oxiri; oxiri;

closefile(fi); yopiq fayl(fo);(shifrlangan) oxiri;

Shuni esda tutingki, men shifrlangan faylni yo'q qilmayapman - printsipial jihatdan, shifrlash operatsiyasi allaqachon shifrlangan matnda har qanday marta bajarilishi mumkin, uni parolini hal qilish uchun siz uni bir xil miqdordagi takrorlashingiz kerak bo'ladi va bu usul ko'pincha "rasmiy" shifrlash algoritmlarida qo'llaniladi (faqat bu holda, siz shifrlangan fayl nomini qo'lda o'zgartirishingiz yoki dasturni biroz o'zgartirishingiz kerak bo'ladi; joriy ko'rinishida u bir xil faylni shifrlash va shifrlash uchun ochishga imkon bermaydi. ). Tabiiyki, shifrlash jarayoni faqat matnli fayllarga emas, balki mutlaqo har qanday fayllarga nisbatan qo'llanilishi mumkin.

Asl nusxani yo'q qilish bilan bog'liq nozik bir nuqta bor - siz bilganingizdek, disk faylini yo'q qilganda, magnit lentadagi musiqa yozuvi kabi o'chirilmaydi, lekin shunchaki FAT sarlavhasi tuzilmalarida u egallagan joy belgilanadi. bepul (bu taxminan NTFS da sodir bo'ladi). Aynan shu xususiyat bilan DOS dasturining Unerase ishi bog'langan (agar kimdir bu nima ekanligini eslasa). Shuning uchun, agar siz axlat qutisidan faylni o'chirib tashlasangiz ham (bizning dasturimizdan o'chirilgan fayl, ammo axlat qutisiga tushmaydi), uning mazmuni u erda boshqa narsa yozilmaguncha diskda qoladi. Shuning uchun, ayniqsa, paranoid shaxslar uchun ilg'or shifrlash dasturlari fayllarni o'chirishdan keyin yo'q qilinishi kafolatlangan variantni taklif qiladi; ularning o'rniga nollar yoziladi. Bizning holatda, buni amalga oshirish uchun, qoida tariqasida, faylni yopmasdan, uni nol qiymatga ega baytlar bilan to'ldirish kifoya (yoki boshqa har qanday, lekin fayl hajmini oshirmasdan yoki kamaytirmasdan), buni diskka yozing (yopish). fayl) va keyin uni yo'q qiling. To'g'ri, Windows-da men uning aynan bir joyda yozilishiga 100% kafolat bera olmayman, shuning uchun bunday hollarda "rasmiy" dasturlardan foydalangan ma'qul, ular, aytmoqchi, nafaqat manba izlarini yo'q qiladi. diskning u saqlangan maydoni, shuningdek, Windows SWAP faylida, agar ular o'sha erda qolsa.

Tasodifiy kalitlarni yaratishga kelsak, bu erda bir yo'l bor. Men amalga oshirishni to'liq ko'rsatmayman, chunki bu oddiy. Delphidagi psevdo-tasodifiy raqamlar generatori (va nafaqat Delphida) quyidagicha ishlab chiqilgan: generatorning boshlang'ich raqami RandSeea o'zgaruvchisi orqali o'rnatiladi (lekin sukut bo'yicha u 0 ga teng). Keyin Random funksiyasi, ketma-ket kirishda, qaysi dastur va qachon foydalanishimizdan qat'i nazar, har doim bir xil raqamlar to'plamini qaytaradi. Shunday qilib, usul - siz dasturga bunday generatorni o'rnatasiz va, masalan, uning asosida kalit yaratasiz. Shunday qilib, siz tasodifiy 16 baytli (128 bit) belgilar to'plamini yaratishingiz mumkin, bu faqat boshlang'ich generatorining dastlabki ofset qiymatiga bog'liq bo'ladi:

:

init:integer; st:string;

st:=”;

RandSeed:=init;(dastlabki ofset) uzunligi (st)<16 do begin xb:=Random(255); if xb>31 keyin st:=st+chr(xb); oxiri;

Bunday holda, siz muxbiringizga kalitning o'zini emas, balki ir.j qiymatini o'tkazasiz .. U bir xil protsedura yordamida yaratilgan aynan bir xil kalitga ega bo'ladi. Albatta, siz ushbu usulni amalga oshirish uchun ko'proq ayyor mexanizmlarni topishingiz mumkin.

Shuni ta'kidlashni istardimki, masalaning mohiyatini yashirmaslik uchun avvalroq dasturda men disk faylidan an'anaviy bayt-bayt o'qishdan foydalanganman. Faylni xotiraga oldindan o'qish mexanizmlaridan birini qo'llash orqali jarayonni keskin tezlashtirishingiz mumkin - 14-bobda bo'lgani kabi faylni xaritalash, oqimli o'qish yoki xotirada dinamik massivlarni tashkil qilishning boshqa har qanday usuli (21-bobga qarang). Biz hozir davom etadigan steganografiya yordamida misolda bu holat qisman tuzatiladi.



 


O'qing:



Mantiq algebra funksiyalarining superpozitsiyasi Monotonik mantiqiy funksiyalar

Mantiq algebra funksiyalarining superpozitsiyasi Monotonik mantiqiy funksiyalar

A va B to'plamlar orasidagi G moslik kichik to'plam deyiladi. Agar bo'lsa, b a ga mos keladi, deyiladi. Ko'p tegishli barcha ...

Axborot tizimi nima?

Axborot tizimi nima?

Davlat portallari, ESIA veb-saytlari. Yagona identifikatsiya va autentifikatsiya tizimi - esia.gosuslugi.ru EPGU. Yagona davlat xizmatlari portali...

Mantiqiy ifodadan mantiqiy sxemaga o'tish va aksincha

Mantiqiy ifodadan mantiqiy sxemaga o'tish va aksincha

Laboratoriya ishi No 4. Mantiqiy elementlarning sxema bo'yicha amalga oshirilishi. Mantiqiy sxemalarni qurish. Nazariy qism. Qayta ishlash asosida...

Nijniy Novgorod rus pochtasining sharmandaligi

Nijniy Novgorod rus pochtasining sharmandaligi

890 million rubllik yangi EAS OPS operatsion tizimi joriy etilgandan so'ng, mintaqadagi pochta bo'limlarida mijozlarga xizmat ko'rsatish vaqti...

tasma tasviri RSS