Şifreleme Süzgeçleri

mcrypt.* ve mdecrypt.* süzgeçleri libmcrypt kullanarak bakışımlı şifreleme ve şifre çözme yaparlar. Her iki süzgeç ailesi de mcrypt.şifreismi biçeminde mcrypt eklentisinde kullanılan algoritmaları desteklerler; buradaki şifreismi mcrypt_module_open() işlevine aktarıldığı şekliyle şifrenin ismidir. Ayrıca, aşağıdaki beş süzgeç değiştirgesi de kullanılabilmektedir:

mcrypt süzgeç değiştirgeleri
Değiştirge Gereklilik Öntanımlı Örnek değerler
mode seçimlik cbc cbc, cfb, ecb, nofb, ofb, stream
algorithms_dir seçimlik ini_get('mcrypt.algorithms_dir') Algoritma modüllerinin yeri
modes_dir seçimlik ini_get('mcrypt.modes_dir') Kip modüllerinin yeri
iv gerekli yok Genelde 8, 16 veya 32 baytlık ikil veri. Şifreye bağlı.
key gerekli yok Genelde 8, 16 veya 32 baytlık ikil veri. Şifreye bağlı.

Örnek 1 - 3DES kullanarak şifreli dosya çıktılama

<?php
$passphrase 
'Anahtar Parolam';

/* Çoğaltılabilen iv/key çiftine insanlarca
 * okunabilecek bir anahtar parolası yazalım
 */
$iv substr(md5('iv'.$passphrasetrue), 08);
$key substr(md5('pass1'.$passphrasetrue) .
               
md5('pass2'.$passphrasetrue), 024);
$opts = array('iv'=>$iv'key'=>$key);

$fp fopen('gizli-dosya.enc''wb');
stream_filter_append($fp'mcrypt.tripledes'STREAM_FILTER_WRITE$opts);
fwrite($fp'Gizli mi gizli gipgizli veri');
fclose($fp);
?>

Örnek 2 - Şifreli dosyanın okunması

<?php
$passphrase 
'Anahtar Parolam';

/* Çoğaltılabilen iv/key çiftine insanlarca
 * okunabilecek bir anahtar parolası yazalım
 */
$iv substr(md5('iv'.$passphrasetrue), 08);
$key substr(md5('pass1'.$passphrasetrue) .
               
md5('pass2'.$passphrasetrue), 024);
$opts = array('iv'=>$iv'key'=>$key);

$fp fopen('gizli-dosya.enc''rb');
stream_filter_append($fp'mdecrypt.tripledes'STREAM_FILTER_READ$opts);
$data rtrim(stream_get_contents($fp));
fclose($fp);

echo 
$data;
?>