Thread overview
Dosya Şifrelemenin Mantığı Nedir?
Jun 24, 2014
agora
Jun 25, 2014
agora
June 24, 2014

Selam dosya şifrelemede mantık nedir?

Geri dönüşlü şifreleme olduğunu düşünelim yani XOR olsun mesela

Dosyam: dosya.txt içinde yazılar var

Şifreli dosya: şifreli.txt => garip karakterler var

Bu tarz şifrelemeler gördüm ama mantığını anlatan Türkçe site yok dil bilgim yetmediğinden kavrayamadım.

Şifreli dosyadaki garip karakterleri tekrar eski haline döndürüyorlar bir de. En çok mantığımı zorlayan da o oldu aslında düzgün türkçe makale olsa anlarım ama direkt kod verilmiş :/ Ben kodu değil de işlemini merak ediyorum.

D ile nasıl yaparız mesela?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 25, 2014

Geceden beri deneme yapiyorum hocam tesekkur ederim.

XORlayip sifreldosya olarak out veriyorum.

Ama sifreli dosyayi tekrar normal olarak ciktilayamiyorum.

Simdi bu yazdiginiz kod ile sanirim mantigini kavrayacagim tesekkur ederim hocam.

Benim halihazirda bi ugrastigim sifre sistemi var ama cok buyudu kod satiri baya fazla oldu kafam karisti haliyle. Onun son halini uygulayacagim sanirim.

Tekrar tesekkur ederim hocam.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 25, 2014

Amaç, dosyadaki gizli bilginin yalnızca şifreyi bilen kişiler tarafından okunmasını sağlamak. O amacı sağlayan istediğin algoritmayı kullanabilirsin ama bu işin bilimi de çok derin. Güvenlik düzeyi çok önemli.

D'de Sezar şifrelemesi (http://tr.wikipedia.org/wiki/Sezar_%C5%9Fifrelemesi):

import std.stdio;
import std.conv;
import std.algorithm;
import std.array;

int main(string[] parametreler)
{
   if (parametreler.length != 3) {
       writefln("Kullanım: %s {encrypt | decrypt} <atlama>", parametreler[0]);
       writefln("Örnek: %s encrypt 3", parametreler[0]);
       return 1;
   }

   // Kaç harf ileriye atlanacağı
   int atlama = parametreler[2].to!int;

   // Şifre çözülürken geriye atlamalıyız
   if (parametreler[1] == "decrypt") {
       atlama = -atlama;
   }

   immutable dstring alfabe = "abcçdefgğhıijklmnoöprsştuüvyz";

   foreach (satır; stdin.byLine) {
       foreach (dchar harf; satır) {
           const bulunan = alfabe.find(harf);

           if (bulunan.empty) {
               // Tanımadığımız harfi olduğu gibi yazdırıyoruz
               write(harf);

           } else {
               // Harfin hangi konumda olduğu
               const yeri = alfabe.length - bulunan.length;

               // O harfe karşı gelen harfi bulmak için bir hesap (alfabeden
               // taşınca tekrar başa geçsin diye)
               const karşıtı =
                   (yeri + atlama + alfabe.length.to!int) % alfabe.length;

               write(alfabe[karşıtı]);
           }
       }

       writeln();
   }

   return 0;
}

Art arta iki çıktısı:
'$ ./deneme encrypt 3
merhaba dünya
öğtjçdç gzpbç

$ ./deneme decrypt 3
öğtjçdç gzpbç
merhaba dünya
'
Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]