| |
 | Posted by Ali Çehreli (acehreli) in reply to agora | Permalink Reply |
|
Ali Çehreli (acehreli) 
| 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. ]
|