Шифратор и дешифратор текста и файлов для 1С

17.01.12

Администрирование - Информационная безопасность

Обработки для 7 и 8 платформы для кодирования и декодирования текста и произвольных файлов по ключу.

Скачать файлы

Наименование Файл Версия Размер
Версия для 8.2
.zip 5,66Kb
178
.zip 5,66Kb 178 Скачать
Версия для 7.7
.zip 4,25Kb
50
.zip 4,25Kb 50 Скачать

 

 

 

Когда-то придумал для студентов простенький алгоритм кодирования текстовых сообщений, через смещение символов ASCII. Реализовали его они его, как обычно, с частичным успехом, но любая практика им впрок:) А несколько месяцев назад возникла задача зашифровать отдельные элементы справочника для клюшки. Вот тут я и вспомнил про этот метод. Совсем недавно потребовалось обеспечить эксклюзивный доступ к обработке более надежный чем стандартная система паролей. Сделал и это и все через тот же алгоритм... 

 Ну а сейчас собрал все это вместе под одной, так сказать "крышей", перевел на 8-ку и отправляю в свободное плавание. 

 Обработки абсолютно равнозначные, по функционалу и используемым алгоритмам кодирования. Изначально все делалось в клюшке, ну, а для расширения и жаждущих перевел очень тупо на 8-ку.

Принцип кодирования заключается в использовании некоего ключевого слова или фразы, через позиции символов которого и смещаются байты исходного текста или файла, в результате получается эдакая приятная на вид кашица (при текстовом просмотре) из самых на первый взгляд неожиданных и несвязанных между собой буковок и прочих значков. Для восстановления этой каши нужно снова ввести ключевое слово и пересчитать все смещения в обратную сторону. Для особо желающих можно регулировать количество проходов кодирования глобальной переменной модуля, увеличение количества проходов, конечно скажется на сложности дешифровки, но и на скорости работы тоже...

 Насколько вообще это надежно и как это можно взломать мне оценить трудно, скажу лишь, что я сам не возьмусь взломать бинарный файл кодированный хотя бы в два прохода по ключу не меньше чем из 8 знаков. Жалко тратить жизнь, хотя может быть и очень интересно:)

 Термин пароля в обработках на самом деле не точен, это скорее ключ, который перестраивает все содержимое текста или файла, в определенном смысле его подбор сможет восстановить информацию, но его нельзя сбить редактированием файла, как, допустим, это можно сделать со стандартным паролем обработок.

 Ограничения по размеру кодируемых файлов где-то в районе 2 Гб (предельный размер String типа) теоретическое, но на практике не советую кодировать файлы больше 10Мб - слишком долго, хотя использование прогресса в состоянии хоть чуть чуть веселит в процессе, все равно не дождетесь, лучше сначала сжать архиватором.

 Ограничения по длине ключа 30 символов (так мне захотелось - программисты могут довести до тех же 2Гб), ограничений по символам, используемым в ключе нет. Все что есть в ACSII - все можно, в том числе и пробелы.

 Ну а вот о практической пользе этого творения решать все таки Вам. Знаете часто бывает, что есть цель, а средства нет. Ну так вот Вам средство, а цели выбирайте сами:) 

См. также

AUTO VPN (portable)

Информационная безопасность Платные (руб)

Автоматизация подключения пользователей к удаленному рабочему месту или сети посредством создания автоматического VPN (L2TP или L2TP/IPSEC и т.д.) подключения без ввода настроек пользователем (с возможностью скрытия этих настроек от пользователя). Программа автоматически выполняет подключение к VPN серверу и после успешного коннекта , если необходимо, подключение к серверу удаленных рабочих столов (RDP).

1200 руб.

24.03.2020    14394    22    32    

33

Настройка аутентификации в 1С с использованием стандарта RFC 7519 (JWT)

Информационная безопасность Платформа 1С v8.3 Бесплатно (free)

Рассмотрим в статье более подробную и последовательную настройку аутентификации в 1С с использованием распространенной технологии JWT, которая пришла в программу в платформе версии 8.3.21.1302.

27.02.2024    2582    PROSTO-1C    9    

29

Device flow аутентификация, или туда и обратно

Информационная безопасность Платформа 1С v8.3 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)<br> Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    1615    platonov.e    1    

23

Анализатор безопасности базы сервера 1С

Информационная безопасность Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Продукты на основе решений 1С уверенной поступью захватывают рынок учётных систем в стране. Широкое распространение программ всегда порождает большой интерес к ним со стороны злоумышленников, а пользователь 1С это одна из дверей в защищённый информационный контур предприятия. Обработка позволяет быстро и комплексно оценить настройки безопасности конкретной базы и возможности пользователя этой базы на сервере. Также можно оценить некоторые аспекты сетевой безопасности предприятия со стороны сервера 1С.

5 стартмани

24.04.2023    5437    14    soulner    7    

29

Двухфакторная аутентификация в 1С через Telegram и Email

Информационная безопасность Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

1С, начиная с версии платформы 8.3.21, добавили в систему возможность двойной аутентификации. Как это работает: в пользователе информационной базы появилось свойство «Аутентификация токеном доступа» (АутентификацияТокеномДоступа во встроенном языке), если установить этот признак и осуществить ряд манипуляций на встроенном языке, то появляется возможность при аутентификации отправлять HTTP запросы, которые и реализуют этот самый второй фактор. Данное расширение позволяет организовать двухфакторную аутентификацию с помощью электронной почты или мессенджера Telegram.

2 стартмани

08.12.2022    5962    32    Silenser    12    

23

История одного взлома или проверьте вашу систему на безопасность

Информационная безопасность Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

От клиента клиенту, от одной системы к другой, мы вновь и вновь встречаем одни и те же проблемы и дыры в безопасности. На конференции Infostart Event 2021 Post-Apocalypse Виталий Онянов рассказал о базовых принципах безопасности информационных систем и представил чек-лист, с помощью которого вы сможете проверить свою систему на уязвимость.

26.10.2022    9241    Tavalik    46    

113
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Арчибальд 2706 17.01.12 10:09 Сейчас в теме
Склонен согласиться с автором: средство есть, цели/задачи подберем
dj_serega; +1 Ответить
2. itar59 87 17.01.12 11:20 Сейчас в теме
Скажите, а есть ли возможность шифровать отдельные справочники 1с? например физ.лиц? или контрагентов?
а то с этой защитой персональных данных.......
3. dusha0020 1103 17.01.12 11:39 Сейчас в теме
(2) itar59, Возможность конечно есть. Но эта обработка лишь инструмент шифрования - дешифрования в самой простой форме. Для более сложных задач нужны отдельные процедуры и встраивать в них эту обработку.
Например пишите шифрование справочника Сотрудники перебором всех сотрудников с передачей текстовых полей в обработку и возвратом результата. Но для практической работы нужно при открытии 1С или нужного справочника его дешифровать. Опять что-то пишите. Цепляете автоматическую процедуру шифрования при закрытии и т.д.
Но это, паллиатив...
В дбф базе клюшки можно это сделать проще шифруя при закрытии и дешифруя при открытии файлы нужных справочников, но никто не гарантирует, что их не сопрут в процессе работы. Короче это тема отдельной большой работы и публикации. В чистом виде от кражи персональных данных эти обработки Вас не спасут:)
4. BorisBelov 889 17.01.12 21:28 Сейчас в теме
Респект автору! Хорошо!
5. Uncore 1272 18.01.12 07:15 Сейчас в теме
Однозначный плюс автору, вещь пригодится :)
6. vain79 18.01.12 07:45 Сейчас в теме
7. Oleg1708 18.01.12 10:22 Сейчас в теме
Любопыная штука. Надо токо выбрать где ее использовать
8. gaglo 18.01.12 11:04 Сейчас в теме
Насколько я понял, этот способ называется "шифр Виженера". ("...изобретался многократно...") Считается, что в эпоху компутеризации его достаточно легко расколоть, если иметь представление об исходном тексте. То бишь от агентов ФСБ, ЦРУ, ВЖМЗ - не спасёт. От неспециалистов - может помочь, но тут нужна отработанная технология работы, чтоб расшифрованные данные не оставались где-нибудь в месте, легко доступном для простого копирования. (См. коммент 3).
Насчёт количества проходов я не понял. Если они делаются по тому же самому ключу, то являются зряшной потерей времени.
PS Однако обработку я не качал, и основываюсь только на тексте публикации.
9. dusha0020 1103 18.01.12 11:32 Сейчас в теме
(8) gaglo, Прочитал про шифр Виженера. Да алгоритм, если не вдаваться в детали похож. Но вот количество проходов это на самом деле смещение после смещения. То есть В один проход один символ смещается относительно ключа, при втором проходе полученный символ смещается относительно следующего символа ключа, при третьем новый символ смещается относительно следующего символа в ключе и т.д. То есть классические методы взлома нужно дополнить методами определения количества проходов кодирования (а ведь была мысль сделать количество проходов равным длине ключа или порядку сивола в ключе, но как оказалось независимая величина все же лучше).
По поводу специалистов ФСБ, ЦРУ и иже с ними скажу так: Если бы мне удалось создать шифр, с которым бы они не справились, то работал бы я не там где сейчас и, совсем за друге деньги:)
А вопрос о том на каждую ли "Энигму" найдется свой Тьюринг давайте оставим открытым, тем более что это очень интересный вопрос:)
10. alprk 18.01.12 13:35 Сейчас в теме
Насколько я понял это простое гаммирование.
11. dusha0020 1103 18.01.12 13:48 Сейчас в теме
(10) alprk, Ну немножко усложненное количеством проходов. Считаем доказанным, что алгоритм не мой, хотя о шифре Виженера и гаммировании я узнал из комментариев. Да, это просто средство защиты информации от несанкционированного доступа. Но знаете, если бы я давал гарантии надежности шифрования и провел анализ криптографичекой стойкости, то публикация была бы уже платной:)
12. Kurt 110 18.01.12 14:40 Сейчас в теме
Добрый день.
Думал как же Вы это сделали стандартными средствами 1С?
А у Вас "vbscript"... я к сожалению в этом не силён.
Но смысл вижу тот же - с избыточным прибавлением-вычитанием через 255.

Тоже когда-то пробовал шифровать текстовые файлы стандартными средствами 1С :-)
Через "открыть файл", "получить строку"... ага, в конце которой соответственно стояли непечатные символы "Симв(13)+Симв(10)" да и ограничение 1С на одну текстовую строку 500 символов (кажется). Для шифрования использовался исключительно цифровой ключ (с разрядностью 46-49, какая получится из исходного "пароля", алгоритм можно глянуть в прицепленом файле. А то у Вас до 30 символов, но пользователю такое запомнить весьма сложно. У меня из короткого пароля - обработкой делался длинный, за пользователя :-)).

И вроде всё было хорошо, НО просто цифровой ключ - показалось мало и слишком наглядно :-). Усложнил. Кроме символа ключа у меня использовался ещё и предыдущий символ текста.
И вот тут с ограничениями 1С случилась такая закавыка... после шифрования некоторых файлов при некотором пароле возникали строки более 500 символов, которые 1С при дешифровке (вот уж не помню) толи тупо обрезала, толи вылетала... короче информацию восстановить не удавалось. Да и при кодировке ASCI как выяснилось при одном и том же файле и ключе переносов строк возникало намного больше (или меньше уж не помню), чем при DOS... как ни странно.

Но при Вашем использовании "vbscript" это вполне возможно сделать.
Прикрепленные файлы:
ProsmotrKlu4ey.ert
13. dusha0020 1103 18.01.12 15:22 Сейчас в теме
(12) Kurt, VbS здесь выступает как средство обработки файлов, причем любых. Если Вы заметили то файл кодируется / раскодируется частями. Ничего не мешало сделать это целиком кроме скрипт контроля, который не видя отзыва от скриптовой процедуры начинал выкидывать предупреждения. Поэтому я разделил процесс на части с отзывам через 10 000 байт и получил возможность вывести состояния и скрипт контролю некогда включиться. Но это я к чему... Ваша проблема длинных строк вполне может быть решена ограничением считывания за раз тех же 500 символов. Если есть очень большое желание, я напишу вам функцию чтения и записи файла нужными порциями на VbS, а уж дальше можете попробовать вдохнуть вторую жизнь в свои идеи, мне они кажутся достаточно интересными.
Если что пишите в личку.
16. Kurt 110 18.01.12 17:35 Сейчас в теме
(13) ну это я делал (пробовал) "бантики" для удовлетворения собственного любопытства. Никакой практической цели я не ставил.
Из этих экспериментов у меня родился вердикт: "Эх нет в 1С инструментов для побайтной работы с любыми файлами". :-) ..а былоб хорошо.
Собственно на этом эксперимент и заглох.

Кстати в военной аппаратуре используется любопытный алгоритм "Сложение по модулю 2". В двоичной системе (т.е. побитно) исходная информация складывается с ключем. Повторное наложение ключа (опять же по модулю 2) возвращает исходную информацию в первоначальный вид :-)
17. dusha0020 1103 18.01.12 17:41 Сейчас в теме
(16) Kurt, Это уже не столько в тему данной публикации, но как Вы думаете, 5-6 функций для работы с байтами и для бинарного доступа на основе VBS для 1С будут полезны сообществу? Может сделать еще такую публикацию?
18. Kurt 110 18.01.12 18:09 Сейчас в теме
(17) "Может сделать еще такую публикацию?" - если Вас не затруднит, если Вам это интересно. Это решать Вам.
dusha0020, я лично считаю, что любые инструменты расширяющие функционал 1С имеют место быть (или имеют право на жизнь :-)!
"будут полезны сообществу?" - это решит сообщество.
51. cpm-classica@mail.ru 23.01.12 11:50 Сейчас в теме
Добрый день.
Думал как же Вы это сделали стандартными средствами 1С?
А у Вас "vbscript"... я к сожалению в этом не силён.
Но смысл вижу тот же - с избыточным прибавлением-вычитанием через 255.

Тоже когда-то пробовал шифровать текстовые файлы стандартными средствами 1С :-)
Через "открыть файл", "получить строку"... ага, в конце которой соответственно стояли непечатные символы "Симв(13)+Симв(10)" да и ограничение 1С на одну текстовую строку 500 символов (кажется). Для шифрования использовался исключительно цифровой ключ (с разрядностью 46-49, какая получится из исходного "пароля", алгоритм можно глянуть в прицепленом файле. А то у Вас до 30 символов, но пользователю такое запомнить весьма сложно. У меня из короткого пароля - обработкой делался длинный, за пользователя :-)).

И вроде всё было хорошо, НО просто цифровой ключ - показалось мало и слишком наглядно :-). Усложнил. Кроме символа ключа у меня использовался ещё и предыдущий символ текста.
И вот тут с ограничениями 1С случилась такая закавыка... после шифрования некоторых файлов при некотором пароле возникали строки более 500 символов, которые 1С при дешифровке (вот уж не помню) толи тупо обрезала, толи вылетала... короче информацию восстановить не удавалось. Да и при кодировке ASCI как выяснилось при одном и том же файле и ключе переносов строк возникало намного больше (или меньше уж не помню), чем при DOS... как ни странно.

Но при Вашем использовании "vbscript" это вполне возможно сделать.
14. karakozov 18.01.12 15:43 Сейчас в теме
Такой механизм возможно действительно где нибудь пригодится. К сожалению из за использования внешних средств возникают вопросы о универсальности.
15. dusha0020 1103 18.01.12 15:59 Сейчас в теме
(14) karakozov, Вы о VBS? Сервер сценариев Windows стоит на всех Windows c 2000, если конечно на версии ниже винды работать, то его потребуется установить, но какая Win98, потянет восьмерку вопрос интересный...
Давайте тогда сразу и восьмерку назовем не универсальной, потому что она не на всех Windows работает:)
Надеюсь на вопрос об универсальности я ответил.
19. пользователь 18.01.12 18:09
Сообщение было скрыто модератором.
...
20. dusha0020 1103 18.01.12 18:17 Сейчас в теме
(19) barsa-05, Ну так работает же!:) Пользоваться нужно, если есть потребность, а понимают пусть другие. Я вот тоже не понимаю как Windows работает, но пока пользуюсь:)
21. svad1 10 18.01.12 18:31 Сейчас в теме
Респект! полезная штука
22. WiseSnake 1519 19.01.12 12:18 Сейчас в теме
(0) Простите, не могу понять, а нафига это?
Если для клюшек это еще как то можно понять, то для 8ки чем не устраивает стандартный пароль на текстовый модуль?
Текстовые модули никто не ломает, код замечательно восстанавливается из байт кода. То есть в данном методе относительно 1С защиты 0.
23. dusha0020 1103 19.01.12 12:21 Сейчас в теме
(22) WiseSnake, Так мы защищаем файлы, а не только текстовые модули. Любые файлы. И любой текст. О применимости, как говорилось в статье судить не мне.
24. WiseSnake 1519 19.01.12 12:29 Сейчас в теме
(23) Ясно, но для защиты (кодирования) файлов есть очень много программ(способов), а вот для дельной защиты кода пока ни одного.
25. WiseSnake 1519 19.01.12 12:31 Сейчас в теме
+(24) А а ломать Ваш закодированный файл тоже не нужно, надо просто сломать модуль где он раскодируется и взять уже готовый... так что вот так
28. dusha0020 1103 19.01.12 12:43 Сейчас в теме
(25) WiseSnake, Модуля мало. Нужно еще знать ключ, который в модуле не хранится... Допустим при клюшечной реазизации, при вводе ключа пользователем раскодировался ert и запускался удаляя себя же (раскодированного) с диска. При неправильном вводе ключа он восстанавливался не правильно и, соответственно НЕ запускался. Код шифратора и дешифратора при этом остается абсолютно открытым, зачем его ломать если без нужного ключа он не сможет правильно восстановить обработку?
29. WiseSnake 1519 19.01.12 12:50 Сейчас в теме
(28) То же самое что вы упакуете в архив с паролем (ключом).
50. Kurt 110 23.01.12 10:53 Сейчас в теме
Насколько я понимаю "в взломах" (как говорила одна мадам: "я отлично разбираюсь в живописи: я 7 лет замужем за художником была"), так вот, сам файл никто взламывать не будет. Будут работать над механизмом, который шифрует/дешифрует этот файл.


margo2007, насколько я понимаю, Вы не совсем в теме. Как и человек из (25). Зачем ломать механизм? Что это Вам даст, если у Вас нет ключа, с помощью которого была зашифрована информация? Алгоритм работы вообще может быть выложен(описан) в открытом доступе. Толку-то?

Попробуйте сломать WinRar, чтобы вскрыть запароленный архив... сильно Вам это поможет без знания пароля?
Не путайте "пароль для доступа" - где сама информация хранится в исходном виде (например Word). Или "ключ шифра" - где информация переработана и зашифрована на основе ЭТОГО ключа. ДРУГОЙ ключ не поможет, как и "взлом" механизма.

Это всё равно как пытаться дозвониться до кого-то НЕ ЗНАЯ его номера телефона :-) Даже если Вы вломитесь на АТС и "поломаете" её - то с нужным абонентом АТС Вас всё равно не соединит. Нужно знать номер абонента :-) Так что "механизм" тут совсем не причём.
dusha0020; +1 Ответить
26. Kyrales 144 19.01.12 12:38 Сейчас в теме
Плохо что текст шифрвуется с использованием Юникод символов. Их в текстовых полях 1Ски не вставить
37. Kurt 110 20.01.12 10:59 Сейчас в теме
(26)(30) А может при шифровании возникнуть ситуация возникновения в строке не печатных символов?
Таких как "Конец строки", "Перевод строки", "Символ табуляции" и пр. При шифровании файлов как бы и бог с ними. Но как их будет воспринимать 1С в обычных текстовых полях?

У нас при тестировании и исправлении базы на 7.7 1С бывает редко, но ругается на некоторые поля, что мол в них присутствут Запрещенные символы. Это при обычной работе (без шифрации). Показывает содержимое "плохого" поля - а там какая-то непечатная "кроказябра"...
38. dusha0020 1103 20.01.12 11:16 Сейчас в теме
(37) Kurt, Может и возникает, но Вы же используете в 1С: "Вова - "+СимволТабуляции (РазделительСтрок, РазделительСтраниц и т.д.)+"корова" и все нормально. Если Вы кодировали многострочный текст, то замечали что строки в нем разбивались по другому, а потом восстанавливались. Единственный символ, который, по моим наблюдениям, 1С не может включить в строку это Симв(0) - то есть нулевой байт.
При установке признака "Многострочный" для поля текста 1С просто вместо козявок на месте разделителя строк начинает новую строку, а в остальном это такая же строковая переменная.
На картинке образец того как выглядят в строке непечатаемые символы.
Прикрепленные файлы:
41. Kurt 110 20.01.12 14:42 Сейчас в теме
(38) с текстом это мне всё понятно.
Я про (2). Тут-то 1С у нас (при тестировании и исправлении базы) и выдавала сообщения о "плохих" полях справочника (например).
"Многострочный" - он-то проглотит.
А как поведёт себя реквизит просто "Строка"?... а уж тем более "Число", "Дата" О_о ... если кто-то попытается применить шифрацию ко всем реквизитам справочника.
42. dusha0020 1103 20.01.12 15:20 Сейчас в теме
(41) Kurt, Со строкой все нормально, а с реквизитами число и дата я даже не пытался пробовать. Результат шифрования и дешифрования - всегда строковая величина и сохранить ее в поля типа Число, Дата и тем более объекты метаданных нельзя. Название публикации
Шифратор и дешифратор текста и файлов для 1С

Заметьте, что ни о датах, числах речи не идет. На практике чтобы сделать содержимое справочника непонятным достаточно закодировать все его текстовые поля.
Если же не достаточно то нужен другой способ кодирования, основанный на 10-тичном а не 256-ричном алфавите.
Так что при шифровке справочника я просто обхожу не текстовые поля.
27. пользователь 19.01.12 12:38
Сообщение было скрыто модератором.
...
30. dusha0020 1103 19.01.12 13:00 Сейчас в теме
(27) Kyrales, ??? В семерке прекрасно вставляется. Да и в восьмерке где же вы получаете результат как не в текстовом поле формы? Если не трудно, опишите Вашу проблему подробнее - я постараюсь решить.
31. AleksandrFil 20 19.01.12 15:30 Сейчас в теме
32. nurislam 19.01.12 16:50 Сейчас в теме
Нормально ,давно искал такую штуку.Спасибо.
33. massqwest 19.01.12 20:02 Сейчас в теме
Благодарю исползую правда немного для других целей.
34. dusha0020 1103 19.01.12 20:12 Сейчас в теме
(33) massqwest, А если не секрет для каких? А то меня WiseSnake мучает нафига ЭТО нужно. Вот и ответ будет:) Да мне и самому интересно.
35. opiumdx 20.01.12 07:29 Сейчас в теме
Спасибо, интересная разработка.
36. Sbelyi78 9 20.01.12 09:24 Сейчас в теме
"Жалко тратить жизнь, хотя может быть и очень интересно" мемовская фразаЭ, а так впечатлило Спасибо
39. garik79 20.01.12 12:25 Сейчас в теме
Интересный подход. Надо попробовать. Спасибо за разработку
40. ooosnika 20.01.12 12:51 Сейчас в теме
интересаня обработка, очень пригодится если в большой организации не все письма для общего доступа то очень нужная вещь
43. SiAl 76 21.01.12 12:16 Сейчас в теме
Уже встречал года три назад подобное решение.
44. Vitaly 91 21.01.12 15:27 Сейчас в теме
Идея понравилась и в закладке текст она работает! Но, поигрался файлами с расширением .doc... НЕ работает расшифровка. Может дело, конечно, в OpenOffice (нет у меня MSOffice). Т.е очевидно еще есть над чем работать...
45. dusha0020 1103 21.01.12 16:08 Сейчас в теме
(44) Vitaly, Вот сейчас скачаю и сам попробую:) От расширения не должно ничего зависеть, да и от офиса тоже...
46. dusha0020 1103 21.01.12 16:22 Сейчас в теме
(44) Vitaly, Вот этот файл создан шифратором для семерки. У меня он прекрасно раскодировался. Попробуйте сами. Ключ - Ваш логин, с большой, конечно буквы:)
Установите его как источник, выберите, а лучше создайте файл-результат по кнопке выбора результата и "расшифровать". Ключ см. выше.
Прикрепленные файлы:
ПРС_Кодированный.doc
49. Vitaly 91 22.01.12 22:54 Сейчас в теме
(46) Действительно работает! Или глюк какой-то, или руки не из того места :)... Плюсую..
47. margo2007 15 22.01.12 01:38 Сейчас в теме
Насколько вообще это надежно и как это можно взломать мне оценить трудно, скажу лишь, что я сам не возьмусь взломать бинарный файл кодированный хотя бы в два прохода по ключу не меньше чем из 8 знаков. Жалко тратить жизнь, хотя может быть и очень интересно:)

Насколько я понимаю "в взломах" (как говорила одна мадам: "я отлично разбираюсь в живописи: я 7 лет замужем за художником была"), так вот, сам файл никто взламывать не будет. Будут работать над механизмом, который шифрует/дешифрует этот файл.
48. dusha0020 1103 22.01.12 01:49 Сейчас в теме
Все работает. Зашифровал doc файл семеркой, вывесил здесь, скачал, расшифровал восьмерочной обработкой и читаю бувы вижу все форматы. TCmd пишет файлы идентичны.
52. пользователь 23.01.12 13:28
Сообщение было скрыто модератором.
...
53. petrovaUL 24.01.12 07:23 Сейчас в теме
Согласна, интересаня обработка, очень пригодится если в организации не все документы для общего доступа, то очень нужная вещь. Плюсую. Спасибо.
54. пользователь 24.01.12 16:28
Сообщение было скрыто модератором.
...
55. avavadim 24.01.12 23:49 Сейчас в теме
Спасибо за разработку. ее можно использовать кстати в 7-ке для шифрования внешних процедур которые могут храниться в текстовых файлах...
56. Trium 25.01.12 00:13 Сейчас в теме
Интересный вопрос тут подняли надо будет посмотреть.
57. yalo 08.02.12 13:52 Сейчас в теме
Надо обязательно попробовать! Спасибо!
58. commo 10.02.12 13:59 Сейчас в теме
в хозяйстве все пригодится. спасибо
59. dmbal 724 11.02.12 15:34 Сейчас в теме
Однозначно спасибо!! Пригодится наверняка.
60. serega3333 11.02.12 16:02 Сейчас в теме
61. samamoiloff 861 22.05.12 15:05 Сейчас в теме
(0)Здравствуйте. Придумываю средство искаженного представления строковых данных. Что-то вроде Вашего. Читаю Вики и проч...
А в Вашем алгоритме, правильно ли я понимаю, количество проходов применяется одинаковое для всех символов исходной строки? По логике результат - смещение кода символа будет одинаков у всех символов другой результирующей строки? Вот если мы к примеру шифруем поле наименование справочника Организации и ИНН организации, то если злоумышленник :) знает ИНН, ему будет все равно, сколько проходов совершил алгоритм? Он может вычислить ключ по алгоритму и смещению вроде бы? Первый символ наименования будет одинаково смещен, как и первый символ ИНН? Второй символ наименования будет одинаково смещен, как и второй символ ИНН? Я правильно понял?
Я вот голову ломаю,алгоритм шифрования я закрыть не смогу, вероятно, что и некоторые исходные строки будут известны, типа ИНН. Тут скорее всего придется как-то использовать соседние символы, потому что если ограничиваться смещением, то в общем-то алгоритм не важен, если знаешь исходную строку...
64. dusha0020 1103 22.05.12 15:35 Сейчас в теме
(61) samamoiloff, Да в общем-то. Количество проходов это количество смещений. Один проход - смещение относительно порядкового символа ключа, второй проход - результат предыдущего смещения мы смещаем относительно следующего по порядку символа и т.д. Например при трехпроходном кодировании первый символ текста шифруется через первый второй и третий символы ключа, второй символ текста через второй третий и четвертый символы в ключе и так далее. То есть если алгоритм шифрования открыт и количество проходов известно, то по известному слову подобрать ключ не так сложно. Если же количество проходов такой же независимый параметр шифра как и ключ, то подбор ключа будет сложнее, но нужно всего лишь пронализировать все практически возможные количества проходов. А их едва-ли из соображений быстродействия может быть больше 6-8.
А вообще Шеннон уже давно математически вывел требования к абсолютному шифру, дешифровка которого действительно невозвможна, но длина ключа для него равна длине шифруемого текста!
Так что при наличии знания и желания любые наши потуги на основании короткого ключа теоретически могут быть расшифрованы:)
66. Kurt 110 22.05.12 16:29 Сейчас в теме
(64)
А их едва-ли из соображений быстродействия может быть больше 6-8.

А вот я тут подумал... почему нет? Мы можем ключ сам на себя со сдвигом наложить нужное количество раз... и уже использовать готовый и длинный, за один проход. Как-то так. Если не прав, то поправьте. :-) ...да будет там заморочка с "концом" ключа, но помоему она решаема, типа ключ "начало" и ключ "дальнейшее продолжение".
68. dusha0020 1103 22.05.12 17:12 Сейчас в теме
(66) Kurt,
А вот я тут подумал... почему нет?
Хорошая идея - удлиннение ключа. Но опять же, если смотреть с позиции теории информации степень энтропии шифра не увеличится, так как мерой увеличения длины выступает число проходов. Чем больше внешних и случайных параметров используются при шифровании, тем выше стойкость шифра, а в данном случае при открытом алгоритме все манипуляции с ключем видны и не усложняют дешифровку. Если же алгоритм кодирования закрыт, то сам алгоритм становится источником информации закрывающим исходный текст и увеличение сложности алгоритма, безусловно приведет к повышению стойкости шифра.
В идеале, мне кажется, эффективнее все-таки повышать криптостойкость делая вероятность появления каждого символа в зашифрованном тексте одинаковой (максимизация энтропии). Задумывался над такими алгоритмами вроде кода Шеннона-Фано, но здесь нужен предварительный анализ шифруемого текста и какая-то увязка этого анализа с будущим ключем. Самое противное здесь то, что исходные частоты символов - являются мощным источником информации для шифрования, но после шифрования теряются и шифрованный тест становится однородным, а значит мы потеряем эту информацию при передаче и не сможем расшифровать.
73. Kurt 110 22.05.12 19:36 Сейчас в теме
(68)
В идеале, мне кажется, эффективнее все-таки повышать криптостойкость делая вероятность появления каждого символа в зашифрованном тексте одинаковой (максимизация энтропии).

Таки этого можно достичь шифруя текст самим себя со сдвигом, с каким-либо шагом, или же куском этого текста (размер куска допустим зависит от первой буквы текста, которую мы шифруем только ключём, или от второй :-), которую мы шифруем уже и ключём и первой буквой текста). Одна буква поделится своей вероятностью с другой буквой, при нескольких наложениях (со сдвигом вперёд обязательно, иначе не расшифруешь), и не раз. Вероятность в тексте должна выровниться + ключем пройтись напоследок (и можно сзаду наперёд). Правда начало текста, ввиду малой энтропии, всё-таки остается под угрозой, и возможностью разматывания этого клубка (т.е. дешифровки).

(70)
ну а перевод десятичного числа в двоичное задача хрестоматийная... и переводим по 8 штук в десятичное число - тоже банальная задача.

..ээээ. Я тогда в школе болел :-))))))))) ...и подозреваю, что на 1С это будет далеко не Формула-1. Но результат должен быть весьма "прикольный".
samamoiloff; +1 Ответить
74. samamoiloff 861 22.05.12 19:49 Сейчас в теме
(73) В общем, я пробую ключ делить пополам и шифрую 2-х уровнево.
(0) Использую Вашу обработку для эксперимента?
75. dusha0020 1103 22.05.12 20:05 Сейчас в теме
(74) samamoiloff, Конечно используйте. Никаких ограничений на использование в целом и по частям для данной обработки нет. Мне даже интересен будет Ваш опыт, если поделитесь:)
77. samamoiloff 861 22.05.12 20:33 Сейчас в теме
(75)dusha0020,
Конечно! Почту за честь, как говорится. Сейчас, дорисую...
79. samamoiloff 861 22.05.12 21:44 Сейчас в теме
(75)dusha0020,
Вот, что получилось:
Я в качестве эксперимента оставил только 2 процедуры ОбработатьТекст и Кодировать, ну и вызов по кнопкам -


Передаю сразу оба текста, 1 и 2. В дальнейшем каждому текстовому элементу-очередной единице шифрования надо присваивать очередной номер. От этого номера будет зависеть количество проходов для шифрования самого ключа.
76. dusha0020 1103 22.05.12 20:11 Сейчас в теме
(73) Kurt,
которую мы шифруем уже и ключём и первой буквой текста
Это не получится. К моменту расшифровки Вы не сумеете восстановить первую букву только из ключа. Ключ и количество проходов - это источник информации для расшифровки. Если Вы будете шифровать еще какой-либо информацией, то ее также нужно будет передать (или иметь заранее) для успешного дешифрования. Функцию перевода десятичных в двоичные и наоборот я напишу и выложу. Очень все таки любопытно сложение по модулю 2 использовать... Если возьметесь с удовольствием оценю результаты.
89. Kurt 110 23.05.12 11:09 Сейчас в теме
(76)
К моменту расшифровки Вы не сумеете восстановить первую букву только из ключа. Ключ и количество проходов - это источник информации для расшифровки.

Ну да. Я всё, что можно на вскидку, в кучу намешал..
Если мы шифруем ключём, то первую букву мы легко получаем - ибо она только ключем и шифруется (это я такой вариант предлагаю). К моменту расшифровки второй буквы - первую мы уже получили, к моменту расшифровки третьей - у нас уже есть вторая... не понял в чём проблема? Если 6 наложений ключа, то 5 снимаем, а уж потом берёмся за сам текст. - И это ещё не шифровка, так сказать текстом... это шифровка предшествующей буквой. Хотя можно и все 6 сразу снять. А потом восстановить последующий текст, ибо первая буква уже есть - а вторая, третья и т.д. зашифрованы предшествующей.

Если примешивали сюда и сам текст (НО с обязательным условием со сдвигом, т.е. не с первой позиции начинаем накладывать) - то и в процессе расшифровки начального куска - начинаем и получать текст (может быть и просто КУСОК - длина которого допустим зависит от пятой буквы ключа :-), или суммы 2,5,7 символа ключа), который уже с каким-то шагом, например с 8 позиции (тоже может зависить от символа ключа) - так же накладывается на исходный текст. Но это конечно исключительно для больших текстов, а не для полей 1С длиной 10-15 символов.

"..источник информации для расшифровки.." - но мы же не будем всем рассказывать какой у нас ключ? :-)))
78. dusha0020 1103 22.05.12 20:48 Сейчас в теме
(73) Kurt, Ну и обещанные функции. Действительно коротко и по ресурсам системы не очень напряжно:
Функция Degree(Аргумент,Показатель)
	//Степень аргумента
	Рез=1;
	Для ф=1 По Показатель Цикл
		Рез = Рез * Аргумент;
	КонецЦикла;
	Возврат Рез;
КонецФункции
//******************************************
Функция ДвоичнаяПоследовательность(Десятичное)
	//Переводит десятичное число в диапазоне от 0 до 255
	//в строковую бинарную последовательность от 00000000 до 11111111
	Рез = "";
    Пока Десятичное>0 Цикл
		Рез=Строка(Десятичное%2)+Рез;
		Десятичное = Цел(Десятичное/2);
	КонецЦикла;
	Возврат Формат(Рез,"Ч(0)8");
КонецФункции
//******************************************
Функция ДесятичноеИзДвоичного(Двоичное)
	//Возврат из последовательности 1 и 0 десятичного числа
	Рез = 0;ф = 0;Дл = СтрДлина(Двоичное);
	Пока ф<Дл Цикл
		Рез = Рез + Degree(2,ф)*Число(Сред(Двоичное,Дл-ф,1));
		ф=ф+1;
	КонецЦикла;
	Возврат Рез;
КонецФункции
Показать
MaxDavid; Kurt; +2 Ответить
93. Kurt 110 23.05.12 12:56 Сейчас в теме
(78) Ну вот тогда Вам и функции "Сложение по модулю 2" :-). Тоже думаю не очень напряжно:
//******************************************
Функция СПМ2(БитТ,БитК)
	//Сложение битов по модулю 2
	//БитТ - бит текста, БитК - бит ключа
	Рез="1";
	Если БитТ = БитК Тогда
		Рез =""+0;
	КонецЕсли;
	Возврат Рез;
КонецФункции
//******************************************
Функция СложитьДвоичныеБайты(ДвоичноеТ,ДвоичноеК)
	//Складывает по М2 два двоичных байта побитно (проверку на 8 бит в каждом не делаю, считаю по умолчанию)
	//ДвоичноеТ,ДвоичноеК - текст бинарная последовательность от 00000000 до 11111111
	//в результате возвращает строковую бинарную последовательность от 0 до 11111111 (Без ведущих нулей)
	Рез = ""; ф=0; БитТ=""; БитК="";
	Для Ф=1 По 8 Цикл
		БитТ=Сред(ДвоичноеТ,ф,1);
		БитК=Сред(ДвоичноеК,ф,1);
		Рез = Рез + СПМ2(БитТ,БитК);
	КонецЦикла;
	Рез=0+Рез; //Думаю уберёт ведущие нули и ускорит преобразование в Десятичное
	Возврат Рез;
КонецФункции
//******************************************
Показать

Не проверял. Если есть косяк - намекните.
94. dusha0020 1103 23.05.12 14:35 Сейчас в теме
(93) Kurt, Косяков не вижу. А вот сложение по модулю 2 можно делать проще:
БитСМ2 = (БитТ+БитК)%2;//Если оба бита числовые, или перевести в числа перед сложением.

Для 1С-ки здесь возникает еще один трабл. Проблема нулевого байта. Если в результате шифрования у нас получится байт целиком из нулей, то Симв(0) ничего не вернет. Ничего не запишет в строку и с этого места мы потеряем способность расшифровывать.
У меня обязательно через n символов попадается нулевой байт и с него дешифровка становится невозможной. То есть нужно как-то обходить эту ситуацию при текстовом кодировании.
У меня такой код все делает. Переменная действие вроде бы утрачивает смысл, так как одним сложением кодируем, а другим декодируем, но с учетом того, что требуется особая обработка нулевых байтов может в ней и будет смысл.
Функция КодироватьДвоично(Символ,Ключ,Позиция,проход,Действие)
	Позиция = ?(Позиция>СтрДлина(Ключ),1,Позиция);
	ДвСимв = ДвоичнаяПоследовательность(КодСимв(Символ));
	Рез = "";
	Для ф=1 По 8 Цикл
		СМ2 = (Число(Сред(Ключ,Позиция,1))+Число(Сред(ДвСимв,ф,1)))%2;
		Рез = Рез + Строка(СМ2);
	КонецЦикла;
	
	Рез = Симв(ДесятичноеИзДвоичного(Рез));
	Если Проход<КвоПроходов Тогда
		Рез = КодироватьДвоично(Рез,Ключ,Позиция+1,проход+1,Действие);
	КонецЕсли;
	Возврат Рез;
КонецФункции
//**************************************************
Процедура ОбработатьТекстДвоично(Действие)
	Ключ = ""; Рез="";
	//Текст = OemToAnsi(Текст);
	Если ВвестиСтроку(Ключ,"Пароль",30)=0 Тогда Возврат КонецЕсли;
	ы=1;Ключ = OemToAnsi(СокрЛП(Ключ));ДвКлюч = "";
	Для ф=1 По СтрДлина(Ключ) Цикл
		ДвКлюч = ДвКлюч + ДвоичнаяПоследовательность(КодСимв(Сред(Ключ,ф,1)));
	КонецЦикла;
	Для ф=1 По СтрДлина(Текст) Цикл 
		Рез = Рез+КодироватьДвоично(Сред(Текст,ф,1),ДвКлюч,ы,1,Действие);
		Если ы=СтрДлина(ДвКлюч) Тогда 
			ы=1;
		Иначе
			ы=ы+1;
		КонецЕсли;
	КонецЦикла;
	Текст = Рез;
КонецПроцедуры
Показать
98. Kurt 110 23.05.12 14:55 Сейчас в теме
(94)
БитСМ2 = (БитТ+БитК)%2;//Если оба бита числовые, или перевести в числа перед сложением.

Я конечно дремучий... Я не знаю что это за конструкция (%), я не знаю как оно работает. Я видел в модулях 1С, что программисты 1С используют % - но ничего не нашел про это в Книжках по 1С :-( ...как будто это само собой разумеющееся. (развожу руками)
100. dusha0020 1103 23.05.12 17:28 Сейчас в теме
(98) Kurt, (99) Kurt, % Это остаток от целочисленного деления. Целочисленное деление это сколько раз (именно целых раз) знаменатель помещается в числителе.
В случае с битами:
(0+0)/2 = 0 (без остатка или остаток 0)
(1+0)/2 = (0+1)/2 = 0 (и 1 в остатке!)
(1+1)/2 = 1 (снова без остатка то есть остаток 0)

Представленный код, действительно не решает проблемы нулевых байтов. Кстати и в исходном коде обработки была подобная проблема, там было написано так:
ПК =  Код + КодКлюча - 255;
                Если ПК<1 тогда
			КодШифр = ПК + 255;
		Иначе
			КодШифр = ПК;
		КонецЕсли;
То есть когда при сложении кодов символа и ключа за минусом 255 мы получали 0 то присваивали кодированному символу 255 номер, а при расшифровке
ПК = Код - КодКлюча + 255;
		Если ПК>255 Тогда
			КодШифр = ПК - 255;
		Иначе
			КодШифр = ПК;
		КонецЕсли;
Делали нечто обратно, чтобы избежать появления симолов с нулевым кодом.
101. Kurt 110 23.05.12 18:45 Сейчас в теме
(100) спасибо за разъяснение по %.

Да. С Симв(0) действительно проблема, да и с КодСимв("") - тоже, ничего нет, а он выдаёт 0.
(может в своё время моя "расшифровка" именно по этой причине сыпалась, что при шифровке были выкинуты нулевые значения, а не из-за ограничения на длинну строк? Я в то время про ноль и не задумывался)
Да и у Вас этот метод не спасёт, потому как если был 0, то он превращается в 255, а если был 255 .. то и нехай 255. А это были разные "символы"... при расшифровке напутает.

Вот сижу читаю v7: Симв(0)
И опять же выход предлагается через всякие "внешние" вещи. :-(
Вот ещё приблизительно на ту же тему Симв(0)=
102. Kurt 110 23.05.12 19:12 Сейчас в теме
(101) Да и вообще подумал.. у нас же эта система счисления 255 выходит искусственная. Мы сами контролируем верхний порог (или 0, как Вам будет угодно).
Т.е. если исходить из того, что Символа "0" нет и он вообще не используется (его нельзя использовать), то нам нужны значения с 1 до 255.

От 0 мы отказаться не можем так как в результате избыточных вычислений мы всё равно будем его получать. Но мы можем ограничить верхний порог контроля. В таком случае он должен быть 254! У нас на выходе будут числа 0-254... да? А потом мы делаем Симв(х+1) и получим символы с 1 до 255, что и требовалось. И никаких нулевых значений.

Вот до такого я додумался.
103. dusha0020 1103 23.05.12 20:05 Сейчас в теме
(102) Kurt, Думаю и так можно. У меня
Если ПК<1 тогда
КодШифр = ПК + 255;
Множество значений ограничено снизу, Вы выбрали ограничить сверху. Почему бы и нет?:)
Самое интересное то, что в большинстве языков программирования (ну тех в которых я хотя-бы немного писал) проблемы с нулевым байтом нет. Поэтому любой даже скриптовый язык, легко запишет и прочитает нулевой байт, и кодирование методом СМ2 файлов не требует таких заморочек, потому что для бинарной обработки нам полюбому нужен другой язык, отличный от 1С.
99. Kurt 110 23.05.12 15:39 Сейчас в теме
(94)
Если в результате шифрования у нас получится байт целиком из нулей, то Симв(0) ничего не вернет.

Т.е. насколько я понял представленный код этой проблемы не решает? (Или я не понял?)
95. Kurt 110 23.05.12 14:38 Сейчас в теме
(93) Kurt, однако... при взломе "Сложения по модулю 2" на последовательности "нулевых" символов - мы сразу получаем ключ (на бинарной последовательности единиц - инвертированный ключ). Таки всё равно надо будет извращаться с несколькими проходами :-( Или искусственным удлиннением и трансформированием ключа из исходного... хм.

С другой стороны ключ даётся только тем людям которые будут шифровать или расшифровывать - и он и так выходит в открытом виде, а остальным этот ключ давать ниизяяя.
97. dusha0020 1103 23.05.12 14:55 Сейчас в теме
(95) Kurt,
ключ даётся только тем людям которые будут шифровать или расшифровывать

Если вообще говорить о шифрах - то у них две слабости: алгоритмы шифрования - дешифрования и ключи.
Причем потеря ключа отнюдь не так страшна, если не утрачен алгоритм - просто не зная как ключ применить к шифру мы ничего не добьемся. Потеря алгоритма - намного страшнее, понятно что в этом случае дешифровка становится вопросом времени, но какого времени также зависит от сложности алгоритма. Допустим расшифровка "Бомбой" приказов немецким подводным лодкам не имела ценности, пока на дешифровку уходили недели.
Только усовершенствовав саму машину и алгоритмы криптоанализа Тьюринг добился приемлемой скорости дешифрования.
А ключей англичане не знали никогда - захватили "Энигму" и узнали алгоритм.
87. dusha0020 1103 23.05.12 10:18 Сейчас в теме
(73) Kurt, Провел частотный анализ текста пояснения к этой разработке до и после шифрования. В чем-то Вы правы - после шифрования частоты выравниваются, но не так сильно как хотелось бы.
Графики исходного текста и результата 3-х проходного кодирования.
А вот так ли эффективно выравниваются частоты на глаз не определить:)
Прикрепленные файлы:
91. Kurt 110 23.05.12 11:40 Сейчас в теме
(87)
А вот так ли эффективно выравниваются частоты на глаз не определить:)

Главное, я думаю, что такое шифрование даёт перекос частот! Т.е. если буква "П" в исходном варианте имела порядка 50 штук (или в чём там?).
То после шифрования мы имеем знак "<" в количестве 50 штук - который в свою очередь "по стечению обстоятельств" ранее мог быть и "А" и "Г" и "Ь"... )))))))))))))
К тому же.. а вы обратили внимание на ЛЕВУЮ шкалу? Помоему результат более чем хорошь. Максимальные повторения 82 против 400! Выравнивание так сказать в 5 РАЗ.
65. Kurt 110 22.05.12 16:15 Сейчас в теме
(61)
Тут скорее всего придется как-то использовать соседние символы

Я в (12) вскользь коснулся этой темы. При этом могут возникнуть "не печатные" символы... А при кодировании числовых полей (где кроме цифр ничего использовать нельзя) возможно использование только десятиричного ключа, с избыточным прибавлением НЕ через 255 (таблицу символов), а через 10, чтобы на выходе также получить цифру.

Насчёт ИНН... Так как скорее всего большинство ваших клиентов из Вашей местности, то начальные 3-4 цифры у всех одинаковы и соответственно известны, таким образом и первые 3-4 знака ключа будет легко определить :-)

Вот ещё один не безинтересный метод:
Сложение по модулю 2

Первое наложение ключа шифрует информацию, повторное наложение возвращает её к исходному виду (в разделе "Булева алгебра" обратите внимание на первую таблицу a, b, a+b). По секрету :-) используется у наших военных с ключём 256 бит. И говорят стойкость шифра умопомрачительная. Но это при том условии, что передается речь (в цифре, например) и вычислить исходную информацию, а тем более её начало передачи очень затруднительно (потому как в отсутствии сигнала всё-равно что-то передается - мусор). Но для использования этого метода нужно байт разложить на биты... воооотъ.
70. dusha0020 1103 22.05.12 17:21 Сейчас в теме
(65) Kurt, Сложение по модулю 2 - действительно криптографически весьма интересная штука. Дело в том, что в отличие от букв 1 и 0 распределены в произвольном потоке практически равномерно, а это значит, что при столь же случайном ключе уловить систему в шифрованном потоке практически impossible:)!
Но для использования этого метода нужно байт разложить на биты... воооотъ

Это то как раз таки не сложно. КодСимв() - возвращает номер байта десятичным числом, ну а перевод десятичного числа в двоичное задача хрестоматийная... Ну а дальше шифруем сложением по модулю 2 поток нулей и единичек и переводим по 8 штук в десятичное число - тоже банальная задача. А там Симв() - и получаем зашифрованный поток.
71. samamoiloff 861 22.05.12 18:29 Сейчас в теме
(70)dusha0020,
как думаете, вроде все логично, я про шифр ключа еще одним ключом? Зная зашифрованное и алгоритм, мы узнаем ключ, но он будет так же - результат шифрования, где будет известен только алгоритм и неизвестны исходная строка и ключ.
62. samamoiloff 861 22.05.12 15:21 Сейчас в теме
Я тут подумал, что возможно, чтобы количество проходов сыграло свою роль, его тоже нужно менять каким-то образом...
63. samamoiloff 861 22.05.12 15:30 Сейчас в теме
Идеал - это ГОСТ 28147-89. Но как это на "человеческом" языке выразить в 1С, к своему стыду не знаю... :(
Будем искать, или учиться, еще не решил :)
67. itar59 87 22.05.12 16:36 Сейчас в теме
Генерируем случайное число N;
генерируем N случайных значений.
Далее N проходов со смещением на N-ое значение
69. samamoiloff 861 22.05.12 17:17 Сейчас в теме
(67) А расшифровывать потом как?
(66) Да-да, мне тут такая мыслишка пришла. Если поделить ключ пополам и шифровать первую половину второй. Злоумышленник :) знает кучу ИНН, но расшифровывает каждый раз очередной ключик, который опять-таки зашифрован и не подходит для других полей, потому что исходника он УЖЕ не знает! Уже можно ему рыдать...
72. samamoiloff 861 22.05.12 19:04 Сейчас в теме
Не совсем. Чтобы расшифрованный ключ был разный, его каждый раз нужно шифровать по-разному. Или в разное количество проходов.
80. samamoiloff 861 22.05.12 21:53 Сейчас в теме
2. На исходную!


Вызываем процедуру ОбработатьТекст(Действие,НомерТекста) для каждого номера.
И для каждого номера на форму выводим получившийся ключ - результат шифрования первой половинки самого ключа им самим (второй его половинкой). Они естесственно разные.



Ну и результат шифрования разный :), конечно.
81. samamoiloff 861 22.05.12 21:55 Сейчас в теме
82. samamoiloff 861 22.05.12 21:58 Сейчас в теме
83. samamoiloff 861 22.05.12 22:00 Сейчас в теме
Тело кодирования я упростил. Ведь если известна исходная строка, которая кодируется и алгоритм будет открыт, то сильно упираться в нем смысла вроде нет...
85. samamoiloff 861 22.05.12 22:32 Сейчас в теме
Если знать, что 1 значение арбуз, а второе баклажан на 100%, можно ли узнать третье значение, зашифрованное таким способом?
86. dusha0020 1103 23.05.12 09:39 Сейчас в теме
(85) samamoiloff, Принцип работы я понял. Ключ шифрующий сам себя, а номер текста управляет количеством проходов. Интересно получилось, вариант очень хорош тем, что не позволяет брутальной атакой вести посимвольный подбор ключа на известных данных. Если при 2-х проходном кодировании ключ можно ламать двойками, при трех проходном - тройками символов то здесь бесперспективняк, ключ нужно знать целиком:)
Признаю, что Вы улучшили мой алгоритм настолько, что перспективы взлома по известным значениям превосходят мои скромные познания в криптографии:) Могу сказать что узнать 3 значение по известным первым двум при неизвестном алгоритме шифрования -практически не реально. Также не реально, если длина ключа превосходит общую длину известных значений. При невыполнении этих условий - взлом возможен, а вот насколько он сложен не могу сказать точно. Просто скажу что очень-очень-очень сложно и дорого.
Дешевле и быстрее взять паяльник и попросить Вас сказать ключ:)
Оставьте свое сообщение