Пример шифрования данных.

0. coder1cv8 3484 20.11.08 11:33 Сейчас в теме
Обработка представляет собой простой пример шифровки/дешифровки произвольного текста, без использования внешних библиотек, средствами Windows (c помощью объекта «CAPICOM.EncryptedData»). Если capicom.dll всё же нет в Вашей версии Windows - то её можно скачать здесь же.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. coder1cv8 3484 20.11.08 11:33 Сейчас в теме
Ей также можно дешифровать строки после моего обфускатора, только т-с-с-с! )
67. teorver 19.02.15 10:37 Сейчас в теме
(1) Один умник до меня сделал обфускацию общего модуля... теперь сижу и парюсь, не могу обратно все вернуть, а очень надо, ибо нужны изменения в этом модуле. Ума не приложу как де-обфускацию сделать :(
2. vde69 913 20.11.08 12:20 Сейчас в теме
давно хотел поиграться на эту тему, а тут повод :)
конечно все простенько

кстати можно нельзя шифровать несколькими ключами?
3. coder1cv8 3484 20.11.08 12:34 Сейчас в теме
(2) Что значит несколькими? Типа массива из нескольких строк?... Нет, насколько я знаю...
4. vde69 913 20.11.08 12:39 Сейчас в теме
(3) нет я имею в виду шифрование с резервным ключем, тоесть есть 2 ключа (разных), мы шифруем и расшифровать можно любым из этих двух.

например шифрование дисков так сделано, в случае утраты ключа можно расшифроврать ключем администратора
6. coder1cv8 3484 20.11.08 12:45 Сейчас в теме
(4) Вот насчет этого не в курсе... Вот описание Crypto API в msdn: http://msdn.microsoft.com/en-us/library/aa380254(VS.85).aspx там есть ответ, я в англицком не силен, к сожалению! (
7. vde69 913 20.11.08 12:51 Сейчас в теме
(6) похоже, что можно... хотя надо будет попробовать, может вечером поиграюсь
Тут можно прикольную систему сделать...
5. vde69 913 20.11.08 12:41 Сейчас в теме
кстати EncryptedData - не штатная библиотека, (укажи в загаловке ссылку на скачивание) хотя и халявная
10. coder1cv8 3484 20.11.08 12:56 Сейчас в теме
(5) Вроде же входит в состав Windows?...
ЗЫ: У кого нету можно скачать тут: http://www.microsoft.com/downloads/details.aspx?FamilyID=860ee43a-a843-462f-abb5-ff88ea5896f6&DisplayLang=en
14. Noy 1066 20.11.08 14:36 Сейчас в теме
Учитывая (10) думаю что обработку надо переименовать - "штатно" уже не катит...
15. coder1cv8 3484 20.11.08 14:46 Сейчас в теме
(14) А кто бы подсказал в каких виндах этой длл-ки нету?... ) Похоже от ХР и выше?...
16. Noy 1066 20.11.08 15:56 Сейчас в теме
(15) у меня на ноуте ХР СП3 - длл-ки нет...
17. coder1cv8 3484 20.11.08 17:19 Сейчас в теме
(16) Хм, странно... У меня XP Prof SP2 dll-ка есть.
Ладно, в любом случае, шапку переименовал и сюда библиотеку положил )
8. MRAK 716 20.11.08 12:54 Сейчас в теме
При нажатии "дешифровать" выдает "Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса"
9. MRAK 716 20.11.08 12:55 Сейчас в теме
а, ясно... качать надоть...
11. coder1cv8 3484 20.11.08 13:04 Сейчас в теме
Для тех у кого по каким-то причинам (ха-ха) не получается скачать с сайта microsoft, добавил dll-ку в шапку.
12. MRAK 716 20.11.08 13:50 Сейчас в теме
Теперь:
{Форма.Форма(29)}: Ошибка при вызове метода контекста (SetSecret): Произошла исключительная ситуация: Параметр задан неверно.
Пытаюсь расшифровать код "Обфускация кода 1С")))
elena_angren77@mail.ru; +1 Ответить
13. coder1cv8 3484 20.11.08 14:16 Сейчас в теме
(12) Дык, задавай ключ верно, что ж ты хочешь! )
18. luns 20.11.08 19:05 Сейчас в теме
coder1cv8 красвчик!!! Всегда плюсую авансом...
19. Душелов 3916 21.11.08 01:34 Сейчас в теме
Вот из-за таких, как он decode для 1С-ки не нужна будет :)
20. coder1cv8 3484 21.11.08 09:52 Сейчас в теме
Добавил генерацию ключа :)
21. Abadonna 3862 24.11.08 08:18 Сейчас в теме
(0) Я тут от не фиг делать написал внешнее приложение для шифрования. На разработку, по моим понятиям, как-то не тянет, если хочешь - кину тебе на мыло, прицепишь еще файлик ;)
(тоже с генерацией ключа - GUID)
luns; Olga_siberia; Yasen; vasilykushnir; JohnyDeath; ded00786; coder1cv8; +7 Ответить
22. coder1cv8 3484 24.11.08 09:30 Сейчас в теме
(21) Давай, кидай. Отчего же не прицепить? )
23. coder1cv8 3484 24.11.08 09:32 Сейчас в теме
+(22) coder1cv8 собака yandex.ru
24. vde69 913 24.11.08 18:42 Сейчас в теме
ну собствено как я и говорил, ты меня сподвиг на подвиг :) сделал идентификацию изменения критических полей элементов базы по хешу http://infostart.ru/projects/2964/
25. German 874 25.11.08 09:45 Сейчас в теме
а зная закодированный фрагмент и результат можно вычислить ключ?
26. coder1cv8 3484 25.11.08 10:07 Сейчас в теме
(25) Ну насколько я знаю, абсолютно надежных алгоритмов шифрования нет ) Кстати, ты заметил, каждое повторное шифрование одних и тех же данных, одним и тем же ключем, дает различающийся результат.
ЗЫ: Вот здесь http://www.inattack.ru/article/472.html можно почитать про Crypto API на русском.
27. vde69 913 25.11.08 10:22 Сейчас в теме
(25) если это MD5 то практически нет (а там пожно юзать MD5), есть статьи по этому, в отдельных случаях подломать можно, но это исключение.
ХЕШ MD5 ломают по таблицам извесных хешей, кстати виндовые пароли именно на хешах MD5 базируються
28. ded00786 346 25.11.08 11:28 Сейчас в теме
А как насчет графического шифрования?
Это так, информация к размышлению ;)
29. coder1cv8 3484 25.11.08 11:32 Сейчас в теме
Добавил утилитку написанную Abadonna. Плюсики ему можно поставить здесь же в комментах :)
30. ded00786 346 25.11.08 11:37 Сейчас в теме
32. vladnet 356 26.12.08 09:16 Сейчас в теме
У меня вот такая ошибка: {Форма.Форма(30)}: Ошибка при вызове метода контекста (Decrypt): Произошла исключительная ситуация: Встречено неверное значение тега ASN1.

Библиотеку выкачал, хотя она и была и зарегил.
33. Abadonna 3862 26.12.08 09:22 Сейчас в теме
(32) Ха! У меня как раз такое на 7-ке вчера было, когда восстанавливал зашифрованные пароли пользователей из базы по учету всякой хрени ;)
После шифрования заменил символы перевода строки на ‡ перед запистью в справочник (dbf), а при считывании - опять меняю ‡ на РазделительСтрок. Так взлетело
34. vladnet 356 26.12.08 09:36 Сейчас в теме
(33) В исходном тексте не встречается переводов строк (

Да ошибка вылетает как в обработке 1с, так и в твоем Encipher

Кстати а можно ли с помощью этой библиотеки шифровать 2 ключами:
один для шифрования, другой для расшифрования?
36. coder1cv8 3484 26.12.08 09:39 Сейчас в теме
(34) А перешифрование исходного текста не помогает?...
37. Abadonna 3862 26.12.08 09:39 Сейчас в теме
(34) Ты Encipher запусти, набери, например, слово "молоко" и зашифруй.
Сколько строчек внизу будет? ДВЕ! Думаешь я сам их там так разбил? Ни фига, там образовался при шифровании символ перевода строки
38. Abadonna 3862 26.12.08 09:41 Сейчас в теме
+(37) А вот при записи уже в базу (в дбф уж - точно) - происходит корявая запись в поле
39. coder1cv8 3484 26.12.08 09:42 Сейчас в теме
(37) По моим наблюдениям перевод строки в шифрованном тексте сделан исключительно для удобства. В частности, в моем "Обфускаторе" я совсем убираю переводы строк из шифрованного текста, на расшифровку это никоим образом не влияет!
40. Abadonna 3862 26.12.08 09:44 Сейчас в теме
(39) Ну попробуй ради интереса записать в dbf строку "мама"+РазделительСтрок+"папа" и погляди, что запишется
43. vladnet 356 26.12.08 09:46 Сейчас в теме
(40) пока совсем не понял при чем тут ДБФ?
Все происходит внутри одной обработки. Понимаю что там может быть разные переводы.
41. vladnet 356 26.12.08 09:44 Сейчас в теме
(34) Перешифрование не помогает, пробовал разные алгоритмы
(38) Так я ведь в ДБФ не пишу, пробовал убрать переводы не помогает (
42. Abadonna 3862 26.12.08 09:45 Сейчас в теме
(41) Ну не знаю.. Именно так я вчера победил её
44. coder1cv8 3484 26.12.08 09:46 Сейчас в теме
(41) Можно пример текста и ключ?...
45. vladnet 356 26.12.08 09:47 Сейчас в теме
(44)

молоко
237541f0ca3e432ba2dbac92485d1207
48. coder1cv8 3484 26.12.08 09:52 Сейчас в теме
(45) У меня проблема не воспроизводится.
(47) Та я шучу! )
31. logarifm 08.12.08 15:10 Сейчас в теме
35. coder1cv8 3484 26.12.08 09:38 Сейчас в теме
Действительно, получается что-то с зашифрованными данными не так...
46. coder1cv8 3484 26.12.08 09:47 Сейчас в теме
ДБФ тут ни причем! Это Абадонна о своем, о наболевшем наверно ))
47. Abadonna 3862 26.12.08 09:49 Сейчас в теме
(46) О каком наболевшем? У меня все базы на скуле, но не делать же на нем и вшивенькую базу по учету компов-паролей-логинов...
49. vladnet 356 26.12.08 09:52 Сейчас в теме
У меня почему то всегда эта ошибка вылезает, даже если ключом неправильным расшифровывать. Может и прав Абадонна, проблема в переводах строки, то что 1с автоматом заменяет переводы строк на свои, хотя вроде бы не должен. Сейчас проверю.
50. coder1cv8 3484 26.12.08 09:57 Сейчас в теме
51. vladnet 356 26.12.08 10:02 Сейчас в теме
Все извиняюсь неправильно понял то как работает обработка - думал что она при дешифровании берет нижнее поле дешифрует его и в верхнее поле засовывает, оказалось нужно копировать из нижнего в верхнее и потом только дешифровать.
52. coder1cv8 3484 26.12.08 10:04 Сейчас в теме
54. vladnet 356 26.12.08 10:14 Сейчас в теме
(52) (53) Ну я бы так сделал, чтобы тестировать было удобнее (
55. Abadonna 3862 26.12.08 10:16 Сейчас в теме
(54) И нашелся бы человек, который понял все правильно, и начал вставлять в верхнее окошко, и недоумевал бы почему оно не пашет :)))
56. vladnet 356 26.12.08 10:19 Сейчас в теме
(55) По любому )

А все таки не смотрели как можно шифровать 1 ключом, а расшифровывать другим. Один ключ публичный для расшифровки, другой для шифрования.
57. coder1cv8 3484 26.12.08 10:37 Сейчас в теме
(56) Crypto API это позволяет, а объект CAPICOM, в свою очередь поддерживает практически все возможности Crypto API. Как это реализовать на практике, я лично, не задумывался... Я здесь давал уже ссылку, по-моему, на описание Crypto API на русском, почитай...
ЗЫ: Это называется асимметричный алгоритм )
53. Abadonna 3862 26.12.08 10:12 Сейчас в теме
58. vladnet 356 26.12.08 11:01 Сейчас в теме
Читаю, пока не разобрался (
59. BOZKURT 13.01.09 00:51 Сейчас в теме
60. BOZKURT 13.01.09 00:55 Сейчас в теме
по поводу ошибки http://infostart.ru/profile/657/
я с третьей попытки допер.. :)
61. coder1cv8 3484 13.01.09 07:42 Сейчас в теме
(60) А я то думал это очевидно! :)
62. mov68 36 11.11.09 14:34 Сейчас в теме
Вопрос к спецам: есть ли шэш функции и как к ним обратиться, или плиз ссылку толковую на функции DDL.
63. xvas 29.09.11 14:28 Сейчас в теме
64. ms200999 22.11.11 14:24 Сейчас в теме
(63)Согласен.
Сохранил в закладки.
65. fr.myha 16.07.13 11:15 Сейчас в теме
Конечно код 1С можно защищать с помощью сложных программно-аппаратных решений(ключи, специальные продукты для защиты конфигураций), и соответственно, на защиту надо тратить немалые средства и время. А если стоимость разработки находится в переделах 3-5 тысяч рублей, тогда затраты на защиту превышают стоимость самой разработки.

Но не все так грустно. Достаточно вспомнить, что защита от взлома – понятие скорее экономическое. Поэтому для недорогих программных продуктов вполне можно создать защиту, по крайней мере, не дающую свободно тиражировать продукт.
Структура предлагаемой нами защиты следующая:
Внешняя компонента (ВК), выполняющая расшифровку Защищенного Модуля и его загрузку.
Стартовая Обработка (СО), выполняющая роль загрузчика ВК, а также хранящая Защищенный Модуль в виде макета (двоичных данных).
Защищенный Модуль (ЗМ) в зашифрованном виде, загружаемый только через ВК.

Технология защиты проста. Достаточно вынести программный код в модуль объекта ЗМ, организовать вызовы процедур из него, затем зашифровать ЗМ и загрузить в макет. Загрузка ЗМ может выглядеть следующим образом:

http://protect1c.ru/sites/default/files/protect_1c_pic1.png
Загрузка ВК (Addin.dll) и пример работы с защищенным модулем на странице http://protect1c.ru/modules-for-1c
Шифрование кода в ЗМ на странице http://protect1c.ru/upload4code (необходима регистрация на сайте protect1c.ru)
Данная технология работает только для традиционного толстого клиента 1С (обычного приложения )
Несколько замечаний по уязвимости, предваряя флейм на тему «это не защита».
Недостатком этого способа, как неоднократно отмечалось, является необходимость наличия расшифрованной обработки в виде файла на диске. Однако, на самом деле, недостаток этот не так велик, как кажется. Во-первых, время жизни этого файла сведено к минимуму, во-вторых, в модуле объекта ЗМ есть смысл написать следующую строчку:
http://protect1c.ru/sites/default/files/protect_1c_pic2.png
Такая строка не приводит к неработоспособности обработки, но затрудняет отладку. Не следует пренебрегать и стандартными способами защиты: установка пароля на код модуля объекта, поставка без исходных текстов, обфускация кода (http://nashe1c.ru/materials-view.jsp?id=121). При выполнении этих условий вскрытие кода становится достаточно непростой задачей.
Много говорилось о наличии в каталоге %TEMP% файлов с байт-кодом загруженного модуля. Нами было проведено несколько экспериментов на эту тему. В результате выяснилось, что по крайней мере платформа версии 8.2.16.352 не создает файл с кодом МОДУЛЯ ОБЪЕКТА(!). В %TEMP% только модуль формы. Если у кого-то есть другая обоснованная информация – welcome в комментарии.
В ходе экспериментов выяснилось, что оператор Выполнить(СтрокаКоманды) (естественно!) не приводит к компиляции выражения, переданного как СтрокаКоманды, то есть байт-код для этих команд отсутствует. Этот факт предоставляет широкое поле для экспериментов на тему защиты кода. В скобках замечу, что нам так и не удалось заставить выполняться команду выполнить внутри ВК, (злополучный method not supported by automation object () ). Если у кого-то получится – welcome в комментарии.
Достоинством данного подхода является отсутствие необходимости перекомпилировать код ВК, а также то ,что весь код может быть написан только на 1С. Единственной операцией вне рамок 1С программирования является шифрование ЗМ.
66. akifjevda 18.11.13 14:31 Сейчас в теме
Ребята, подскажите такую штуку. Шифрую строку по AES-128 (по факту - XML документ) с помощью capicom.dll и получаю зашифрованную строку. Как я понял она сразу обработана через base64. Проблема в том, что не могу расшифровать в php через mcrypt (алгоритм MCRYPT_RIJNDAEL_128). Даже если просто зашифровать mcrypt эту же строку, то зашифрованный вариант получается совсем другой чем в 1С или в Encipher.exe и примерно 2 раза короче. Где могут быть грабли?

PS Немного разобрался в вопросе. CAPICOM заворачивает свой ответ в структуру ASN.1 для передачи бинарных данных и передает в структуре и алгоритм шифрования и длину ключа и сам зашифрованный поток и похоже вектор инициализации. Но все равно не могу расшифровать стандартными средствами php эти данные, уже все варианты перепробовал.

Может кто-нибудь подсказать как указать capicom что надо шифровать в режиме ECB (чтобы не использовать вектор инициализации при расшифровке) и выдавать наружу только зашифрованный кусок, а не структуру???
68. timothy_ 2 01.12.17 22:16 Сейчас в теме
С текстом понятно, а как с числами дело обстоит?
Оставьте свое сообщение
Вопросы с вознаграждением