Имя: Пароль:
1C
 
шифрование файла xml (либо части его данных). какие есть инструменты?
0 rasswet
 
29.07.10
09:14
Нужно сделать, чтобы при формировании xml файла он любым способом шифровался. Не нужно никаких 128 ключей, просто чтобы пользователь его открывший не мог понять, как ему руками сделать подобный.
Но при его загрузке восстанавливалась структура и файл мождно было прочитать стандартными средствами чтения xml
Желательно конечно без внешник ВК.
Структура файла: тип документа, номер  и дата.
Как минимум думаю сделать дополнительный цифровой атрибут в который буду записывать набор цифр (который получается из даты и номера документа каким-то хитрым образом), при чтении файла буду генерить этот код и сверять с кодом записанным в атрибуте. Если совпадает то ок.
Цель всей этой затеи высылать пользователю файл, который у него прочитается, но сам он не должен уметь сделать работающий такой же.
1 DJ Anthon
 
29.07.10
09:17
рарспассвордом?
2 butterbean
 
29.07.10
09:17
тока что придумал: пробегаешь по своему файлу, как по обчному  тексту, и каждый символ менешь на символ с кодом + 10, а при загрузке - обратно меняешь
3 sda553
 
29.07.10
09:18
ДВДанные = Новый ДвоичныеДанные("Файл.xml");
ШифрованнаяСтрокаXML = Base64Строка(ДВДанные);
4 rasswet
 
29.07.10
09:24
(2) пасиба)
(3) отлично)
5 Maxus43
 
29.07.10
09:37
(2) норм кстати получается, в школе делал ещё)
6 Aprobator
 
29.07.10
09:40
(0) э - а просто  файл кинуть в архив с паролем?
7 H A D G E H O G s
 
29.07.10
09:40
(2), (3) Мистец.
Не стоит считать юзера глупее себя.
8 H A D G E H O G s
 
29.07.10
09:40
Простейшая xor с автоключом
9 Maxus43
 
29.07.10
09:41
да любую книжку по основами шифрования почитать... там куча вариантов шифрования. Линейные, нелинейные и т.д., с примерами кода часто.
10 H A D G E H O G s
 
29.07.10
09:41
Base64 даже на глаз определяется.
11 Maxus43
 
29.07.10
09:43
(10) со смещением как (2) на глаз трудно определить, становится каша сплошная без переносов строк и т.д.
12 H A D G E H O G s
 
29.07.10
09:45
(11) Все просто.

Берем 200 (около) символов текста, и делаем 255 копий со смещениями.

Просматриваем текст.
13 Aprobator
 
29.07.10
09:51
гы - после формирования xml файла поменять у него расширение ))).
14 Aprobator
 
29.07.10
09:52
вот это мне особенно понравилось )))
"Цель всей этой затеи высылать пользователю файл, который у него прочитается, но сам он не должен уметь сделать работающий такой же."
15 Maxus43
 
29.07.10
09:53
(12) расшифровать то понятно просто) я про то что на глаз не определить.
а если сделать ещё: 1) код + 10, 2) код + 5, 3) код + 7. и по очереди так, то подбором уже сложно. да вобще - линейное шифрование достаточно надёжно, но если узнают алгоритм - в топку сразу
16 H A D G E H O G s
 
29.07.10
09:54
(15) Ключ.
НО.
Его надо где-то хранить (не в мозгу пользователя).

Как решают эту проблему в программах - я ума не приложу.
17 chuchundraplus
 
29.07.10
09:56
может зип файл сделать с паролем да и все
18 Maxus43
 
29.07.10
10:01
(17) не интересно. дай поизвращаться
19 ДенисЧ
 
29.07.10
10:01
"Цель всей этой затеи высылать пользователю файл, который у него прочитается, но сам он не должен уметь сделать работающий такой же."

Просто его подписать какой-нибудь pgp-пой
20 BoBaBo
 
29.07.10
10:02
(15) "1) код + 10, 2) код + 5, 3) код + 7" == код+10+5+7, не?
21 Maxus43
 
29.07.10
10:03
(20) не. первый символ + 10, второй символ + 5, третий + 7. четвертый + 10.... не на одну величину смещать а на разные всмысле
22 BoBaBo
 
29.07.10
10:03
или речь о номерах символов
1-ый +10, 2-ой + 5?
23 Andry888
 
29.07.10
10:05
Вообще-то, все эти смещения предполагают, что получатель ЗНАЕТ ключ и может расшифровать...а перехватчик не знает... =)
24 vde69
 
29.07.10
10:11
немного офтопа:

придумал алгоритм симетричного шифрования, где проверить что не велосипед,
алгоритм удовлетворяет лавинообразности после 2х раундов, что очень не плохой показатель.

зы
2 дня в инете искал или базисные определения или ссылки на патентную библиотеку
25 vde69
 
29.07.10
10:14
(16)есть довольно простой алгоритм где ключ 1 байт

xor первого байта с ключем, результат записываем в файл и он-же используется как ключ для второго байта. Сий алгоритм использовался в слайд файлах автокада.
26 Maxus43
 
29.07.10
10:15
(23) получателю дать обработку с закрытым модулем для расшифровки... конечно идеальной защиты нет)
27 myk0lka
 
29.07.10
10:16
Я делал так - брал кусок фиксированной длины с конца и ксорил им всё остальное. Сам кусок ксорил отдельным ключом. Топорно конечно....
28 skunk
 
29.07.10
10:17
(24)обратись в патентное бюро ... если дадут патент то радуйся
29 Andry888
 
29.07.10
10:18
(26) По хорошему, нужна подпись, чтоб "отправителя" нельзя было подделать...а само сообщение - хрен с ним пусть пишут xmlки =)
30 Maxus43
 
29.07.10
10:21
(29) ЭЦП вроде есть у нас, зарегистрироватся и радоваться
31 H A D G E H O G s
 
29.07.10
10:34
(25) Это и есть автоключ
32 H A D G E H O G s
 
29.07.10
10:35
(25) Как хранить закрытый ключ в инф. системах?
33 rasswet
 
29.07.10
10:36
да это всё на уровне одной организации. файл-разрешение неких действий. и цель, чтобы пользователь не мог сам себе это разрешение нарисовать.
Сверх сложного ничего не требуется.
34 H A D G E H O G s
 
29.07.10
10:37
(33) Да это уже не важно. :-)
Тут философия пошла.
35 rasswet
 
29.07.10
10:38
(34) да я уже понял))
варианты реальные уже предложили и не один. выберу какой-то.
36 Maxus43
 
29.07.10
10:52
(32) Закрытый ключ по теории шифрования хранить надо в мозгу, или в другом трудно доступном месте)
37 vde69
 
29.07.10
11:03
(32) можно хранить хешь ключа

а вообще ключь хранится в неизвлекаемом виде, реализаций неизвлекаемости много, от железа, до генерации его из SID текущего пользователя или из еще чего.
38 Maxus43
 
29.07.10
11:17
(37) Хранить в хеше - да, но зачем? Всё равно надо его будет вводить куданибудь и сравнивать хэши. т.е. храним в голове. хранить вобще не надо, раз вводим всё равно
39 rasswet
 
29.07.10
12:11
сделал так: генерю ГСЧ случайное число. записываю его в хмл.
на основании этого числа и еще двух чисел, которые тоже есть в хмл, генерю строку ключа, записываю его в этот же хмл.
при чтении снова генерю глюч, и сравниваю с ключем из файла для этой записи.
Запаролю модуль обработки, и подобрать ключ будет анриал. а юзеры модуль обрабтки не ломанут. Вполне нормальный механизм шифрования, имхо
40 H A D G E H O G s
 
29.07.10
12:20
(39) Как ключ 2 ой раз сгенеришь?
41 H A D G E H O G s
 
29.07.10
12:21
(39) По шагам - медленно, вдумчиво.
42 Sammo
 
29.07.10
12:22
Сформировать xml, заархивировать с паролем
43 rasswet
 
29.07.10
15:06
(40)генератор случайных генерит их по одному и томуже принципу каждый раз.
как ни странно. поэтому второй раз ключ генерится такой же.
44 Maxus43
 
29.07.10
15:08
(43) хренасе... серъёзно?
45 Rebelx
 
29.07.10
15:09
(0) fastinfoset
46 Рыжий Лис
 
29.07.10
15:15

МенеджерКриптографии = Новый МенеджерКриптографии("Microsoft Enhanced Cryptographic Provider v1.0", "", 1);
Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
СертификатыХранилища = Хранилище.ПолучитьВсе();
   
ТекущаяДата = ТекущаяДата();
Для Каждого Сертификат Из СертификатыХранилища Цикл
Если Сертификат.ДатаОкончания < ТекущаяДата Тогда
Продолжить; // отфильтровываем истекшие сертификаты
Иначе
Прервать;
КонецЕсли;
КонецЦикла;

МенеджерКриптографии.Зашифровать("Файл.xml", Сертификат);
47 rasswet
 
29.07.10
15:16
(44)ну там зависит от стартового числа. а его задаю одинаковой. на каждой строке ТЗ меняю, чтобы строки отличались. но принцип изменения всегда одинаков. Сам можешь попробовать.
изначально шаг например равен 546842445
ну и число старта = 4546
ГСЧ = Новый ГенераторСлучайныхЧисел(ЧислоСтарта);
ШАг=Шаг+10;
ЧислоСтрокой=Строка(ГСЧ.СлучайноеЧисло(123135, Шаг));
запусти дважды выдаст одинаковые числа.
48 rasswet
 
29.07.10
15:18
(46) это 8.2 у меня еще 8.1
49 Maxus43
 
29.07.10
15:52
(47) с параметрами генерация СЧ? ну это почти во всех языках программирования... псевдослучайные числа
50 H A D G E H O G s
 
29.07.10
15:56
(46) Спасибо, добрый Фей.
Буду знать
51 Maxus43
 
29.07.10
16:00
(46) прикольно
52 Рыжий Лис
 
29.07.10
16:07
(50), (51) Если сертификат не содержит закрытый ключ, то зашифровать может любой, а вот расшифровать файл сможет только тот у кого есть закрытый ключ.
53 Живой Ископаемый
 
29.07.10
16:20
2(47) либо запускать без инициализирующего значения, тогда таковым будет количество милисекунд с момента последнего запуска системы, и если мы в течении одной милисекнуды вызовем генератор несколько раз, то получим одинаковые числа, либо например вызывать УникальныйИдентификатор и по всякому его преобразовывать в число, которым потом инициализировать генератор... Но впрочем - зачем тогда использовать генератор, если УникальныйИдентификатор() - -сам каждый раз случайный...
54 sda553
 
29.07.10
16:20
(52)Либо наоборот, некоторые алгоритмы позволяют расшифровать любому а зашифровать только тому кто с закрытым ключом
55 Torquader
 
29.07.10
23:32
1) Не очень понятно, почему хочется шифровать именно XML-файл, так как можно данные передавать в каком-то другом виде.
2) Если пользователю выдаётся файл, который он может открыть, то откроет он его тем, что его испортит - поэтому, или пользователь сможет изготовить файл сам или вы будете долго объяснять пользователю, что файл был им изменён (типа я его открыл в блокноте и нечаянно сохранил - строки "поехали" и ничего не читается).
Поэтому, лучше смотреть в сторону аналога электронной подписи - тогда у пользователя есть возможность узнать только ключ проверки подписи - а его и будет использовать проверяющая часть программы, а вот сам ключ шифрования - нет. Да и формат файла не сильно пострадает - просто будет внизу <ПОДПИСЬ>12345567890</ПОДПИСЬ>
По крайней мере, если пользователю выдаётся "билет" на выполнение действий - это более понятно, чем генерить какой-то сложный файл, который для пользователя потом окажется проще простого и вы будете отвечать за всё, что они там "накуролесят".
56 vde69
 
30.07.10
08:14
(55) гораздо проще внизу делать

<КОНТРОЛЬНАЯСУММА>3F5CD8</КОНТРОЛЬНАЯСУММА>
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.