Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2008, 08:56   #1
Paul Hindenburg
Форумчанин
 
Аватар для Paul Hindenburg
 
Регистрация: 27.07.2007
Сообщений: 123
Радость Как найти уникальное число для символьной строки?

объясню на примере:

существует два слова "Солнце" и "солнце" - они разные и если получать сумму символов каждой строки то суммы будут разными, но если изменить слово так чтоб получилась такие строки "Солнце" и "олнцеС", то сумма так и останется одинаковой, а она должна быть другой!!! а как этого добится у меня есть только один вариант, но он не самый лучший на мой взгляд

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

подскажите алгоритм (или код) как добиться уникальности
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
Paul Hindenburg вне форума Ответить с цитированием
Старый 01.02.2008, 09:16   #2
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Вот самое первое, что голову пришло:
Код:
function summ(s:string): integer;
var
  i: integer;
  m: integer;
begin
  m:=0;
  for i:=1 to length(s) do
    m:=m+(ord(s[i])div i);
  result:=m;
end;
Kostia вне форума Ответить с цитированием
Старый 01.02.2008, 09:17   #3
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Что такое уникальное число для строки? max? min? суммы или что-то еще?

Последний раз редактировалось _Dmitry; 01.02.2008 в 09:19.
_Dmitry вне форума Ответить с цитированием
Старый 01.02.2008, 09:27   #4
Paul Hindenburg
Форумчанин
 
Аватар для Paul Hindenburg
 
Регистрация: 27.07.2007
Сообщений: 123
Радость

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Что-то я не могу понять условие задачи. Под суммой символов вы скорее всего понимаете сумму кодов символов из кодовой таблицы 1251. Тогда зачем менять местами символы "Солнце" и "олнцеС"? От перемены мест сумма не изменится. Может тогда перебрать варианты "Солнце", "СОлнце",
"СОлнцЕ" и т.д. И что такое вообще уникальное число для строки?
вот вся картина в целом (здесь две темы но мне нужно только относительно получения этого чилса):
существут таблица бд - там два поля user и password, так вот мне нужно зашифровать пароль по числу полученному из логина, а в таблеце может быть такая ситуация как "Солнце" и "олнцеС",
так!!! чето я намудрил с этим "уникальным числом", пусть будет одно на всех _Dmitry благодарю
Ну что ж… Жизнь иногда такие фертеля выкидывает, что и фантасту не приснится…
Paul Hindenburg вне форума Ответить с цитированием
Старый 01.02.2008, 10:23   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
мне нужно зашифровать пароль по числу полученному из логина
Ну дык md5 рулез. (пока еще)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2008, 19:50   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Paul Hindenburg Посмотреть сообщение
подскажите алгоритм (или код) как добиться уникальности
для этого идеально подходит алгоритм CRC32, но если нужна защита, то MD5 лучше всего.
rpy3uH вне форума Ответить с цитированием
Старый 01.02.2008, 20:14   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

CRC-32 для хранения паролей не подходит абсолютно - слишком быстро подбирается, MD5 уже практически взломан, так что на сегодняшний день имеет смысл пользоваться чем-то вроде SHA-1, SHA-2 или WHIRLPOOL.
B_N вне форума Ответить с цитированием
Старый 02.02.2008, 11:42   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

автору надо зашифровать пароль с помощью числа полученного из логина, я думаю CRC32 самый подходящий вариант.
rpy3uH вне форума Ответить с цитированием
Старый 02.02.2008, 12:36   #9
GN_
Пользователь
 
Аватар для GN_
 
Регистрация: 25.11.2006
Сообщений: 86
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
MD5 уже практически взломан
Что курим?
Можно ссылку где описан механизм "практически взломан"?
Мой ник - GN
GN_ вне форума Ответить с цитированием
Старый 02.02.2008, 12:55   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
автору надо зашифровать пароль с помощью числа полученного из логина, я думаю CRC32 самый подходящий вариант.
Какая разница, с помощью чего он получает CRC. Смысл одностороннего хэширования в том, чтобы зная хэш, нельзя было получить каку-либо строку, дающую аналогичный хэш, что в случае с CRC32 делается очень просто и быстро.


Цитата:
Сообщение от GN_ Посмотреть сообщение
Что курим?
Можно ссылку где описан механизм "практически взломан"?
Какая разница, что мы курим?
http://www.antsight.com/zsl/rainbowcrack/
http://en.wikipedia.org/wiki/MD5CRK
Можете еще до кучи почитать про парадокс дней рождения.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод из строки в число и обратно AsmBeginer Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 22.05.2010 18:49
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
Как найти большее число из имеющихся значений в Паскале? Auditor Помощь студентам 7 05.05.2008 21:57
Извлечь число из строки и присвоить его переменной. Adamant Общие вопросы C/C++ 3 12.11.2007 07:24
В целочисленном массиве найти самое часто повторяющееся число Алена Помощь студентам 2 01.11.2007 19:46