Ev - İyileşmek
Akış şifreleri. XOR işlemi ve basit dosya şifreleme XOR'un nasıl çalıştığına bir örnek

Temel şifreleme kavramları

Şifreleme- açık bilgiyi kapalı bilgiye (veya tam tersi) dönüştürme yöntemi. Önemli bilgilerin güvenilmez kaynaklarda saklanması veya güvenli olmayan iletişim kanalları üzerinden iletilmesi için kullanılır. GOST 28147-89'a göre şifreleme, şifreleme ve şifre çözme sürecine bölünmüştür.

Şifre, kod- olası açık veri kümesini olası şifrelenmiş veri kümesiyle ve bunların ters dönüşümleriyle eşleştiren bir dizi kriptografik dönüşüm (şifreleme) algoritması.

Şifreler, şifreleme anahtarının şifre çözme anahtarıyla çakışıp çakışmadığına bağlı olarak teorik olarak çözülemez ve pratik olarak çözülemez ve anahtarların yapısına göre simetrik ve asimetrik olarak ikiye ayrılır. Simetrik şifreler ise blok ve akış şifrelerine ayrılır.

Kriptografi- Bilginin gizliliğini (yabancılar tarafından bilgilerin okunmasının imkansızlığı) ve orijinalliğini (yazarlığın bütünlüğü ve özgünlüğü ile yazarlığın reddedilmesinin imkansızlığı) sağlama yöntemleri bilimi.

Başlangıçta, kriptografi, bilgiyi şifreleme yöntemlerini inceledi - gizli bir algoritmaya ve/veya anahtara dayalı düz (orijinal) metnin şifreli metne (şifreli metin) tersine çevrilebilir dönüşümü. Geleneksel kriptografi, şifreleme ve şifre çözmenin aynı gizli anahtar kullanılarak gerçekleştirildiği simetrik kriptosistemlerin bir dalını oluşturur.

Kriptografi en eski bilimlerden biridir; tarihi birkaç bin yıl öncesine dayanmaktadır.

(Kaynak) metni aç- kriptografi kullanılmadan aktarılan veriler (metin olması şart değildir).

Şifrelenmiş (kapalı) metin- Kripto sistemi belirtilen anahtarla kullandıktan sonra elde edilen veriler.

Kriptosistem- düz metnin şifreli metne tersine çevrilebilir dönüşümleri ailesi.

Anahtar- belirli bir metnin belirli bir dönüşümünün seçimini belirleyen bir şifre parametresi. Modern şifrelerde şifreleme algoritması biliniyor ve şifrenin kriptografik gücü tamamen anahtarın gizliliğine göre belirleniyor (Kerkhoff Prensibi).



Şifreleme- Bir algoritmaya ve bir anahtara dayalı olarak düz metnin kriptografik dönüşümünün normal olarak uygulanması ve şifreli metin elde edilmesi süreci.

Şifre çözme- şifreli metnin düz metne kriptografik dönüştürülmesinin normal uygulama süreci.

Şifre çözme (şifre çözme)- bilinen bir şifrelenmiş anahtara dayalı olarak şifreleme anahtarını bilmeden düz metin çıkarma işlemi. Şifre çözme terimi genellikle bir şifreli metnin kriptanaliz süreciyle ilişkili olarak kullanılır (genel anlamda kriptanalizin kendisi, yalnızca şifrelenen açık mesajın değil, bir şifre sisteminin analizini de içerebilir).

Kriptanaliz- Bilginin gizliliğini ve bütünlüğünü ihlal etmeye yönelik matematiksel yöntemleri inceleyen bir bilim.

Kriptografik saldırı- Bir kriptanalistin saldırıya uğrayan güvenli bilgi alışverişi sisteminde sapmalara neden olma girişimi. Başarılı bir kriptografik saldırıya denir son Dakika veya açılış.

Şifreleme gücü- bir kriptografik algoritmanın kriptanalize direnme yeteneği.


XOR şifreleme algoritması

Belki de en basit ve en ilkel şifreleme algoritması XOR şifrelemesidir. XOR şifreleme algoritması bazı yöntemlerle karmaşık hale getirilerek çok iyi sonuçlar elde edilebilir. Ancak temel uygulamasında algoritma son derece kararsızdır.

XOR şifreleme algoritması, özel veya ikili mantıksal işlemin kullanımına dayanmaktadır. Tablo görünümünde fonksiyon şuna benzer:

A B Axor B

Algoritmanın girdisi, kaynak metin (genel olarak herhangi bir bayt kümesi, yani rastgele bir dosya) ve bir parola dizesidir.

Algoritmanın amacı, kaynak metnin her karakterine ve şifre dizisinin bir sonraki karakterine bit düzeyinde mantıksal XOR işleminin uygulanmasıdır. Sonuç bir dosyaya yazılır.

XOR işlemi simetriktir. Bu, aynı dosyayı aynı parolayla 2 kez şifrelerseniz, çıktının değişiklik olmadan bu dosyanın kendisi olacağı anlamına gelir. Bu gerçekten, şifreleme ve şifre çözme için aynı işlevin kullanılacağı açıkça ortaya çıkıyor, bu da algoritmanın uygulanmasını büyük ölçüde basitleştiriyor. Ayrıca, şifre çözme sırasında şifreleme sırasındakiyle aynı parola kullanılırsa, çıktı orijinal dosya olacaktır. Şifreler farklıysa çıktı, yanlış veriler içeren bir dosya olacaktır.

XOR şifreleme algoritmasına daha ayrıntılı olarak bakalım:

  1. Girişte, kaynağa ve sonuçta ortaya çıkan dosyalara işaret eden işaretçiler ve bir parola dizesi (boş olmamalıdır) alırız.
  2. Kaynak dosyadan bir sonraki karakteri (bayt) okuyoruz.
  3. XOR işlemini okunan bayta ve bir sonraki şifre karakterine uygulayın.
  4. İşlemin sonucu ortaya çıkan dosyaya yazılır.
  5. Kaynak dosyanın sonuna ulaşılmadıysa 2. adıma geçin.

Parola orijinal dosyadan daha kısaysa (ve çoğu durumda durum böyle olacaktır), o zaman parola döngüsel olarak kullanılır, yani. Şifrenin son karakterinden sonra ilkine geri dönüyoruz.

Prosedürü uygulamak gereklidir:

prosedür XOR_CoDec (const SourceFile, DestFile, Parola: string);

Aşağıdakilerin parametre olarak iletildiği yer:

SourceFile – kaynak dosyanın adı.

DestFile – ortaya çıkan dosyanın adı.

İkili işlem XOR (eXclusive OR anlamına gelir), Boole cebirinden gelen bir ikili işlenendir (AND, OR, vb. gibi). Bu işlenen iki biti karşılaştıracak ve karşılığında bir bit üretecektir. Karşılaştırılan iki bit farklıysa bu bit 1'e, eşitse 0'a eşit olacaktır. Xor şifrelemesi, çeşitli simetrik şifrelerde (özellikle AES) yaygın olarak kullanılır. Simetrik bir şifre, anahtarın şifreleme ve şifre çözme işlemi için kullanıldığı bir şifredir. XOR işleneni, şifrelemek istediğiniz metin ile seçeceğiniz anahtar arasındaki her bir bit'e öyle uygulanır. Örnekler kelimelerden daha iyidir, "xor" kelimesini ele alalım. Bunu "cle" anahtarıyla şifrelemek istiyoruz. İlk önce girişi ve anahtarı ikili gösterime dönüştürmeliyiz:

Daha sonra her biti XOR işleneniyle karşılaştırırız. Bu size şunu verecektir:

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

Orijinal girdiye ("xor") geri dönmek istersek, çıktı ile anahtar arasına XOR'u yeniden uygulamamız gerekir. XOR'un çarpma olarak değişmeli bir fonksiyon olduğunu not edebilirsiniz. Şimdi eğer anahtar girdiden küçükse ne yapacağız? Çoğu durumda durum budur. Anahtar girişle aynı uzunlukta olsaydı ilginç olmazdı çünkü anahtarı girişi okumasını istediğiniz kişiye de iletmeniz gerekirdi. Bunun aksine, anahtar ve giriş aynı uzunluğa sahip olduğunda, Birisinin şifreyi kırması imkansızdır. Dolayısıyla, anahtar girdiden küçük olduğunda, girdinin sonuna ulaşana kadar onu yeniden uygularsınız. Mesela "bonjour" kelimesini "cle" anahtarımla şifrelemek istersem. , bunu şu şekilde yapardım:

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

Sadece anahtarı tekrarladığımızı görebilirsiniz. Anahtarınız ne kadar küçük olursa, şifrenizi kırmak o kadar kolay olacaktır (tabii ki). XOR çatlaması genellikle frekans analizine dayanır. Ancak bu konuda biraz araştırma yapmanızı öneririm.

Bir akış şifresi, bitler veya karakterler (8-, 16- veya 32-bit gibi) üzerinde işlemler gerçekleştirir. Bir akış şifresi, aynı düz metin karakterini, örneğin daha önce kaç karakterin ve hangi karakterin işlendiğine bağlı olarak farklı şifreli metin karakterlerine dönüştürür.

Xor şifreleme

Birçok akış şifresinde şifreleme şu şekilde yapılır. Sözde rastgele sayı üreteci bir bit dizisi (gama) üretir. Bu gama, bit düzeyinde XOR işlemi kullanılarak düz metne uygulanır. Sonuç bir şifreli metindir. Şifreyi çözmek için, tam olarak aynı prosedürü uygulamanız gerekir; yalnızca tamamen aynı başlangıç ​​​​durumuna sahip özdeş bir oluşturucu kullanılarak elde edilen gama şifreli metne uygulanmalıdır.

Bu en basit yöntemin fikrini ele alalım. Boolean cebirinden bilindiği gibi, mantıksal toplama “⊕” modulo 2 (veya mantıksal özel OR - XOR, eXclusive OR) işlemi aşağıdaki anlamlara sahiptir:

XOR için doğruluk tablosu:

X ben⊕ sen Ben

X = 10011 101

sen= 01001 100

z= 11010 001

Yani, operasyon z= Xsen esasen bitsel (bitsel - sonuç komşu bitlere bağlı değildir). Karşılık gelen bitlerden sadece biri 1 ise sonuç 1 olur. Her ikisi de 0 veya her ikisi de 1 ise sonuç 0 olur. Uygulamanın sonucuna yakından bakarsanız XOR iki ikili sayıya dönüştürürsek, ikinciyi kullanarak terimlerden birini geri yükleyebileceğimizi görebilirsiniz: X= zsen veya sen= zX.

Bundan şu sonuçları çıkarabiliriz: sayıyı bilmek sen ve başvuruyor XORİle X, alacağız z. Daha sonra tekrar kullanarak sen, nereden alıyoruz z Arka numara X. Bu şekilde sayı dizisini dönüştürebiliriz ( X) Ben sırasına göre ( z) Ben. Artık numarayı adlandırabiliriz sen kodlama (veya şifreleme) anahtarı. Bir kişi anahtarı bilmiyorsa, orijinal sayı sırasını geri yükleyemeyecektir ( X) Ben. Ama eğer ( X) Ben metindeki harflerin bayt temsilidir, o zaman deneyimli bir kullanıcı şifrelenmiş metni kırabilecektir. Her harf şifreli metinde aynı kodla temsil edileceğinden z, daha sonra saldırgan frekans sözlüğünü kullanarak şifreleme anahtarını hesaplayabilecektir. sen, eğer elinde yeterince uzun bir şifreli metin varsa.

Son değerlendirmelerin ışığında, basit metni doğrudan kodlamanın imkansız olduğu sonucuna vardık. İlk olarak, alanı temsil eden sayı yine de şifreli metindeki kelimeleri ayıracaktır. Kullanıcı, sıklıkla tekrarlanan bu aynı sayıyı vurgulayarak bunun şifreli bir alan olduğunu tahmin edecektir. İkinci olarak, kısa, sıklıkla tekrarlanan edatlar ve bağlaçlar da korsanın anahtarı belirlemesine yardımcı olacaktır. Bu nedenle, en etkili yol, birkaç harften oluşan veya daha iyisi mesajın kendisine eşit uzunlukta olan uzun bir anahtar kullanmaktır. Dolayısıyla, oldukça uzun bir mesajı (en az 5-10 cümle) aynı uzunlukta rastgele bir anahtar kullanarak kodlarsak, böyle bir mesajın şifresini çözmek çok zordur. Örneğin metin şifrelemeden önce bir çeşit arşivleyiciyle sıkıştırılırsa daha da yüksek güvenilirlik sonuçları elde edilebilir. Ayrıca mesaj kısaysa mesajın başına ve sonuna rastgele karakter dizileri ekleyebilirsiniz.

Dolayısıyla algoritmanın sağlamlığı yalnızca jeneratör tarafından üretilen gama özelliklerine bağlıdır. Gama yalnızca sıfırlardan oluşuyorsa (dejenere durum), bu durumda veriler şifreleme sırasında hiç değişmez. Gama'nın kısa bir periyodu varsa (örneğin 32 bit), şifreleme 32 bitlik bir sabite sahip bir XOR işlemine indirgenir. Gama herhangi bir kalıba uymayan rastgele bir bit kümesi ise sonuç, mutlak koruma sağlayan tek seferlik şifreleme pedinin benzeridir. Elbette gama üretecinde kullanılan deterministik algoritma gerçekten rastgele bir dizi üretemez. Eğer dizi tekrarlanamıyorsa mesajın şifresi çözülmeyecektir.

Eğer iki mesaj aynı gama kullanılarak şifrelenmiş olsaydı ve mesajlardan biri (daha uzun olan) bir şekilde düz metni elde edebilseydi, o zaman diğer mesajın düz metnini elde etmek kolay olurdu. XOR işlemini ilk mesajın düz metnine ve şifreli metnine uygulayarak bir gama parçası elde ederiz. Ve ikinci mesajın şifreli metnine gama uygulayarak onun düz metnini elde ederiz. Bu nedenle iki farklı akışın veya mesajın şifrelenmesinde aynı gama kullanılmasına izin verilmemelidir.

Gama mesaj içeriğinden bağımsız olarak üretiliyorsa, böyle bir akış algoritmasına senkronize denir. Tipik olarak, senkronize akış şifrelerinde, gama üretecinin başlangıç ​​dahili durumunu ayarlamak için bir şifreleme anahtarı kullanılır.

Tanım gereği, çift bir bitlik özel VEYA işlemi Tabloda gösterilen eylemleri gerçekleştirir. 19.1.

Tablo 19.1. Özel VEYA(XOY)

Giriş 1

Giriş 2

çıkış

Aynı zamanda "uyumsuzluk işlemi" olarak da adlandırılabilir - girişlerdeki değerler eşleşmediğinde çıkış mantıksaldır. Bu tanımdan bu işlemin ana özelliğini çıkarmak kolaydır: Aynı işlenene iki kez uygulanırsa, değişmediği sürece ikinci işlenenin değeri ne olursa olsun hiçbir şeyi değiştirmeyecektir. Bu, özellikle bilgisayar grafiklerinde yaygın olarak kullanılır: XOR işlemi aracılığıyla arka plana tüm birimlerden oluşan (saf beyaz) bir maske uygularsanız, aynı eylem tekrarlandığında buradaki görüntü renkli olarak ters çevrilir; her şey değişmeden geri yüklenir (bu nedenle özellikle seçim yapmak uygundur, bkz. Bölüm 10).

Bu özellik, bazen çok karmaşık olabilen neredeyse tüm şifreleme algoritmalarının temelini oluşturur, ancak bu konuyu derinlemesine incelemeyeceğiz, yalnızca bu yöntemi orijinal biçiminde uygulamaya çalışacağız. Kontrol etmek için bu basit prosedürü kullanabilirsiniz. Diyelim ki bir metin dosyasını şifrelemek istiyoruz. Diplomatik sırları gizlemediğimiz için, bu gibi durumlarda 8 karakterlik (64 bit) olağan anahtar uzunluğu bizim için yeterlidir - bu, şifreyi normal bir kişisel bilgisayarda kaba kuvvetle kırmayı "anında" bir görev haline getirmek için yeterlidir. çözülemez. Örneğin anahtar "yvre-vich" kelimesi olacaktır. Uygulamada, soyadınızdan bu tür anahtarlar oluşturmak hiçbir durumda mümkün değildir; ayrıca herhangi bir sözlük sözcüğünü, tarihi, telefon numarasını da kullanamazsınız; Vernam ayrıca, etkili şifreleme için anahtarın kesinlikle rastgele yapılması gerektiğini de gösterdi; örnek olarak ( Rastgele anahtarın nasıl ayarlanacağından daha sonra bahsedeceğiz).

ProbaCrypt adında yeni bir proje oluşturalım (Glaval9\l klasöründe) ve test için aynı klasöre bir dosya yerleştirelim. A. Makarevich'in repertuarından (aynı metin formatında, mashinavremeni.txt dosyası) “Bir gün dünya altımızda bükülecek” şarkısının metnini akorlarla aldım, çünkü bu metnin oldukça karmaşık formatı Örnek daha net 3.

Forma bir Memo bileşeni, bir OpenDialog iletişim kutusu ve iki Butt e-posta düğmesi yerleştirelim. Buttoni başlığına Encrypt yazacağız, Buttoni başlığına ise Decrypt yazacağız. Aşağıdaki değişkenleri tanımlayalım:

Forml: TForml; fname,anahtar:dize; fi,fo:bayt dosyası; i:tamsayı; xb:bayt;

Formu oluştururken anahtarı ve iletişim kutusunu başlatıyoruz:

prosedür TForml.FormCreate(Sender: TObject); başlangıç ​​anahtarı:=’yvrevich";

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

Düğme tıklama işleyicisi Buttonl'da aşağıdaki oldukça uzun kodu yazacağız:

prosedür TForml.ButtonlClick(Sender: TObject); /Encrypt/ OpenDialogl'u başlat. DosyaAdı:?= 11 ;(temiz) OpenDialogl.Filter:=”; if OpenDialogl.Execute ardından fname:=OpenDialogl.FileName else çıkış; atama dosyası(fi,fname);(belirtilen kaynak dosyaI denemek

sıfırlama(fi); (orijinal olanı açtım) hariç

çıkış; (Eğer Olumsuz açılır - çıkış) son;

questfile(fo,ChangeFileExt(fname, 1 .sec')) ; yeniden yaz(fo);

oku(fi,xb); (ilk baytı okuyun)

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

/İsim dosya - V başlık) Memol.Lines.Clear; Memol.Lines.Add('Bekle…');

Application.ProcessMessages; Memol.Lines.Clear; eof(fi) olmasa da başlar

xb:=xb xor ord(anahtar[i]);(şifreliyoruz)

Memol.Text:=Kemol.Text+chi(xb);(Not'a çıktı)

write(fo,xb); (dosyaya yaz)

oku(fi,xb); (dosya sondaysa çıkın) mola hariç; son; son; son;

dosya kapat(fi) ;

sil(fi); (kaynağı yok edin)

dosya kapat(fo);

(şifreli) son;

Burada kaynak dosyanın her bir baytını anahtar baytlarla birlikte XOR işlemi aracılığıyla ekliyoruz; tuş bittiğinde ilk karakteriyle tekrar başlarız. Sonuçları sec ("güvenlik"ten) uzantılı bir dosyaya yazıyoruz ve bunu Memoi'ye aktarıyoruz. Şifreyi çözerken tamamen aynı işlemi yalnızca şifrelenmiş bir dosyayla gerçekleştiriyoruz, bunun sonucunda orijinal dosya tamamen geri yükleniyor:

prosedür TForml.Buttor.2Click(Sender: TObject); başlamak(Pa dijitalleştir j OpenDialogl.DosyaAdı:=”;(temiz/ OpenDialogl.Filter: = ‘№4>poBaHHbie dosyaları| *.sn' ; if OpenDialogl.Execute ardından fname:OpenDialogl.FileName aksi takdirde çık; atama dosyası(fi, fname);(şifreli olarak açıldı) denemek

sıfırlama(fi); çıkış hariç; son;

questfile(fo,ChangeFileExt(fname, '.txt')); yeniden yaz(fo);(eskisinin üzerine yazılıyor) oku(fi,xb);

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

!dosya adı – başlıktaj

Memol.Lines.Clear;

Memol.Lines.Add(1 Bekle...');

Application.ProcessMessages;(uyarıyı görmek için) Memol.Lines.Clear; eof(fi) olmasa da başlar yukarıdaki gibi değişir) i:=l için uzunluk(anahtar) başlar

xb:=xb xor ord(keyU));

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

write(fo,xb);

oku(fi,xb); mola hariç; son; son; son;

dosya kapat(fi); dosya kapat(fo);(pa şifreli) son;

Lütfen şifrelenmiş dosyayı yok etmediğimi unutmayın - prensip olarak, şifreleme işlemi zaten şifrelenmiş metin üzerinde herhangi bir sayıda gerçekleştirilebilir; şifresini çözmek için aynı sayıda tekrarlamanız gerekecektir ve bu teknik genellikle kullanılır. "resmi" şifreleme algoritmalarında kullanılır (yalnızca bu durumda, şifrelenmiş dosyayı manuel olarak yeniden adlandırmanız veya programı biraz değiştirmeniz gerekecektir; mevcut haliyle, aynı dosyayı hem şifre çözme hem de şifreleme için açmanıza izin vermeyecektir. ). Doğal olarak, şifreleme prosedürü yalnızca metin dosyalarına değil, kesinlikle tüm dosyalara uygulanabilir.

Orijinalin yok edilmesiyle ilgili ince bir nokta var - bildiğiniz gibi, bir disk dosyasını yok ederken, manyetik banttaki müzik kaydı gibi silinmez, ancak sadece FAT başlık yapılarında kapladığı alan işaretlenir. ücretsiz olarak (bu kabaca NTFS'de de olur). Unerase DOS programının çalışması bu özellikle bağlantılıydı (eğer biri ne olduğunu hatırlıyorsa). Bu nedenle, bir dosyayı Geri Dönüşüm Kutusu'ndan silseniz bile (ancak programımızdan silinen bir dosya Geri Dönüşüm Kutusu'na düşmez), içeriği oraya başka bir şey yazılana kadar diskte kalacaktır. Bu nedenle, özellikle paranoyak bireyler için, gelişmiş şifreleme programları, dosyaların silindikten sonra yok edilmesinin garanti edildiği, yerlerine sıfırların yazıldığı bir seçenek sunar. Bizim durumumuzda, bunu yapmak için, prensip olarak, dosyayı kapatmadan, sıfır değere sahip baytlarla (veya başka herhangi bir şekilde, ancak dosya boyutunu artırmadan veya azaltmadan) doldurmak yeterlidir, bunu diske yazın (kapatarak) Dosya) ve ardından onu yok edin. Doğru, Windows'ta tam olarak aynı yere yazılacağına dair% 100 garanti veremem, bu nedenle bu gibi durumlarda, kaynağın izlerini yok eden "resmi" programları kullanmak daha iyidir. diskin depolandığı alanı değil, aynı zamanda orada kalmışlarsa Windows SWAP dosyasında da bulunur.

Rastgele anahtarlar oluşturmaya gelince, işte bir yol. Uygulama basit olduğu için tam olarak belirtmeyeceğim. Delphi'deki sözde rastgele sayı üreteci (ve yalnızca Delphi'de değil) şu şekilde tasarlanmıştır: üretecin başlangıç ​​numarası RandSeea değişkeni aracılığıyla ayarlanır (ancak varsayılan olarak 0'dır). Daha sonra Rastgele işlevi, sırayla erişildiğinde, hangi programa ve ne zaman kullandığımıza bakılmaksızın her zaman aynı sayı kümesini döndürecektir. Dolayısıyla yöntem - programa böyle bir jeneratör kurarsınız ve örneğin buna dayalı bir anahtar oluşturursunuz. Yalnızca başlatma üretecinin başlangıç ​​ofsetinin değerine bağlı olacak şekilde rastgele 16 baytlık (128 bit) bir karakter seti oluşturabilirsiniz:

:

başlangıç:tamsayı; st:dize;

st:=”;

RandSeed:=init;(başlangıç ​​ofseti) uzunluk(st) ise<16 do begin xb:=Random(255); if xb>31 sonra st:=st+chr(xb); son;

Bu durumda, karşınızdaki kişiye anahtarın kendisini değil, ir.j değerini aktarırsınız. Aynı prosedür kullanılarak oluşturulan anahtarın tamamen aynısına sahip olacaktır. Elbette bu yöntemi uygulamak için daha kurnaz mekanizmalar geliştirebilirsiniz.

Konunun özünü gizlememek için, programın başlarında bir disk dosyasından geleneksel bayt bayt okumayı kullandığımı belirtmek isterim. Bir dosyayı belleğe ön okuma mekanizmalarından birini (Bölüm 14'te olduğu gibi dosya eşleme, akışlı okuma veya bellekteki dinamik dizileri organize etmeye yönelik başka herhangi bir yöntem) kullanarak prosedürü önemli ölçüde hızlandırabilirsiniz (bkz. Bölüm 21). Şimdi geçeceğimiz steganografi kullanımı örneğinde bu durum kısmen düzeltilecektir.



 


Okumak:



Herhangi bir program için kısayol tuşları nasıl ayarlanır Klavye tuşları nasıl ayarlanır

Herhangi bir program için kısayol tuşları nasıl ayarlanır Klavye tuşları nasıl ayarlanır

Fare en kullanışlı el kontrol cihazıdır ancak veri girişi için kullanımı oldukça sakıncalıdır. En kullanışlı ve etkili cihaz...

QQ: kaydolun ve güvenlik sorularını ayarlayın İşte Çin'de e-postayla pazarlamaya yönelik gereksinimlerin kısa bir listesi

QQ: kaydolun ve güvenlik sorularını ayarlayın İşte Çin'de e-postayla pazarlamaya yönelik gereksinimlerin kısa bir listesi

Bu makalede, popüler TOM.com hizmetine, dil hakkında derinlemesine bilgi sahibi olmadan kendinize Çince bir e-postayı nasıl kaydedeceğinizi anlatacağım. A...

WordPress'e VKontakte yorumları nasıl eklenir?

WordPress'e VKontakte yorumları nasıl eklenir?

Merhaba! Misafirler Tayland'daki kiralık dairemize geldi; evden uzaktayken hemşehrilerimizi görmek çok güzel. Bugün seni istiyorum...

VKontakte web kamerası: yeni özellikler

VKontakte web kamerası: yeni özellikler

Son zamanlarda, sosyal ağın yönetimi, kullanıcıları faydalı ve pek kullanışlı olmayan çeşitli yeniliklerle memnun etmekten vazgeçmedi. Her neyse,...

besleme resmi RSS