![]() |
|
Странности в расчете хэша | ☑ | ||
---|---|---|---|---|
0
abask
28.04.25
✎
22:32
|
Пытаюсь в коде спрятать пароль
СтранноеЧисло = 3 + 7 * 2 / 8 + 5 - 3; Хеш = Новый ХешированиеДанных(ХешФункция.MD5); Хеш.Добавить(Строка(СтранноеЧисло)); Возврат Сред(Base64Строка(Хеш.ХешСумма), 2, 16); каждые несколько дней результат меняется платформа 8.5 это глюк новой платформы или я чего-то не знаю про хэширование? какие еще могут быть идеи спрятать пароль не использую хэш? |
|||
1
abask
28.04.25
✎
22:44
|
пока сделал так
СтранноеЧисло = 1 + 4 * 3 / 6 + 3 - 2 + 236; Поток = Новый ПотокВПамяти(); Запись = Новый ЗаписьДанных(Поток); Запись.ЗаписатьСтроку(Строка(СтранноеЧисло)); ДД = Поток.ЗакрытьИПолучитьДвоичныеДанные(); Возврат Base64Строка(ДД); |
|||
2
Волшебник
29.04.25
✎
09:38
|
Пароли не надо прятать в код.
Сохраните его в файл, который зашифруйте ключом, а файл положите на сетевой ресурс с ограниченным доступом. Для расшифровки нужен ключ, который вводится пользователем на время сеанса. Можно добавить двухфакторную авторизацию. |
|||
3
mmg
29.04.25
✎
09:49
|
(2) Пароли вообще не надо хранить. Хранить надо хеш-суммы
|
|||
4
mmg
29.04.25
✎
10:10
|
(0) Так пробуй SHA вместо MD5. Но скорее всего у тебя вот это меняется
Строка(СтранноеЧисло) А так хранение хешей - самая здравая идея |
|||
5
Волшебник
29.04.25
✎
10:16
|
(0) Почитайте мысли Qwen на эту тему, может что-то окажется полезным:
https://chat.qwen.ai/s/2f815093-ea29-4ba9-a63f-9c9ac3b8ce4a?fev=0.0.85 или мысли DeepSeek https://disk.yandex.ru/d/dwxbT23oGdqULg |
|||
6
ass1c
29.04.25
✎
10:12
|
(0) Попробуй так
СекретнаяСтрокаMD5 = ОбщегоНазначения.КонтрольнаяСуммаСтрокой("СекретнаяСтрока"); Функция КонтрольнаяСуммаСтрокой(Знач Данные, Знач Алгоритм = Неопределено) Экспорт Если Алгоритм = Неопределено Тогда Алгоритм = ХешФункция.MD5; КонецЕсли; ХешированиеДанных = Новый ХешированиеДанных(Алгоритм); Если ТипЗнч(Данные) <> Тип("Строка") И ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда Данные = ЗначениеВСтрокуXML(Данные); КонецЕсли; ХешированиеДанных.Добавить(Данные); Если ТипЗнч(ХешированиеДанных.ХешСумма) = Тип("ДвоичныеДанные") Тогда Результат = СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); ИначеЕсли ТипЗнч(ХешированиеДанных.ХешСумма) = Тип("Число") Тогда Результат = Формат(ХешированиеДанных.ХешСумма, "ЧГ="); КонецЕсли; Возврат Результат; КонецФункции |
|||
7
mmg
29.04.25
✎
10:34
|
(0) Видимо, ты в принципе неправильно делаешь. Надо так.
1. Придумать пароль 2. Вычислить хеш от пароля 3. Записать хеш в код и проверять с его помощью пароль, вводимый пользователем. Т.е. вычисляешь хеш от введенного пользователем пароля и сравниваешь его с сохраненным. Если совпадают, значит пользователь ввел правильный пароль. Таким образом, ты не хранишь пароль (получить пароль из хеша нельзя), но проверить можешь |
|||
8
abask
29.04.25
✎
10:40
|
(2) задача спрятать пароль от самого пользователя
это мобильное приложение - front, которое подключается к back (3) сервер ждет на входе именно пароль (4) пробовал разные алгоритмы - результат тот же вопрос был о том, может ли хэширование так себя вести или это глюк? |
|||
9
mmg
29.04.25
✎
10:40
|
(8) Тогда это смешно. Ты не хочешь писать в коде
пароль = "123"; а хочешь как-то запутать ситуацию? Так знай, сейчас любой, начиная со старшей группы детского сада, с помощью ИИ распутает то, что ты запутал за 2 секунды |
|||
10
mmg
29.04.25
✎
10:49
|
(8) Можно предположить, что на одной машине
Строка(СтранноеЧисло) дает "6,75" а на другой "6.75" А 1 + 4 * 3 / 6 + 3 - 2 + 236=240 на любой машине будет 240 |
|||
11
H A D G E H O G s
29.04.25
✎
10:52
|
||||
12
mmg
29.04.25
✎
10:57
|
(11) Так он не в dll прячет
|
|||
13
H A D G E H O G s
29.04.25
✎
11:01
|
(12) Надо в dll и динамически муторно формировать, выщелкивая из алфавита, а не строкой хранить. Поняяятно, что спеца это не остановит, но этих спецов 1 на 10000 и ему просто лениво будет возится с поделием (0)
|
|||
14
abask
29.04.25
✎
11:21
|
(12) там только байт-код, доступа к тексту модуля нет
|
|||
15
abask
29.04.25
✎
11:22
|
(10) на одном и том же устройстве через несколько дней выдает другой хэш
|
|||
16
oleg_km
29.04.25
✎
13:32
|
(15) Полагаю, что при делении иногда иногда возникает скажем так сотый знак после запятой. Попробуй для отладки позаписывать вычисленное значение
|
|||
17
Garykom
гуру
29.04.25
✎
13:42
|
Интересно ТС понимает отличие
Строка(СтранноеЧисло)от Формат(СтранноеЧисло, "ЧГ=") ? |
|||
18
Кирпич
29.04.25
✎
14:23
|
(0) md5 всегда один и тот же от одной и той же строки. Не бывает по другому. Входная строка у тебя меняется значит.
|
|||
19
Garykom
гуру
29.04.25
✎
14:47
|
(18) там у него несколько засад
1. деление может давать разное в дробных 2. неразрывные пробелы (разделитель групп) когда число из строки 3. десятичный разделитель когда число из строки и т.д. |
|||
20
программистище
29.04.25
✎
15:02
|
а в чем суть в вычислении одного и того же выражения, а не изначально задать ключ
|
|||
21
abask
29.04.25
✎
17:28
|
идеи понятны протестирую спасибо
|
|||
22
Кирпич
30.04.25
✎
10:16
|
И зачем чего-то на чего-то там умножать делить и складывать? Почему просто не написать число сразу:)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |