C Programlama Dili Vigenere Algoritması ile Şifreleme Algoritmaları
C programlama dili vigenere algoritması ile basit şifrelemeler yapabilirsiniz. Vigenere algoritması ile şifreleme ve şifre çözme kodunu detaylarıyla bulabilirsiniz.
- Vigenere algoritmasında orjinal metin şifreli metin ile şifrelenir. Genellikle ASCII değerleri toplanır ve mod alınarak şifreleme işlemi gerçekleşir.
- Şifre çözme işlemi de şifreleme gibi ASCII değerlerden faydalanarak yapılır. Şifre çözerken şifre karakteri ile toplama işlemi yerine çıkarma işlemi yapılır ve mod alınır.
- Bu örnekte ASCII değerler yerine kendi alfabemizi oluşturarak şifrelemeyi bu alfabe üzerinden gerçekleştireceğiz.
Örneğin;
Şifre: sifre1234 Orjinal Metin: c programlama dili Şifreli Metin: uhv9t7I3G5isrd4AEC |
- Orjinal metinin her karakteri şifrenin karakteri ile toplanır ve modu alınır. Alfabedeki yeni değeri şifreli karakter olur.
- Her işlem orjinal metinin her karakteri için yapılır.
- Eğer şifre, orjinal metinden kısa ile şifre karakteri bitince şifrenin başına dönülür.
- Aynı işlem toplama yerine çıkarma işlemi yapılarak şifre çözümü gerçekleştirilir.
- Biz Vigenere Algoritmasını kendi alfabemizi oluşturarak kullandık. Sizde isterseniz kendi alfabenizi oluşturabilir ya da ASCII tablosunu kullanabilirsiniz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#include <stdio.h>
#include <string.h>
#define limit 500
void sifrele(char[], char[]);
void sifreCoz(char[], char[]);
int bul(char[], char);
char metin[limit];
int alfabeBoyutu;
int main() {
//Kendi alfabemizi olusturuyoruz.
char alfabe[] = "abcdefghijklmnoprstuvyz0123456789ABCDEFGHIJKLMNOPRSTUVYZ.,!'^+-/*%&()=?#${[]}~<>| ";
char sifre[] = "sifre1234";
alfabeBoyutu = strlen(alfabe);
strcpy(metin, "CKAYNAK.com'da konu ANLAtimi, ornek KodLAR ve ALGORiTMAlar BULABiLiRSiNiZ.");
printf("******metinin ilk hali******\n%s\n", metin);
sifrele(alfabe, sifre);
printf("******metinin sifreli hali******\n%s\n", metin);
sifreCoz(alfabe, sifre);
printf("******metinin sifre cozulmus hali******\n%s\n", metin);
return 0;
}
void sifrele(char alfabe[], char sifre[]) {
int i, j = 0, metinHarfSirasi, sifreHarfSirasi;
int metinBoyut = strlen(metin);
int sifreBoyut = strlen(sifre);
for (i = 0; i < metinBoyut; i++, j++) {
if (j >= sifreBoyut)
j = 0;
metinHarfSirasi = bul(alfabe, metin[i]);
sifreHarfSirasi = bul(alfabe, sifre[j]);
if (metinHarfSirasi != -1 && sifreHarfSirasi != -1) {
metinHarfSirasi = (metinHarfSirasi + sifreHarfSirasi) % alfabeBoyutu;
metin[i] = alfabe[metinHarfSirasi];
}
}
}
void sifreCoz(char alfabe[], char sifre[]) {
int i, j = 0, metinHarfSirasi, sifreHarfSirasi;
int metinBoyut = strlen(metin);
int sifreBoyut = strlen(sifre);
for (i = 0; i < metinBoyut; i++, j++) {
if (j >= sifreBoyut)
j = 0;
metinHarfSirasi = bul(alfabe, metin[i]);
sifreHarfSirasi = bul(alfabe, sifre[j]);
if (metinHarfSirasi != -1 && sifreHarfSirasi != -1) {
metinHarfSirasi = (metinHarfSirasi - sifreHarfSirasi) % alfabeBoyutu;
if (metinHarfSirasi < 0)
metinHarfSirasi += alfabeBoyutu;
metin[i] = alfabe[metinHarfSirasi];
}
}
}
int bul(char alfabe[], char arananHarf) {
int i, sayac = -1;
for (i = 0; i < alfabeBoyutu; i++) {
if (arananHarf == alfabe[i])
sayac = i;
}
return sayac;
}
|
Çıktı:
1
2
3
4
5
6
|
******metinin ilk hali******
CKAYNAK.com'da konu ANLAtimi, ornek KodLAR ve ALGORiTMAlar BULABiLiRSiNiZ.
******metinin sifreli hali******
UTF?S,)a68v*ue0CHHDhF-P,KBG2%e7vE6D3^zi^E{1N8rIRZT{A~$Suf9d!~?^TrR1V[A$C$*
******metinin sifre cozulmus hali******
CKAYNAK.com'da konu ANLAtimi, ornek KodLAR ve ALGORiTMAlar BULABiLiRSiNiZ.
|
- bul fonksiyonu ile oluşturduğumu kendi alfabededeki karakterin yerini buluyoruz.
- sifrele fonksiyonu vigenere algoritmasına göre şifreleme yapıyor.
- sifreCoz fonksiyonu ise şifreli metini orjinal metine dönüştürüyor.
Diğer şifreleme algoritmalarınıda Şifreleme Algoritmaları kategorisinden bulabilirsiniz.