![]() |
![]() |
|
шифрование файла 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
|
|
|||
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</КОНТРОЛЬНАЯСУММА> |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |