alinwp
جمعه 07 فروردین 1394, 13:26 عصر
سلام
من یه تابع هش نوشتم که برای هر ورودی یک هش میده یعنی رندوم نمیندازه هر سری یه چیز بده بع من کدشو میزارم اگر شد خوشحال میشم دوستان این هشو بشکونن یعنی ضد اینو بنویسن بعدش این تنها 2 میکرو ثانیه از لحاظ سرعت با md5 فرق داره و مصرف مموریش 9408 واحد بیشتر از md5 هست
یه چیزو اضافه کنم (جنبه اینکه خودم ساختم نمیگم) اینو برای رمزای یه اسکریپت بهتر از md5 میدونم چون یه رمز حداکثر 12 کاراکتر حد معمول اونوقت md5 میاد اینو 32 کاراکتر میکنه که اگر یوزر های یه سیستم بالا باشه حجم دیتابیس بیشتر میشه
<?php
$time1 = microtime(true);
function zhash($input){
$output = "";
$last = ord($input[strlen($input)-1]);
$first = ord($input[0]);
$code = round(sqrt($last * ($first + $last-5)/10), 0);
$b_out= 542;
for($i = 0;$i <= strlen($input)-1;$i++){
$p = ord($input[$i]);
$code += $p * 3;
$next = (isset($input[$i+1])) ? ord($input[$i+1]) : ((isset($input[$i-1])) ? ord($input[$i-1]) : $p);
$prev = (isset($input[$i-1])) ? ord($input[$i-1]) : $next;
if($code < 50){
$out = chr($p * ($next+$prev+$i));
}elseif($code < 200){
$out = chr($next * ($p+$prev-3));
}elseif($code < 300){
$out = chr($next * ($p+$prev-3));
}elseif($code < 400){
$out = chr(2 * ($code+$prev+$next*$i-$next));
}elseif($code < 500){
$out = chr(round(sqrt($code+$prev+$next-$next), 0));
}elseif($code < 600){
$out = chr(round($next * ($p+$prev-3), 0));
}elseif($code < 700){
$out = chr(round($code * ($p+$last-3), 0));
}elseif($code < 800){
$out = chr(sqrt($b_out) * ($first+$code-3));
}elseif($code < 900){
$out = chr(sqrt(sqrt($first+$i)) * ($p+$code-3));
}elseif($code < 1000) {
$out = chr(sqrt(sqrt($first)) * ($p+$b_out-3));
}elseif($code >= 1000){
$out = chr($b_out * ($p+$prev-3));
}
$b_out = ord($out);
$output.= chr($b_out*2);
}
return str_replace(" ","",$output);
}
$input = (isset($_GET['q'])) ? $_GET['q'] : "Ali";
echo zhash($input);
$time2 = microtime(true);
echo '<br><b>Total Execution Time:</b> '.($time2-$time1).'<br> Memory usage:'.memory_get_usage();
اینم اضافه کنم مثلا این نیست که برای حرف A تو تمام ورودی ها یک چیز جایگزین کنه
به بزرگی و کوچکی حروف حساس است
من یه تابع هش نوشتم که برای هر ورودی یک هش میده یعنی رندوم نمیندازه هر سری یه چیز بده بع من کدشو میزارم اگر شد خوشحال میشم دوستان این هشو بشکونن یعنی ضد اینو بنویسن بعدش این تنها 2 میکرو ثانیه از لحاظ سرعت با md5 فرق داره و مصرف مموریش 9408 واحد بیشتر از md5 هست
یه چیزو اضافه کنم (جنبه اینکه خودم ساختم نمیگم) اینو برای رمزای یه اسکریپت بهتر از md5 میدونم چون یه رمز حداکثر 12 کاراکتر حد معمول اونوقت md5 میاد اینو 32 کاراکتر میکنه که اگر یوزر های یه سیستم بالا باشه حجم دیتابیس بیشتر میشه
<?php
$time1 = microtime(true);
function zhash($input){
$output = "";
$last = ord($input[strlen($input)-1]);
$first = ord($input[0]);
$code = round(sqrt($last * ($first + $last-5)/10), 0);
$b_out= 542;
for($i = 0;$i <= strlen($input)-1;$i++){
$p = ord($input[$i]);
$code += $p * 3;
$next = (isset($input[$i+1])) ? ord($input[$i+1]) : ((isset($input[$i-1])) ? ord($input[$i-1]) : $p);
$prev = (isset($input[$i-1])) ? ord($input[$i-1]) : $next;
if($code < 50){
$out = chr($p * ($next+$prev+$i));
}elseif($code < 200){
$out = chr($next * ($p+$prev-3));
}elseif($code < 300){
$out = chr($next * ($p+$prev-3));
}elseif($code < 400){
$out = chr(2 * ($code+$prev+$next*$i-$next));
}elseif($code < 500){
$out = chr(round(sqrt($code+$prev+$next-$next), 0));
}elseif($code < 600){
$out = chr(round($next * ($p+$prev-3), 0));
}elseif($code < 700){
$out = chr(round($code * ($p+$last-3), 0));
}elseif($code < 800){
$out = chr(sqrt($b_out) * ($first+$code-3));
}elseif($code < 900){
$out = chr(sqrt(sqrt($first+$i)) * ($p+$code-3));
}elseif($code < 1000) {
$out = chr(sqrt(sqrt($first)) * ($p+$b_out-3));
}elseif($code >= 1000){
$out = chr($b_out * ($p+$prev-3));
}
$b_out = ord($out);
$output.= chr($b_out*2);
}
return str_replace(" ","",$output);
}
$input = (isset($_GET['q'])) ? $_GET['q'] : "Ali";
echo zhash($input);
$time2 = microtime(true);
echo '<br><b>Total Execution Time:</b> '.($time2-$time1).'<br> Memory usage:'.memory_get_usage();
اینم اضافه کنم مثلا این نیست که برای حرف A تو تمام ورودی ها یک چیز جایگزین کنه
به بزرگی و کوچکی حروف حساس است