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:
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'.$passphrase, true), 0, 8);
$key = substr(md5('pass1'.$passphrase, true) .
md5('pass2'.$passphrase, true), 0, 24);
$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'.$passphrase, true), 0, 8);
$key = substr(md5('pass1'.$passphrase, true) .
md5('pass2'.$passphrase, true), 0, 24);
$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;
?>