define ( PASSWORD, "şifre" );
define ( PASSLEN, 16 );
function get_rnd_iv ( $iv_len ) {
$iv = '';
while ( $iv_len-- > 0 ) {
$iv .= chr ( mt_rand ( ) & 0xFF );
}
return $iv;
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: md5_encrypt...Rastgele 44 bit şifreleme yapar..
::
*/
function md5_encrypt ( $plain_text, $password = PASSWORD, $iv_len = PASSLEN ) {
$plain_text .= "\x13";
$n = strlen ( $plain_text );
if ( $n % 16 ) $plain_text .= str_repeat ( "\0", 16 - ( $n % 16 ) );
$i = 0;
$enc_text = get_rnd_iv ( $iv_len );
$iv = substr ( $password ^ $enc_text, 0, 512 );
while ( $i < $n ) {
$block = substr ( $plain_text, $i, 16 ) ^ pack ( 'H*', md5 ( $iv ) );
$enc_text .= $block;
$iv = substr ( $block . $iv, 0, 512 ) ^ $password;
$i += 16;
}
return base64_encode ( $enc_text );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: md5_decrypt...44 bitlik şifreyi çözer..
::
*/
function md5_decrypt ( $enc_text, $password = PASSWORD, $iv_len = PASSLEN ) {
$enc_text = base64_decode ( $enc_text );
$n = strlen ( $enc_text );
$i = $iv_len;
$plain_text = '';
$iv = substr ( $password ^ substr ( $enc_text, 0, $iv_len ), 0, 512 );
while ( $i < $n ) {
$block = substr ( $enc_text, $i, 16 );
$plain_text .= $block ^ pack ( 'H*', md5 ( $iv ) );
$iv = substr ( $block . $iv, 0, 512 ) ^ $password;
$i += 16;
}
return preg_replace ( '/\\x13\\x00*$/', '', $plain_text );
}Bu önemli bir fonksiyon'dur. Define ile belirlediğiniz password ve passlen'e göre şifreleme yapar.Bir kelime için her seferinde farklı hash'lar çıkartabilir.Bunu Güvenli cookie'de, Kullanıcı şifresini hash'lamada vs. kullanabilirsiniz.Sizin belirlediğiniz password ve passlen bilinmedikten sonra kırılması imkansızdır.Kullanımı:
$sifreli = md5_encrypt("Lisans");
echo $sifreli."<br />";
$sifresiz = md5_decrypt($sifreli);
echo $sifresiz;
o zaman benim dediğim T-sql için geçerli hocamız söylemişti zamanında ordan kaldı aklımda :~)
size önerim herşey get ten ibaret deildir kullanıcıdan alacağınız verileri işlerken sıkı filtrelemelerden geçirin sık sık test edin