Задать вопрос
aaadddminnn
@aaadddminnn
php it ubuntu debian

Добавляет лишнюю цыфру. Как исправить?

Привет. Делаю я игровой портал, игры все на разных серверах. Curl даю команды. Всё нормально работает. Теперь начал пектись о безопасности. выбор пал на xxtea (было готовое решение в нете) Сделал для xxtea шифровку ключа.
//ключ для xxtea
                $sekret = mt_rand(1,99999999999999);
				

//фальшыфка для get :D пускай тру хакеры помучаются пару недель :D

                $sol = mt_rand (1, 9999999);
                $iid = mt_rand (1, 900);
                $iid = md5($sol.$iid.sha1($sekret.$iid).md5($sol.$iid));
                $dan = base64_encode($iid);
                $dan = md5($sol.$iid.$dan.sha1($sekret.$iid.$dan).md5($sekret.$iid.$dan));
//шифровка ключа который делает розшыфровку :D знаю что  так надёжние :D :D

                $pi = mt_rand (1, 5);
                $delitil = mt_rand (1, 10);            
                $mnogitel = mt_rand (1, 15);
                $dodan = mt_rand (1, 20);
                $mn = mt_rand (1, 25);
                $mn1 = mt_rand (1, 50);
                $procent = mt_rand (1, 5);

                $procent= $sekret / $procent;
                $sekret = $sekret * $mn / $pi;         
                $pq = $sekret / $delitil;
                $pw = $pq /$procent;
                $output = $pw * $mnogitel ;
                $otv = $output + $dodan * $mn1;
//розшыфровка ключа
$otv = $output / $mn1 - $dodan;
$sekret =$output * $procent * $delitil / $mnogitel /$mn * $pi;

Проблемма в том что на серверах разная настройка точности вычислений (у меня на серваке щитает 777 а на удалёнке 777.998 )
Подумал подумал решил округлить и добавил
$sekret = round($sekret);
Теперь работает более мение стабильно. но так как все цифры рандом то в некоторых случиях делает удалнка 778 вместо 777. Как с этим можно бороться?
  • Вопрос задан
  • 618 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 3
@ollisso
использовать не round а floor/ceil если не важно что за цифра

или (int) $var
Ответ написан
Комментировать
$code='777.999';
$code=substr($code,0,strpos($code,"."));

переделывайте в string и потом обратно в int или float чтобы было все кошерно
Ответ написан
Комментировать
GavriKos
@GavriKos
Использовать не round, а просто отсекать дробную часть приведением к инту?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@maxyc_webber
Web-программист
блиа, оффтоп конечно. но подучите русский язык, ужасно неприятно читать.
думаю, решив этот вопрос, проблема в задаче так же исчезнет. никому безграмотный программист нафиг не сдался.

по вопросу: в пыхе есть несколько функций для округлений. к большему, к меньшему и т.п. используйте их

что эта портянка кода вообще должна делать? возможно данный говнокод можно завернуть узнав о существовании открытого и закрытого ключей, uniqid и пр

п.с. не старался задеть религиозных чувств. ничего личного.
Ответ написан
Splo1ter
@Splo1ter
.NET Developer (9 years+)
Чувак засветился =) - www.govnokod.ru/php?page=392
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы