C Programlama Dili Vigenere Algoritması (Şifreleme Algoritmaları)
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.
Leave a reply
Lütfen yorum için giriş yap ve yakayıt ol Teşekkürler .