encryption etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
encryption etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Ocak 2018 Pazar

Base64 Kodlama

Binary verileri karakter dizilerine döndüren kodlama şeklidir. Başta http olmak üzere email metinleri de bu kodlama ile kodlanarak karşı tarafa iletilirler. Başlangıçta PEM - Privacy-enhanced Electronic Mail olarak adlanrılmasına rağmen zamanla Base64 adını almıştır. Günümüzde web tabanlı otomasyonlarda resim benzeri medyalar Base64 kullanılarak kodlanır ve o şekilde saklanırlar. Temel çalışma mantığı 8 bitlik verilerin 6 bitlik karakter cetveline dönüştürülmesidir. ASCII karakterlerin kodlanması için 7bit=128 karakter kullanılırken Base64 de 6 bit kullanılır. Sayılar, büyük harfler ve küçük harflerden oluşan dönüşüm tablosu mevcuttur. Bunun yanısıra + ve - karakterleri de tabloya eklenir.
Base64 dönüşüm tablosu

Programlama esnasında bu tablo;
char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

olarak tanımlanabilir. Peki alınan veriler nasıl kodlanır. Diyelim ki sayısal olarak üç tane veri alınmış olsun; 155, 162 ve 233. Bu sayıların 8 bitlik binary karşılıkları aşağıdaki gibidir;

155 -> 10011011
162 -> 10100010
233 -> 11101001

Şimdi bu binary rakamları yanyana ekleyelim;
100110111010001011101001

elimizde 24 bitlik bit karakter dizisi oluşmuş oldu. Base64 de 64 karakter olduğu için 6 bitlik sayılarla ifade edilebilirler. Dolayısı ile yukarıdaki 24 biti 6şar bitlik verilere bölceğiz;
100110 -> 38
111010 -> 58
001011 -> 11
101001 -> 41

Bölme işleminden sonra her bir 6 biti tekrar 10 luk tabana çevirelim. Elde ettiğimiz rakamlar Base64 dönüşüm tablosundan alınacak;
38 -> m
58 -> 6
11 -> L
41 -> p

bu şekilde sayısal kodlama tamamlanacaktır. Base64 dönüşümünde eğer 6 bitlik bölümlerde sayısal veri yetmiyorsa sonu 0 ile doldurulur. Son karakter 0 ile bitiyorsa 65. karakter olarak = işareti eklenir.

13 Kasım 2016 Pazar

Sezar Şifreleme Yöntemi

En eski şifreleme yöntemlerinden bir tanesi de Romalı'ların geliştirmiş olduğu şifreleme yöntemidir. Harflerin sırasını kaydırma yöntemi ile yapılır. Kodu çözecek olan kişi kaydırma sayısını biliyorsa iletilen mesajı rahatlıkla çözebiliyor. Örneğin üç harf atlamalaı bir şifrelemede "abi" kelimesi "del" ile kodlanır.

3 harf kaydırmalı Sezar şifreleme
Öte yandan, Sezar Şifresi(Cevrimsel alfabe) kırmak görece kolay olmaktadır: Bir filolog, bir dilde en çok geçen harfleri bulabilir. O harfler ile mesajda en sık geçen harfleri karşılaştırarak hangi harfin hangi harf ile değiştirildiğini bulabilir. Bu adımların ardından, mesaj çözülmüş olur. Sezar Şifresi Hakkında:
  • Kaba kuvvet (brute-force) saldırısıyla çok kolay çözülür. ÇünküŞifreleme/Şifre çözme yöntemi gizli değildir.
  • Sadece 25 (Latin alfabesi harf sayısı) farklı deneme yeterlidir. (Anahtar uzayı 25 elemanlıdır.)
  • Düz metin (plaintext) ve formatı gizli değildir.
  • Harf değiştirme şifrelemelerinde toplam 26! farklı şifre tablosu vardır.
Genel olarak 26 harfli ingiliz alfabesi için çözüm;


kaydirma_indisi = (i + kaydirma_miktari) % 26;
sifreli[i] = alfabe[kaydirma_indisi];

C++ kodları ile Sezar şifreleme aşağıdaki gibi yapılır;

 #include <iostream>   
 #include <string.h>   
  int main() {   
    int slength,i,j,as,indis;   
    char str1[]="abcdefghijklmnopqrstuvwxyz";   
    char str2[256];   
    printf("Lutfen sifrelenecek metni giriniz:");   
    scanf("%s",&str2);   
    printf("Lutfen atlama sayisini giriniz:");   
    scanf("%d",&as);  
    slength = strlen(str2);   
       for(i=0;i<slength;i++)   
    {   
       for(j=0;j<26;j++)  
       {  
             if(str2[i]==str1[j])  
                  {  
                       indis = (j + as)%26;  
                       printf("%c",str1[indis]);  
                  }  
             }  
    }   
  }