Всем привет.
нашел в интернете интересную вещь.
оказывается что есть метод шифрования данных путем конвертированием строки в некое число.
хотел узнать если функция в мултиплеере сработает, так как не нашел людей которые могли бы сказать если она обрабатывается движком, как она поведет себя в мултиплеере и есть ли утечки связанные с ней.
if(StringHash(GetEventPlayerChatString())==-952139146){
BJDebugMsg("текст")
}
хочу создать предмет для героя но при этом чтобы никто не знал для какого героя
известно что любой хэндл который создается надо очищать
native StringHash takes string s returns integer
Line:	2236
Location:	common.j
Constant?	no
Type:	native
Arguments:	string s
Returns:	integer
если есть статьи по этой нативки прошу скинуть

Принятый ответ

создает ли эта нативка утечки или чтото такое
Нет.
и в мултиплеере как она себя поведет не вызовет десинх или все нормально будет
Не вызовет.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
29
1 год назад
0
создает ли эта нативка утечки или чтото такое
Нет.
и в мултиплеере как она себя поведет не вызовет десинх или все нормально будет
Не вызовет.
Принятый ответ
0
8
1 год назад
0
((цитата
создает ли эта нативка утечки или чтото такое
Нет.
и в мултиплеере как она себя поведет не вызовет десинх или все нормально будет
Не вызовет.
))
спасибо) побоялся что если при инициализации карты сохраню все имена игроков в хэш таблицу и когда попытаюсь достать эти значения по ключу игра крашнится или вылетит
1
29
1 год назад
1
Centyrion, это обыкновенный хэш. Там нечему утекать и ломаться в мультиплеере. Его часто используют для именования ключей хэш-таблиц.
Да и чтоб вызвать просадки производительности, его нужно очень много раз вызвать.
0
8
1 год назад
0
Centyrion, это обыкновенный хэш. Там нечему утекать и ломаться в мультиплеере. Его часто используют для именования ключей хэш-таблиц.
Да и чтоб вызвать просадки производительности, его нужно очень много раз вызвать.
Ну, мне известно что каждый объект который создается занимает в памяти определенное кол-во байтов, поэтому я постараюсь его особо не использовать,
вот пример где это используется
ну я и подумал использовать его
Загруженные файлы
0
8
1 год назад
0
а использовал конструкцию когда-то но она вызывала десинхронизацию в мултиплеере

Centyrion, это обыкновенный хэш. Там нечему утекать и ломаться в мультиплеере. Его часто используют для именования ключей хэш-таблиц.
Да и чтоб вызвать просадки производительности, его нужно очень много раз вызвать.
спасибо за ответ.
Загруженные файлы
2
29
1 год назад
Отредактирован nazarpunk
2
мне известно что каждый объект который создается занимает в памяти определенное кол-во байтов
Uint32 это четыре байта. Ну и строки остаются в памяти до конца игры.
Только чтоб это сказалось на производительности, это нужно специально постараться.
1
8
1 год назад
Отредактирован Poma
1
Выше всё правильно сказали, integer по определению не может вызывать утечек, также
Centyrion:
прочел тут
-Данная функция абсолютно не криптостойкая, она генерирует 32-битный ключ и её исходники есть в интернете
Поэтому ничего не стоит сделать брутфорсер и узнать, что за герой будет у тебя создаваться
Где-то на гитхабе видел готовый брутфорсер на java.
0
8
1 год назад
0
Выше всё правильно сказали, integer по определению не может вызывать утечек, также
Centyrion:
прочел тут
-Данная функция абсолютно не криптостойкая, она генерирует 32-битный ключ и её исходники есть в интернете
Поэтому ничего не стоит сделать брутфорсер и узнать, что за герой будет у тебя создаваться
Где-то на гитхабе видел готовый брутфорсер на java.
ну про взлом я пока не думаю )) да и врятли кто-то заморочиться внедрять читпаки и мемхаки, это больше делаю для проверки имени игрока и проверки если игрок который насолил кому-то зашел поиграть а тут бац не может играть потому что он в списке забаненых игроков.
1
29
1 год назад
1
Поэтому ничего не стоит сделать брутфорсер и узнать, что за герой будет у тебя создаваться
Каждый новый символ это степень, для равкода это 16^4 -1 = 0xffff = 65535, что не так уже и сложно и можно положить в базу и получать значение за O(1).
А вот для строк уже посложнее будет: кирилица 33, латиница 26, цифры 10, это 33+26+10 = 69.
Для тех же четырёх символов это уже 69^4 = 22667121, что уже повеселее.
Если ещё добавить регистр то получится 33*2 + 26*2 + 10 = 66 + 52 + 10 = 128.
Для четырёх символов это уже 128^4 = 268435456, что уже повеселее.
0
8
1 год назад
0
мне известно что каждый объект который создается занимает в памяти определенное кол-во байтов
Uint32 это четыре байта. Ну и строки остаются в памяти до конца игры.
Только чтоб это сказалось на производительности, это нужно специально постараться.
про типы данных тоже прочел, да и С++ тоже знаком с ним, небось скоро начну писать библиотеки
0
8
1 год назад
Отредактирован Poma
0
nazarpunk, всё верно, равкод обычно содержит ограниченный набор символов, и подобрать его можно за долю секунды, касательно строк, в большинстве случаев нет необходимости находить оригинальную строку, достаточно коллизии, подобрать которую тоже не займет много времени. Помню когда-то давно сам писал такой брутфорсер, на одноядерном 4 пне штук 20 хэш коллизий нашлись буквально за 5 минут.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.