|
v7: XOR в 1С7.7 | ☑ | ||
---|---|---|---|---|
0
Melcor
11.11.12
✎
18:09
|
Стоит задача зашифровать число, код контрагента, для передачи его, посредством смс, клиенту, клиент называет пришедший ему код оператору, тот вбивает его в 1С, а 1С уже распознает в нем код контрагента. XOR в 1С не предусмотрен, насколько мне известно, всё что находил до этого шифрует в кракозябры, а надо получить удобочитаемый код.
|
|||
1
АЛьФ
11.11.12
✎
18:12
|
||||
2
Бешеная Нога
11.11.12
✎
18:12
|
Скидывай клиенту уникальный идетификатор
|
|||
3
Chai Nic
11.11.12
✎
18:15
|
"XOR в 1С не предусмотрен"
Ну, вообще-то 1с - это алгоритмически полный язык, и на нем можно реализовать тот же самый xor без особых проблем) |
|||
4
Melcor
11.11.12
✎
18:15
|
(2) нужен постояно разный код, в будет меняться в зависимости от времени, и надо чтобы продавцы не догадались как он получается, ибо скидку давать он будет
|
|||
5
Melcor
11.11.12
✎
18:16
|
(3) Наверно знаний не хватает (, думал вдруг у кого-то есть уже готовое решение
|
|||
6
Chai Nic
11.11.12
✎
18:17
|
То есть, задача состоит в генерации "тикета" в виде хеша, в котором закодирован контрагент и еще какие-то данные? А в чем проблема вообще? Берешь и пишешь..
|
|||
7
Melcor
11.11.12
✎
18:17
|
(1) Блин, там всё по англицки, не понятно как работает)
|
|||
8
Melcor
11.11.12
✎
18:18
|
(6) Ну да, типа того. Дык а как зашифровать, что бы никто не догадался, что за циферки я там передаю
|
|||
9
Chai Nic
11.11.12
✎
18:22
|
(8) "а как зашифровать, что бы никто не догадался"
Ну так не показывай код заинтересованным лицам :) Я как-то делал давно примитивное хеширование для проверки пароля на запуск отчета в семерке. Тупо складывал вместе коды символов пароля, умноженные на позицию символа в строке. Далее получал остаток от деления полученного числа на размер хэша. Можно было поискать в интернете математически хорошие методы, просто не было особого смысла. |
|||
10
Melcor
11.11.12
✎
18:23
|
(9) Полученный код буду вбивать операторы, после того как клиент уйдет, они попробуют вбить его еще раз, и он ессенно подойдет, скидку сделают, разницу в карман
|
|||
11
Melcor
11.11.12
✎
18:26
|
нашел интересную штуку, только как вот обратно расшифровать)
Функция XOR(Знач пПар1 = 0, Знач пПар2 = 0) Экспорт пК = 1; Для й = 1 По 8 Цикл пРез = (пПар1 % 2 + пПар2 % 2) % 2 * пК + пРез; пПар1 = Цел(пПар1 / 2); пПар2 = Цел(пПар2 / 2); пК = пК * 2; КонецЦикла; Возврат пРез; КонецФункции |
|||
12
Chai Nic
11.11.12
✎
18:26
|
(10) Что мешает при выписке счета проверить, была ли уже продажа по этому коду или нет? Как например делают сотовые операторы при использовании скретч-карт оплаты.
|
|||
13
Melcor
11.11.12
✎
18:28
|
(12) А если клиент что-то забыл и решил купить еще? ему ведь смс с тем же кодом придет
|
|||
14
Chai Nic
11.11.12
✎
18:34
|
(13) Ну это какой алгоритм выдачи кода сделаешь
|
|||
15
Бешеная Нога
11.11.12
✎
18:37
|
(13) как это стыкуется с (10)
|
|||
16
BlackSeaCat
11.11.12
✎
19:07
|
(0) Тебе не XOR нужен, тебе постановка задачи нужна. А это денег стоит.
|
|||
17
vde69
11.11.12
✎
19:45
|
XOR - к шифрованию не имеет отношения, кроме того результатом может получится нечитаемый символ, тебе нужен base64 он на выходе гарантировано дает читаемую последовательность, только в конце знаки равно убери что-бы догадатся было сложнее...
http://www.softmaker.kz/files.php?cat=8&id=24&lang=RU Base64.dll Внешняя компонента для преобразования файлов из/в кодировку Base64 из встроенного языка 1С Предприятие. Методы объекта Addin.Base64: EncodeBase64, ЗакодироватьBase64(FileName) - можно обращаться к методу в русском или английском варианте Читает файл FileName. Преобразует этот файл в закодированную base64 строку. Параметры: FileName - имя файла Возвращаемое значение: закодированная base64 строка. DecodeBase64, РаскодироватьBase64(FileName) - можно обращаться к методу в русском или английском варианте Читает файл FileName. Преобразует этот файл в обычную строку. Параметры: FileName - имя файла Возвращаемое значение: обычная строка Для работы с компонентой скопируйте файл Base64.dll, например в каталог базы данных. В конфигураторе используйте функцию ЗагрузитьВнешнююКомпоненту: Процедура ПриОткрытии() Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "Base64.dll")=0 Тогда Сообщить("Не удается загрузить Base64.dll!"); Возврат; Иначе Сообщить("Удалось загрузить Base64.dll!"); КонецЕсли; КонецПроцедуры // ПриОткрытии // Преобразует файл в Base64 строку Функция Base64(ПутьКФайлу) Попытка ВК = СоздатьОбъект("AddIn.Base64"); Исключение Сообщить("Не удается создать объект AddIn.Base64!"); а=1/0; КонецПопытки; СтрокаИзФайла = ВК.ЗакодироватьBase64(ПутьКФайлу); Возврат СтрокаИзФайла; КонецФункции // Base64 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |