Xpoint
   [напомнить пароль]

Алгоритм шифрования

Метки: алгоритм, шифрование
[удл]
2005-09-06 11:11:04 [обр] Superman(0/16)[досье]
Подскажите что лучше юзать для такой вещи.
Имеется некий ID (цифра). Необходимо генерировать шифр 15-значный для этого ID с возожностью дешифрации, причем вариантов шифров может быть много для одного ID.
Шифр должен быть оптимизирован под URL, т.е. этот шифр будет использован в кач-ве УРЛ.
 
Пример. Для ID=8:
fsdfkjhju399g37
sdkfjhleio29lrj
dlf15gtp-7o6i5r
спустя 4 часа 46 минут [обр] Алексей В. Иванов(3/2861)[досье]
Поменяйте биты местами, добавьте XOR. Для перевода в строку можете что-нибудь, вроде base64_encode использовать. А можете просто один base64, чтобы с битами не бороться. Только пару "==" в конце обрезайте, чтобы в глаза не бросалось.
str_rot13 также можно привлечь. В общем, все от Вашей фантации зависит.
спустя 3 часа 25 минут [обр] Владимир Палант(27/4445)[досье]
Вам нужно сделать base64_encode от строки длины 11. Вы можете перевести свой ID в двоичную форму, получится четыре байта (к примеру 08 00 00 00). С этими четырьмя байтами можете сделать XOR с любым числом, как и сказал Алексей В. Иванов[досье]. Можете даже сделать это дважды, с разными числами, и поставить результаты друг за другом. Оставшиеся три байта делаете случайными. Потом base64_encode и обрезаете знак = на конце — как раз будет строка нужной вам длины.
спустя 1 день 15 часов [обр] Алексей Полушин(0/231)[досье]
Для перевода в строку на РНР удобно использовать base_convert
Если ID<=2^31 то после base_convert(ID,10,36) получится не больше 6 знаков. А чтобы получить много вариантов для одного id, возмите rand, и выдайте два числа через разделитель - rand и rand xor ID
спустя 2 часа 22 минуты [обр] Superman(0/16)[досье]
Я прошу прощения но я не пойму что за XOR имеется в виду?
спустя 6 минут [обр] Алексей В. Иванов(3/2861)[досье]
битовая разница
спустя 7 минут [обр] Сергей Круглов(19/2057)[досье]
xor - исключающее или. Т.е.
    100101010
xor
    011010110
=
    111111100
спустя 6 минут [обр] Алексей Севрюков(0/1292)[досье]
исключающее или.
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
спустя 2 минуты [обр] Алексей Севрюков(0/1292)[досье]
Его прелесть в обратимости. Т.е. есть сделать xor с константой, а потом сделать xor результата с той же константой - получим первоначальное число:
number=13;
xored=number xor 5; //xored=8
number=xored xor 5; //number опять равно 13
спустя 22 часа [обр] Андрей Новиков(16/1242)[досье]
Осталось добавить: "начальная школа, восьмой класс" :)
спустя 16 минут [обр] Алексей Севрюков(0/1292)[досье]
Офф:
Андрей Новиков[досье] Ничего подобного. У нас, например, информатики не было вообще в школе.
спустя 1 час 52 минуты [обр] Андрей Новиков(16/1242)[досье]
Жалко. Но всё равно, программисту полагается знать двоичную арифметику.
спустя 5 часов [обр] Алексей Севрюков(0/1292)[досье]
Андрей Новиков[досье] Не могу не согласится. Это же самые основы.
спустя 1 день 2 часа [обр] Superman(0/16)[досье]
off: у меня еще есть вопросы.
чуть позже вернусь :)
спустя 3 дня [обр] Superman(0/16)[досье]
добавлю что base64_encode не подходит т.к. сам шифр будет использован в УРЛ, т.е.
типа sdkro.domain.com, соответственно шифр должен быть в нижнем регистре.
спустя 1 час 12 минут [обр] Старынин Валерий(0/57)[досье]
А причем здесь имя host'а? В запросе к серверу очень даже буквы различаются...
спустя 1 день 4 часа [обр] Superman(0/16)[досье]

Алексей Полушин[досье]
Вы не могли бы более подробно раскрыть предложенный Вами вариант?
В том числе как эту строку потом расшифровать. Спасибо.

Старынин Валерий[досье]
даже если сервер под управлением Windows?

спустя 3 минуты [обр] Superman(0/16)[досье]
Старынин Валерий[досье]
я вот про что..
например набирем в браузере FotO.mail.ru и foTo.mail.ru , то мы попадем на один сайт foto.mail.ru,
насколько я понимаю то вроде бы это сам браузер делает регистр нижним и поэтому попадаем на одно и то же или что?
спустя 39 минут [обр] Владимир Палант(27/4445)[досье]
Браузер переводит в нижний регистр только имя хоста, в самом адресе регистр букв играет роль. Конечно, если адреса соответствуют файлам в FAT/NTFS, то отобразится один и тот же файл, независимо от регистра...
спустя 18 минут [обр] Старынин Валерий(0/57)[досье]
Superman[досье] После Паланта[досье] просто молчу. Добавлю только инфу от дяди Кельнера, Александра Абрамовича: http://www.debryansk.ru/support/faq/index.shtml.
Я так понял, у Вас виртуалиться все будет, mod_rewrite... Тогда точно нмкаких проблем нет. Все передается 1 к 1.
спустя 8 часов [обр] Алексей Полушин(0/231)[досье]

Чего тут расшифровывать-то ?

function encode($n) {
  $a = mt_rand();
  return base_convert($a ^ 2000000000,10,36).'-'.base_convert($a ^ $n,10,36);
}
function decode($s) {
  list($a,$b) = explode('-',$s);
  return 2000000000 ^ (int)base_convert($a,36,10) ^ (int)base_convert($b,36,10);
}

Вместо 200000000 можете написать произвольное число (только одинаковое в двух местах)
Пример: encode(1) -> grligg-kwlbxt ; decode('grligg-kwlbxt') -> 1

спустя 2 часа 49 минут [обр] Superman(0/16)[досье]
Конечно, если адреса соответствуют файлам в FAT/NTFS, то отобразится один и тот же файл, независимо от регистра...
все будет, mod_rewrite... Тогда точно нмкаких проблем нет. Все передается 1 к 1.
добавлю что действительно будет обработка через mod_rewrite, но нужно чтоб работало на любых системах
спустя 57 секунд [обр] Superman(0/16)[досье]
Алексей Полушин[досье] спасибо
спустя 11 часов [обр] Старынин Валерий(0/57)[досье]
Superman[досье] mod_rewrite он и в африке mod_rewrite. Даже под Win. Он заберет строку запроса и передаст ее в качестве параметра. Что здесь не произойдет декапитализации букв, очевидно. Дальше - все зависит от Вашего скрипта. В общем, поверьте, здесь НИКОГДА не будет проблем.
спустя 22 минуты [обр] Алексей В. Иванов(3/2861)[досье]
И все же использовать большие буквы в имени хоста криво и чревато. Браузеры его в маленький регистр переводят.
спустя 15 часов [обр] Старынин Валерий(0/57)[досье]
Алексей В. Иванов[досье] Sorry, но разговор шел про часть URL, идущую после имени хоста. Для каждого пользователя, или даже сессии новый хост - не уверен, что это нужно. Поправьте меня, если я где-то что-то проглядел.
спустя 4 минуты [обр] Superman(0/16)[досье]
идущую после имени хоста
ДО, т.е. sdfkjghkj.hostname.ru
спустя 10 часов [обр] Старынин Валерий(0/57)[досье]
Ой! Вы это каждому юзеру завадете? И DNS - сервер у Вас есть? (Вопрос не по теме: он на винде, дома?) Ну, в общем, вся информация у Вас есть, ссылками Вы обеспечены, а наша дискуссия, возможно, потребует отдельной темы, где Вы изложите свою задачу, а то я пытаюсь комментировать неизвестно что.
спустя 1 день 5 часов [обр] Алексей Полушин(0/231)[досье]
А какие проблемы с DNS ? В DNS можно wildcard вписать. *.hostname.ru CNAME hostname.ru.
спустя 5 часов [обр] Старынин Валерий(0/57)[досье]
Шел разговор про тестирование под домашними виндами... Короче, ладно. Это уже не по теме.
спустя 7 часов [обр] vvvua[досье]
Programmить нужно в той среде, где будет исполняться код.
Не знаю как у кого, но дома стоит реальная система из двух машин.
Одну можно загрузить в винду 2000, но редко - я программер под UNIX/LINUX.
А так - обе машины под Debian Linux в кластере OpenMosix.
Нужно FreeBSD - по сетке на сервак на работе.
спустя 3 дня [обр] Евгений Петров(0/1055)[досье]
vvvua[досье] Это Вы к чему написали вообще?
спустя 6 часов [обр] Старынин Валерий(0/57)[досье]
vvvua[досье] пишите по существу. А то, что все делают не так, как надо, так это кому как надо. И вообще, каждый сам себе злобный буратино. Так что теперь, на серваке, где удаленно хостишься и писать? Ведь только так можно на 100% (кроме багов, конечно) сказать, что оно заработает.
спустя 4 часа 43 минуты [обр] Superman(0/16)[досье]

Старынин Валерий[досье]

mod_rewrite ... заберет строку запроса и передаст ее в качестве параметра

Т.е. он передаст строку с учетом регистра? Например, передача скрипту /script.php?q=$1, то скрипт получит
$_GET['q'] = "FotO";

спустя 47 минут [обр] Алексей Севрюков(0/1292)[досье]
Superman[досье] Он передаст строку один к одному. С учетом регистра разумеется.
спустя 7 часов [обр] Старынин Валерий(0/57)[досье]
Superman[досье] Иначе не было бы смысла. Читайте ссылку на debryansk.ru.
Powered by POEM™ Engine Copyright © 2002-2005