Простое шифрование в PHP

body{
    background-color:#8cbfcf;
    margin: 0px 0px 0px 0px;
    overflow:hidden;
    }
#header{
    height: 60px;
    background-color:#70b0c3;
    position:fixed;
    box-shadow:#19343d 0px 1px 2px;
    width:100%;
    margin-left:0px;
    z-index:999;
    }
#accountinfo{
    position: absolute;
    right:10px;
    top: 0px;
    font-family: Happy Monkey, sans-serif;
    color:#EFF;
    text-shadow:#000 1px 1px 1px;
    font-size:18px;
    line-height: 60px;
    }
#blank{
     height:60px;
     width:100%;
    }
#main{
    height: 1500px;
    width:580px;
    margin-left:auto;
    margin-top:20px;
    background-color:#70b0c3;
    box-shadow: #254C58 1px 0px;
    border: #3C7D91 1px double;
    border-bottom:0px;
    opacity:0.9;
    padding:10px 10px 10px 10px;
    overflow-y: scroll;
    max-height: 400px;
    }
#leftside{
    top: 80px;
    left: 160px;
    float: left;
    height: auto;
    width: 230px;
    background-color: #70B0C3;
    opacity: 0.9;
    border: #3C7D91 1px double;
    position:fixed;
    box-shadow: #254C58 1px 1px;
    border-radius: 5px 5px 5px 5px;
    }
#rightside{
    position:fixed;
    top:80px;
    right:160px;
    height:300px;
    width:230px;
    opacity: 0.9;
    background-color: #70B0C3;
    border: #3C7D91 1px double;
    box-shadow: #254C58 1px 1px;
    border-radius: 5px 5px 5px 5px;
    }


TITLE

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

SOME TEXT

Это то, что вы ищете?

см. - Полоса прокрутки в одном div только

8
задан Piskvor cc-by-sa 3.0 27 August 2010 в 10:07
поделиться

3 ответа

Если Вы ожидаете относительно низкий уровень изощренности, то можно сделать очень простое "xor" шифрование и "сохранить" ключ как часть URL. Затем можно просто использовать рэнд php () или/dev/random или безотносительно генерировать ключи.

Пользователи низкой изощренности с готовностью не выяснят, что все, что они должны сделать, является xor более низкая половина их любимого идентификатора с верхней половиной для получения значения, которое может сравниться с их друзьями. Я предположил бы большинство людей, которые смогут распознать то, именно это продолжался, не займет время для понимания этого, и те люди за пределами целевой аудитории так или иначе.

Править: Если это не было очевидно, я говорю, что Вы даете другой ключ к каждому домашнему животному (так как предоставление того же не решило бы Вашу проблему). Таким образом, если любимое изменение (petvar) является числом на 16 битов, Вы генерируете 16-разрядное случайное число (rnd), затем Вы делаете это: petvar = (petvar^rnd)<<16 | rnd; и затем можно инвертировать ту операцию для извлечения rnd и затем petvar^rnd, и затем просто xor это снова для получения исходного petvar.

10
ответ дан 5 December 2019 в 05:57
поделиться

Вы ищете "одно время, дополняя" шифрование. Это берет ключ и делает дополнение модуля к символам для создания зашифрованной строки.

function ecrypt($str){
  $key = "abc123 as long as you want bla bla bla";
  for($i=0; $i<strlen($str); $i++) {
     $char = substr($str, $i, 1);
     $keychar = substr($key, ($i % strlen($key))-1, 1);
     $char = chr(ord($char)+ord($keychar));
     $result.=$char;
  }
  return urlencode(base64_encode($result));
}


function decrypt($str){
  $str = base64_decode(urldecode($str));
  $result = '';
  $key = "must be same key as in encrypt";
  for($i=0; $i<strlen($str); $i++) {
    $char = substr($str, $i, 1);
    $keychar = substr($key, ($i % strlen($key))-1, 1);
    $char = chr(ord($char)-ord($keychar));
    $result.=$char;
  }
return $result;
}

Таким образом, это - шифрование простой строки. То, что я сделал бы, сериализируют массив параметров пользователя и передают его как переменную в ссылке:

$arr = array(
  'pet_name'=>"fido",
  'favorite_food'=>"cat poop",
  'unique_id'=>3848908043
);
$param_string = encrypt(serialize($arr));

$link = "/load_pet.php?params=$param_string";

В load_pet.php необходимо сделать противоположное:

$param_string = $_GET["params"];
$params = unserialize(decrypt($param_string));

Обман.

16
ответ дан 5 December 2019 в 05:57
поделиться

Почему не только дают каждому пользователю длинный, случайный идентификатор и затем хранят все подробности об их домашнем животном на сервере? Лучшая практика ничего не должна хранить в URL, зашифрованном или нет. Все, в чем необходимо нуждаться, является идентификатором сессии.

2
ответ дан 5 December 2019 в 05:57
поделиться
Другие вопросы по тегам:

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