Ş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;
?>
add a note add a note

User Contributed Notes 1 note

up
1
Uwe Ohse
1 month ago
1) The mcrypt module has been deprecated with PHP 7.1.
What does that mean for the encryption filters?

2) deriving the IV from the secret passphrase seems wrong. This leaks information about the passphrase without need.

3) using md5() for this? Really? hash() has been available since PHP 5.1.2.

4) hashing the passphrase twice does not add any security.

5) using substr() on binary data (why, oh why, is true passed to md5()?) might lead to headaches if mbstring.func_overload is used.
To Top