HMAC на встроенном языке 1С

Публикация № 591665

Разработка - Защита и шифрование

HMAC HMAC-SHA1 HMAC-MD5 HMAC-SHA256 HMAC-CRC32 HMAC без использования внешних компонет

24
Внешняя обработка хеширования данных HMAC (SHA-1, MD5, SHA-256, CRC-32) без использования внешних компонент.

Для получения HMAC в функцию передается первым параметром — ключ K. Второй параметр — сообщение text, которое будет передаваться отправителем и подлинность которого будет проверяться получателем. Третим параметром тип хеш-функции Hash (CRC32, MD5, SHA1, SHA256) . После чего на выходе мы получаем код аутентификации.

// Функция - HMAC
//
// Параметры:                            1
//  K     - ключ    в шестнадцатеричном виде - Строка
//  text - текстовое сообщение - Строка
//  Hash - Hash function (CRC32, MD5, SHA1, SHA256) - Строка
// Возвращаемое значение:
//     строка HMAC - Строка
Функция HMAC(Знач K, Знач text, Знач Hash)
	
	Перем kResult;
	Перем К0;
	
	//Если длина ключа K больше размера блока, то к ключу K применяем хэш-функцию
	Если СтрДлина(K)>128 Тогда 
		K = SHA1(K,Hash);
	КонецЕсли;	
	
	//1 Дополняем ключ K нулевыми байтами до размера блока. Размер блока хэш-функции SHA-1 равен 64 байтам.
	StringSHA1 = Лев(K,128);
	Для к = СтрДлина(K) По 128 Цикл
		StringSHA1 = StringSHA1 + "0";
	КонецЦикла;
	К0 = StringSHA1;
	
	//2 Выполняем операцию «побитовое исключающее ИЛИ» c константой 0x36.
	b = ПреобразоватьЧислоВДвоичнуюСИ(ПреобразоватьHexВДесятичнуюСИ("36"));
	
	к = 1;
	Пока к < 128 Цикл
		a             = ПреобразоватьЧислоВДвоичнуюСИ(ПреобразоватьHexВДесятичнуюСИ(Сред(StringSHA1,к,2)));
		с             = XOR(a,b);        
		StringSHA1     = Лев(StringSHA1,к-1)+с+Прав(StringSHA1, 128-к);
		к             = к + 2;
	КонецЦикла;
	
	StringSHA1 = Лев(StringSHA1,128);
	
	//3 Выполняем склейку исходного сообщения со строкой, полученной на шаге 2.
	Для к = 1 По СтрДлина(text) Цикл
		
		StringSHA1 = StringSHA1 + ПреобразоватьДесятичнуюСИВHex(КодСимвола(Сред(text,к,1)));
		
	КонецЦикла;
	
	//4 Применим хэш-функцию SHA-1 к строке, полученной на прошлом шаге.
	StringSHA1     = SHA1(StringSHA1,Hash);
	kResult     = StringSHA1;
	
	//5 Выполним операцию «побитовое исключающее ИЛИ» c константой 0x5c.
	StringSHA1 = К0;
	
	b = ПреобразоватьЧислоВДвоичнуюСИ(ПреобразоватьHexВДесятичнуюСИ("5c"));
	
	к = 1;
	Пока к < 128 Цикл
		a             = ПреобразоватьЧислоВДвоичнуюСИ(ПреобразоватьHexВДесятичнуюСИ(Сред(StringSHA1,к,2)));
		с             = XOR(a,b);        
		StringSHA1     = Лев(StringSHA1,к-1)+с+Прав(StringSHA1, 128-к);
		к             = к + 2;
	КонецЦикла;
	
	StringSHA1 = Лев(StringSHA1,128);
	
	//6 Склейка строки, полученной на шаге 4, со строкой, полученной на шаге 5.
	StringSHA1 = StringSHA1 + kResult;
	
	//7 Применим хэш-функцию SHA-1 к строке, полученной на прошлом шаге.
	StringSHA1 = SHA1(StringSHA1,Hash);    
	
	Возврат StringSHA1;
	
КонецФункции

Функция SHA1(Знач nString, Hash)    
	Хеширование        = Новый ХешированиеДанных(ХешФункция[Hash]);
	ТипhexBinary    = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "hexBinary");
	ДвоичныеДанные    = ФабрикаXDTO.Создать(ТипhexBinary,nString);
	Хеширование.Добавить(ДвоичныеДанные.Значение);    
	sign             = Хеширование.ХешСумма;
	sign 			 = СтрЗаменить(НРЕГ(sign), " ", "");
	Возврат СтрЗаменить(НРЕГ(sign), " ", "");
КонецФункции

Функция ПреобразоватьДесятичнуюСИВHex(Знач int)	
	Если int < 256 Тогда 
		Возврат Прав("00" + ПреобразоватьДесятичнуюСИВОднобайтовыйHex(int),2);
	Иначе
		Возврат Прав("0000" + ПреобразоватьДесятичнуюСИВДвухбайтовыйHex(int),4);
	КонецЕсли;                                 	
КонецФункции

Функция ПреобразоватьHexВДесятичнуюСИ(Знач hex)
	simbol     = СтрДлина(hex) - 1;
	dec     = 0;
	i         = 1;
	Пока simbol >= 0 Цикл
		simbolHex     = Сред(hex, i, 1);
		Res         = Найти("0123456789abcdef", simbolHex) - 1;
		dec         = dec + Res * Pow(16, simbol);
		simbol         = simbol - 1;
		i             = i + 1;
	КонецЦикла;   
	Возврат dec;
КонецФункции

Функция ПреобразоватьЧислоВДвоичнуюСИ(Знач int, rBit = 8)
	b = "";
	Для k = 1 По rBit Цикл
		m     = pow(2, rBit - k);
		bit = Цел(int / m);
		int = int - m * bit;
		b     = b + bit;
	КонецЦикла;                                
	Возврат b;                                     
КонецФункции

Функция XOR(a, b)    
	res = 0;
	s     = 1;
	к     = Мин(СтрДлина(a), СтрДлина(b));    
	Пока к > 0 Цикл        
		a1     = Сред(a,к,1);
		b1     = Сред(b,к,1);                     
		res = res + s * ?(a1=b1,0,Макс(a1,b1));
		s     = s*2;        
		к     = к-1;        
	КонецЦикла;     
	Возврат ПреобразоватьДесятичнуюСИВHex(res);
КонецФункции

Функция ПреобразоватьДесятичнуюСИВДвухбайтовыйHex(Знач int)	
	BinaryData = ПреобразоватьЧислоВДвоичнуюСИ(int, 11);	
	BinaryData = "110" + Лев(BinaryData,5) + "10" + Прав(BinaryData, 6);	
	DecimalData = ПолучитьДесятичноеЧислоИзДвоичного(BinaryData);	
	HexData = ПреобразоватьДесятичнуюСИВОднобайтовыйHex(DecimalData);	
	Возврат HexData;                                        	
КонецФункции

Функция ПолучитьДесятичноеЧислоИзДвоичного(b)	
	res 	= 0;
	s     	= 1;
	к     	= СтрДлина(b);
	Пока к > 0 Цикл        
		bit   = Сред(b,к,1);
		res = res + s * bit;
		s   = s*2;        
		к   = к-1;        
	КонецЦикла;                              	
	Возврат res;                             	
КонецФункции

Функция ПреобразоватьДесятичнуюСИВОднобайтовыйHex(Знач int)	
	hex = "";
	Пока int <> 0 Цикл
		p   = int % 16;
		hex = Сред("0123456789abcdef", p + 1, 1) + hex;
		int = Цел(int / 16);
	КонецЦикла;
	Возврат hex;                                           	
КонецФункции

Описпние алгоритма можно посмотреть в Википедии (https://ru.wikipedia.org/wiki/HMAC)

Битовые операции (//catalog.mista.ru/public/99739/)

Преобразование dec to hex и hex to dec https://ru.wikipedia.org/wiki/Позиционная_система_счисления

Представление кириллицы в UTF-8 http://i.voenmeh.ru/kafi5/Kam.loc/inform/UTF-8.htm

 

24

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

Наименование Файл Версия Размер
HMAC
.epf 8,43Kb
08.12.17
58
.epf 1.0 8,43Kb 58 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. i_lo 198 02.03.17 03:09 Сейчас в теме
Скопировал код из статьи в обработку. Ввожу ключ - 123, текст - sss, функцию - sha-1 и получаю hmac - da2a7fa2ac3e18892b6d0d24221285fa1030b03d. Разве он не должен быть, как на скриншоте 83е...?
Ввожу ключ - 123456, тест - Вышел зайчик погулять, функцию - sha-1 и получаю:

{ВнешняяОбработка.HMAC.МодульОбъекта(74)}: Ошибка при вызове метода контекста (Создать)
ДвоичныеДанные = ФабрикаXDTO.Создать(ТипhexBinary,nString);
по причине:
Несоответствие типов XDTO
по причине:
Ошибка проверки данных XDTO:
Значение: '24026036363636363636363636363636363636363636363636363636363­636363636363636363636363636363636363636363636363636363636363­63636363641244b44843543b2043743043944743843a2043f43e43b44343­b44f44244c' не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}hexBinary
formica32; +1 Ответить
2. Knup 24 06.03.17 22:48 Сейчас в теме
(1)
Разве он не должен быть, как на скриншоте 83е...?


нет, потому что ключ нужно передавать в шестнадцатеричном виде.

(1)
Ввожу ключ - 123456, тест - Вышел зайчик погулять, функцию - sha-1 и получаю:


Добавил поддержку кирилицы
3. Knup 24 06.03.17 22:48 Сейчас в теме
(1)
Разве он не должен быть, как на скриншоте 83е...?


в файле обработки есть пример
4. Операция1Ы 53 20.03.17 16:09 Сейчас в теме
на 8.2 работать не будет, там нет ХешированиеДанных.
5. Knup 24 22.03.17 01:12 Сейчас в теме
(4) к сожелению, да. Если хеширование sha1, тогда посмотрите http://infostart.ru/public/99739/ готовое решение.
6. user839842 07.10.17 13:58 Сейчас в теме
пробовал реализовать sha256 на приведенном примере. Но хеш получается другой. Нежели генерировать его в online конвертерах. В коде какая-то ошибка ?
formica32; +1 Ответить
7. Knup 24 23.10.17 20:08 Сейчас в теме
(6) Какой текст и ключ? У меня все работает как часы
8. V_K 03.11.17 13:21 Сейчас в теме
Функция HMAC(Знач K, Знач text, Знач Hash)

А если ключ "K" это строка,а не число. Как его зашифровать в этот параметр?
formica32; +1 Ответить
9. Knup 24 07.11.17 09:53 Сейчас в теме
(8) Вводите строку, все должно работать (:
10. primat 2095 06.12.17 15:17 Сейчас в теме
Владимир, подскажите, пожалуйста, если мне нужно хеширование SHA-384, то получится ли использовать вместо функции SHA1(Знач nString, Hash) из Вашего алгоритма функцию из этого примера? https://1c-programmer-blog.ru/programmirovanie/md5-v-1s.html
Например, ту, что использует библиотеку CAPICOM. Ведь хеширования SHA-384 у 1С нет в платформе, верно?
11. Knup 24 06.12.17 17:52 Сейчас в теме
(10) Да, все будет работать.
И да, хеширования SHA-384 в 1С нет (:
12. sudden 17.12.17 09:46 Сейчас в теме
Помогите пожалуйста.

АПИСекрет = "cEMBFULinI6rzG3mYKL45czc81pjU7BXbwImC1CFNXk";
Сигнатура = "8692c7a03a684765ac5fe04f04dd72c8POSThttps://localhost/api/getopenorders11223311FxOYiYfpMxmANj4kGJzg=="­
хмак = HMAC(АПИСекрет, Сигнатура, "SHA256");

На выходе 224c54567d42c5c3537bc305329694347fba095592094d6e88a2f342e788­ec1e

PHP:
$hmacsignature = base64_encode( hash_hmac("sha256", $signature, base64_decode( $API_SECRET ), true ) );
На выходе: v+YF+qxhVqB95bjKZB7bN7ywpTgoPUleObTmXNoEE2E=

Расскажите что не так?
13. Knup 24 19.12.17 11:01 Сейчас в теме
(12) Судя по всему в коде php у вас не просто получается hmac, а еще использует кодирование информации в 64-разрядный код. В публикации функция просто получает HMAC. Попробуйте получить по этим данным HMAC в онлайн генераторе и 1С. Результат будет одинаковый.
16. sudden 23.12.17 08:50 Сейчас в теме
(13) Все равно не то что-то. Секрет передать в каком виде надо?
АПИСекрет = "cEMBFULinI6rzG3mYKL45czc81pjU7BXbwImC1CFNXk";
Потому что даже убрав base64_encode из ПХП получая по
$hmacsignature = hash_hmac("sha256", $signature, base64_decode( $API_SECRET ), true ) ;
Ответы разные.
Остается только в обработке Первое: base64_decode( $API_SECRET ) и Второе: hash_hmac("sha256",$signature, Результат_Первого), В_Двоичных)
Но даже получив ответ от ПХП не двоичные данные, а в шестнадцатеричной кодировке = Разные.
18. Knup 24 25.12.17 09:37 Сейчас в теме
(16) Сложно сказать основываясь на вашем коде, что именно происходит. Предлагаю вам воспользоватся онлайн генератором https://www.freeformatter.com/hmac-generator.html. Введите туда
АПИСекрет = "cEMBFULinI6rzG3mYKL45czc81pjU7BXbwImC1CFNXk";
Сигнатура = "8692c7a03a684765ac5fe04f04dd72c8POSThttps://localhost/api/getopenorders11223311FxOYiYfpMxmANj4kGJzg=="­­;
и результат у вас получится аналогичный с результатом в 1С,

Повторюсь ищите причину в php, судя по всему там не просто хеширование в hmac
14. lamdth 11 20.12.17 11:30 Сейчас в теме
тоже интересно, можно ли как-то доработать обработку чтобы получить HMAC в Base 64
15. Knup 24 20.12.17 17:17 Сейчас в теме
(14) Конечно можно. Посмотрите на сайте https://infostart.ru/public/all/?st=t&public-filter%5Bsearch%5D=base64, или поищите в интернете. Скорее всего Вашу проблему уже кто-то решал.
17. sudden 23.12.17 08:54 Сейчас в теме
hash_hmac(""sha256"", $signature, $API_SECRET, false )
Даже так разное
19. vl-sher1 23.01.18 14:55 Сейчас в теме
Владимир, спасибо за процедуру. Она некорректно работала с кодировкой UTF8, я бы предложил сделать так (8.3):
Функция HMAC(Знач K, Знач text, Знач Hash, Кодировка = null ) Экспорт
	
	Перем kResult;
	Перем К0;
	
	Если Кодировка = null Тогда Кодировка = КодировкаТекста.UTF8; КонецЕсли;
// ...
//3 Выполняем склейку исходного сообщения со строкой, полученной на шаге 2.    БуферДвоичныхДанных
	ДвоичныйТекст = ПолучитьБуферДвоичныхДанныхИзСтроки(text, Кодировка, ложь);
	Для к = 0 По ДвоичныйТекст.Размер - 1 Цикл
		StringSHA1 = StringSHA1 + ПреобразоватьДесятичнуюСИВHex(ДвоичныйТекст[к]);
	КонецЦикла;
Показать


Для проверки удобно использовать https://www.freeformatter.com/hmac-generator.html
20. unoDosTres 05.02.18 10:12 Сейчас в теме
Доброго дня! Подскажите ,выложенный в публикации код такой же как и в обработке?
потому что воспользовавшись, кодом из публикации и попытавшись сравнить результат с онлайн генератором предложенным автором, ни разу не получил сходство ни по одному из алгоритмов шифрования. прикрепил файл
Прикрепленные файлы:
21. Knup 24 05.02.18 15:33 Сейчас в теме
(20) День добрый! Код абсолютно идентичный. Проверил, у меня все работает на вашем примере. Посмотрите на описание передаваемых параметров и их формат, Вы точно правильно передаете их? Хочу обратить Ваше внимание на параметр K - ключ, он передается в шестнадцатеричном виде.
unoDosTres; +1 Ответить
22. unoDosTres 05.02.18 15:47 Сейчас в теме
(21),
Т.е. в моем примере на скрине у меня ключ имеет строковое значение "key" я его должен перевести в hex и только после этого запускать функцию hmac?
23. Knup 24 05.02.18 16:09 Сейчас в теме
24. afafaf 26.03.18 16:07 Сейчас в теме
(23) Подскажите, пожалуйста, как именно это сделать (привести строку к hex виду)?
25. Knup 24 27.03.18 09:23 Сейчас в теме
(24)
kKey = "";
	Для к = 1 ПО СтрДлина(Key) Цикл
		
		kKey = kKey + ПреобразоватьДесятичнуюСИВHex(КодСимвола(Сред(Key,к,1)));
		
	КонецЦикла; 
SuperSpade; +1 Ответить
31. SuperSpade 07.02.19 11:51 Сейчас в теме
26. afafaf 03.04.18 13:05 Сейчас в теме
А вот мой вариант. Строго в соответствии с алгоритмом из Вики (единственное отличие - предварительно от ключа рассчитывается MD5, это требуется в конкретно моей реализации, можно убрать)
Функция Шмяк(СтрокаТекст,СтрокаКлюч) Экспорт
	
	СтрокаНули = "00000000000000000000000000000000000000000000000000000000000­000000000000000000000000000000000000000000000000000000000000­000000000";
	СтрокаОПАД = "5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5­c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5­c5c5c5c5c";
	СтрокаИПАД = "36363636363636363636363636363636363636363636363636363636363­636363636363636363636363636363636363636363636363636363636363­636363636";
	
	К = ПолучитьДвоичныеДанныеИзСтроки(СтрокаКлюч);
	ХД = Новый ХешированиеДанных(ХешФункция.MD5);
	ХД.Добавить(К);
	Шаг0 = ХД.ХешСумма;
	
	К = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Шаг0);
	Нули = ПолучитьБуферДвоичныхДанныхИзHexСтроки(СтрокаНули);  	
	Нули.ЗаписатьПобитовоеИли(0,К);         	
	Шаг1 = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(Нули);
	
	ИПАД = ПолучитьБуферДвоичныхДанныхИзHexСтроки(СтрокаИПАД);
	БуферШаг1 = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Шаг1);
	ИПАД.ЗаписатьПобитовоеИсключительноеИли(0,БуферШаг1);
	Шаг2 = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ипад);
	
	БуферШаг2 = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Шаг2);
	БуферТекст = ПолучитьБуферДвоичныхДанныхИзСтроки(СтрокаТекст);
	БуферШаг3 = БуферШаг2.Соединить(БуферТекст);
	Шаг3 = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(БуферШаг3);
	
	ХД = Новый ХешированиеДанных(ХешФункция.SHA1);
	ХД.Добавить(Шаг3);
	Шаг4 = ХД.ХешСумма;
	
	ОПАД = ПолучитьБуферДвоичныхДанныхИзHexСтроки(СтрокаОПАД);
	БуферШаг1 = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Шаг1);
	ОПАД.ЗаписатьПобитовоеИсключительноеИли(0,БуферШаг1);
	Шаг5 = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ОПАД);
	
	БуферШаг4 = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Шаг4);
	БуферШаг5 = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Шаг5);
	БуферШаг6 = БуферШаг5.Соединить(БуферШаг4);
	Шаг6 = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(БуферШаг6);
	
	ХД = Новый ХешированиеДанных(ХешФункция.SHA1);
	ХД.Добавить(Шаг6);
	Шаг7 = ХД.ХешСумма;
	
	Возврат ПолучитьHexСтрокуИзДвоичныхДанных(Шаг7);  	
	
КонецФункции

Показать
ZeratulAyuris; Dilovar9; +2 Ответить
32. Dilovar9 33 02.06.19 18:13 Сейчас в теме
33. ZeratulAyuris 25.06.19 08:27 Сейчас в теме
(26) спасибо за вариант, но к нему есть дополнение для случаев, когда длина ключа >64 байт:
    Шаг0 = ПолучитьДвоичныеДанныеИзСтроки(СтрокаКлюч);
    Если Шаг0.Размер() > 64 Тогда
        ХД = Новый ХешированиеДанных(ХешФункция.MD5);
        ХД.Добавить(Шаг0);
        Шаг0 = ХД.ХешСумма;
    КонецЕсли;
27. inf012 09.06.18 21:08 Сейчас в теме
Здравствуйте.
Я не понял, SHA-256 работает в 8.3 без использования внешних компонент?
Нужно в мобильное приложение вставить шифрование SHA-256?

Есть примеры кода?
28. Knup 24 13.06.18 09:42 Сейчас в теме
(27)
Здравствуйте!
Есть, есть и даже поддерживает мобильное приложение

Хеширование        = Новый ХешированиеДанных(ХешФункция.SHA256);
Хеширование.Добавить("<Строка для хеш функции>");
SHA256             = Хеширование.ХешСумма;
30. Юрий-К 83 16.07.18 14:11 Сейчас в теме
Функция - HMAC есть давней в публикации https://infostart.ru/public/458286/
34. Dan1c28 12.09.19 12:39 Сейчас в теме
через MD5 у меня не совпадает hmac :(
35. Dan1c28 12.09.19 13:28 Сейчас в теме
Вызываю вашу функцию,

keyss = "TESTTEST";
Подпись = "6create36850d51d1-5ed7-11e2-8161-001a6411168d11107900000000";

HMAC(keyss, Подпись, "MD5");


В итоге различный хэш, если сгенерировать через сайт hmac hash.
Мой результат: ba60785f34fa7342118a36399be364c3
На сайте: c8c639dc293e0b25459e36e073d33430

Или ваша функция только для sha1 предназначена?
36. Knup 24 13.09.19 10:53 Сейчас в теме
(35) Прочитайте (25) там ответ на ваш вопрос
Оставьте свое сообщение

См. также

Кодирование / декодирование в Base58 без использования внешних компонент 3

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) Защита и шифрование

Функции кодирование / декодирование строки в Base58 без использования внешних компонент. Код алгоритмов доступен в полном описании статьи.

1 стартмани

14.11.2019    432    ArtemSerov    1       

Компонента аутентификации и шифрования с помощью биометрической информации для Андроид 9

Инструменты и обработки Программист Конфигурация (md, cf) v8::Mobile Android Абонемент ($m) Разработка внешних компонент Мобильная разработка Защита и шифрование

Компонента для мобильной платформы, позволяющая идентифицировать пользователя и шифровать данные с помощью биометрических сканеров.

5 стартмани

17.09.2019    1352    1    IgorKissil    0       

Запутывание кода 1С 40

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Защита и шифрование

Обработка запутывания (обфускации) исходного кода 1С с помощью регулярных выражений.

2 стартмани

02.09.2019    3975    16    leoxz    62       

Защищаем конфигурацию. Один ключ СЛК для всех клиентов 25

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) Защита и шифрование

Пользователь защищенной конфигурации вводит регистрационный номер и код доступа. Установка сервера СЛК у пользователя не требуется. Управляем лицензиями удаленно.

1 стартмани

30.08.2019    3392    5    mvxyz    59       

Электронный документооборот для украинских конфигураций 1

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Украина Документооборот и делопроизводство Абонемент ($m) Защита и шифрование

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

1 стартмани

30.06.2019    1427    5    Asdam    0       

Шифрование текста и файлов с помощью 1С. Используется хеш-код SHA256, Без Capicom, Архиваторов и сторонних служб 22

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

Данная статья описывает простейший собственный алгоритм шифрования средствами 1С. Без Capicom, Архиваторов и сторонних служб. Данный метод работает на Платформе 8.3 и т.п. 09.07.19 Добавлена обработка шифрования файлов

1 стартмани

26.06.2019    3679    4    ogidni    39       

Цифровая подпись Cades-BES для XML средствами 1С с помощью КриптоПро 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Защита и шифрование

Обработка иллюстрирует возможность подписания XML SOAP-конверта по стандарту Cades-BES средствами 1С с помощью внешней компоненты КриптоПРО "CAdESCOM" с учетом ГОСТ 2001 и ГОСТ 2012. Стандарт используется в различных механизмах государственных сайтов России, в том числе в СМЭВ и ГИС ЖКХ. Код не привязан к прикладному решению может быть встроен куда угодно, но только на платформе Windows.

1 стартмани

13.05.2019    3963    12    PythonJ    25       

Интеграция 1С и API украинского онлайн банка Monobank 1

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Украина Windows Банковские операции Абонемент ($m) Обмен с банком

Монобанк - это первый украинский онлайн банк. Для его клиентов API не нужно. Но недавно банк запустил программу "Покупка частями". В ней участвуют партнеры, и для них есть API : https://u2-demo.ftband.com/docs/index.html#. Основная проблема с этим API - сигнатура , получаемая хешированием с секретным ключом. Объект 1с ХешированиеДанных такого не умеет (или я не нашел).

1 стартмани

03.05.2019    2090    1    bulpi    0       

Проверка пинкода для мобильного приложения 2

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8::Mobile Абонемент ($m) Защита и шифрование

Простая проверка с помощью пинкода на вход в мобильное приложение.

3 стартмани

16.04.2019    1494    1    bashinsky    2       

Кодирование Base64 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Защита и шифрование

Обработка кодирования декодирования строки алгоритмом Base64 через использования потоков.

1 стартмани

18.02.2019    2393    5    BigTaur    6       

Подписываем отчёт об исполнении контрактов ГОЗ или приказ №554 8

Инструменты и обработки Системный администратор Бухгалтер Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Государственные, бюджетные структуры Россия Windows Абонемент ($m) Защита и шифрование

Внешняя обработка, упрощающая подпись файла и генерацию архива с отчётом об исполнении госконтракта по Приказу №554 МО РФ

1 стартмани

06.02.2019    6584    29    semagin@gmail.com    8       

Генератор ФИО, ИНН, СНИЛС и дат рождения 6

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование Обработка справочников

Понадобилась мне обезличенная база биллинга на полтора миллиона лицевых счетов. Забивать существующие ФИО символом "Х" ("Иванов Иван Иванович" -> "Хххххх Хххх Хххххххх") было не интересно. Взял из существующей базы собрал мужские, женские фамилии, имена и отчества и написал генератор случайных ФИО. Также в обработке есть возможность генерировать ИНН физических лиц, СНИЛС и дат рождения.

1 стартмани

03.12.2018    4616    6    BigB    10       

Применение цифровой подписи при организации учёта ТМЦ и ГСМ 10

Статья Программист Архив с данными v8::Mobile v8::Бизнес-процессы 1cv8.cf Абонемент ($m) Защита и шифрование Управление бизнес-процессами (BPM) Мобильная разработка

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

1 стартмани

25.10.2018    4526    2    ikekoval    2       

"Открыть нельзя защищать!" - Где поставить запятую? 20

Инструменты и обработки Программист Архив с данными v8 v8::УФ 1cv8.cf Абонемент ($m) Защита и шифрование

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

1 стартмани

16.02.2018    9567    11    adam26    9       

Шифрование перестановкой символов 0

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

Простое шифрование строки перестановкой символов.

1 стартмани

14.12.2017    4945    3    unregisteret    3       

ЭЦП по гостам Украины в 1С - Внешняя компонента BilboSign.dll 6

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Украина Windows Абонемент ($m) Разработка внешних компонент Защита и шифрование

Причиной данной разработки послужило отсутствие на данный момент криптопровайдера ЭЦП, который может работать по гостам Украины и использоваться в 1С. Для этого разработана внешняя компонента по технологии NativeAPI.

1 стартмани

11.12.2017    7761    11    Zahary    5       

Обработка шифрования ключом 2

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Обработка шифрования введенной строки. Платформа 8.3 (обычное приложение). В обработке реализован механизм XOR шифрования на платформе 8.3. Может быть полезна при решении задач с шифрованием паролей или текстов или чисел.

1 стартмани

05.12.2017    6187    15    timothy_    3       

Обфускация кода 1С 95

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

Обфускация кода 1С как вариант защиты кода.

10 стартмани

09.10.2017    26082    62    VsHome    5       

Обезличивание базы данных для КАМИН:Зарплата для бизнеса 4 0

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf БУ Управление персоналом (HRM) Абонемент ($m) Обработка справочников Защита и шифрование

Данная обработка обезличивает Вашу информационную базу данных. Это значит, что все фамилии, имена, отчества, ИНН, СНИЛС, серии и номера документов, будут заменены случайным набором символов.

1 стартмани

26.06.2017    6987    3    juricher    2       

Обезличивание базы данных средствами скрипта для MSSQL 13

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Обработка предназначена для сотрудников, которым необходимо подготовить обезличенную базу для передачи ее сторонним лицам. Для пользования обработкой необходимо запустить 1С: предприятие в режиме тонкого клиента управляемого приложения. Тестировалась обработка на 1С:Предприятие 8.3 (8.3.8.2088) Обработка генерирует SQL - скрипт на основе структуры метаданных.

10 стартмани

28.02.2017    9865    24    ZadachNik1C    1       

Шифрование и расшифровка строковых полей справочников методом Виженера (с улучшениями) 53

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование Обработка справочников

Обработка по шифрованию и расшифровке строковых полей справочников модифицированным методом Виженера - реализация без внешних компонент, без com-объектов, чистый 1С.

1 стартмани

27.04.2016    22872    32    NikitaXa    16       

Защита разработок от копирования (Обычная и Управляемая форма) 203

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Защита и шифрование

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

1 стартмани

28.03.2016    33859    322    karpik666    123       

Двухфакторная аутентификация в 1С 83

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Защита и шифрование

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

1 стартмани

16.02.2016    29215    112    Юрий-К    17       

Генератор сертификатов 32

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Универсальные обработки Защита и шифрование

Недавно пришлось организовывать обмен шифрованными сообщениями в 1С, при этом кучу времени заняла процедура создания сертификатов для работы с "Менеджером криптографии". Как итог сделал небольшую обработку для генерации разных типов сертификатов.

3 стартмани

27.01.2016    16313    28    eskor    4       

Обфускация кода 1С (приведение в нечитаемый вид) для платформы 1С:Предприятие 8.3.7 98

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

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

1 стартмани

20.12.2015    35413    308    masterkio    106       

Обфускация данных в 1С 8

Инструменты и обработки Системный администратор Программист Бухгалтер Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

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

1 стартмани

03.11.2015    13816    37    kser87    23       

Подсистема шифрования данных + пример реализации: решение Keystore для хранения паролей 10

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

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

3 стартмани

23.06.2015    15328    15    alex271    3       

Ключ защиты из USB накопителя для 8.3 59

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Информационная безопасность Защита и шифрование

Ключ защиты конфигурации из обычной USB-флешки для платформы 8.3. Можно внедрить на любой конфигурации, и ключик не привязывается к определенному рабочему месту. Реализовано в Такси.

5 стартмани

31.05.2015    31782    40    Naposaram    57       

Изменение конфиденциальной информации (обработка, управляемые формы) 13

Инструменты и обработки Системный администратор Внешняя обработка (ert,epf) v8::УФ 1cv8.cf Windows Абонемент ($m) Обработка документов Защита и шифрование Обработка справочников

Обработка позволяет полностью заменить в базе все конфиденциальные данные - все поля справочников, суммы в документах и прочие значения объектов. Идентична по функционалу обработке с ИТС "Изменение конфиденциальной информации", но работает под управляемыми формами и в интерфейсе "Такси". Есть гибкая настройка тех данных, которые необходимо удалять.

1 стартмани

17.05.2015    28394    144    primat    22       

Шифрование текста, хеш сумма 19

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

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

2 стартмани

15.04.2015    19890    55    MherArsh    22       

Сжатие текстов исключительно средствами языка 1С 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Обработка упаковывает текст и делает его в виде исполняемого SFX. Область применения: Just for fun Побаловался на досуге, размял мозг. Можно применять для упаковки и нечитаемости текстов процедур и функций, или запросов

1 стартмани

25.11.2014    12311    13    eugeniezheludkov    5       

Простое симметричное шифрование табличным смещением 4

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Защита и шифрование

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

1 стартмани

06.10.2014    12175    13    insidex    3       

Шредер - не удобочитаемый код 1с 1

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

Нужно сделать текст 1с нечитабельным - не вопрос!

1 стартмани

21.08.2014    14606    45    ivn75    18       

Элементарное шифрование 0

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Защита и шифрование

Алгоритм шифрования - простая перестановка

1 стартмани

11.02.2014    13689    6    sdn-1    3       

Подписываем файлы с помощью ЭЦП средствами 1с 48

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Универсальные обработки Защита и шифрование

Обработка для подписи с помощью сертификата (ЭЦП) произвольных файлов, только средствами платформы 1с. Работает на всех конфигурациях, но только на последних платформах 8.2 и 8.3, где есть менеджер криптографии.

1 стартмани

05.09.2013    53708    326    anig99    21       

Расчет SHA-1 хеша средствами 1С. Битовые операции в 1С или урок двоичной математики 61

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы

Расчет хеша SHA-1 без использования каких-либо внешних компонет - возможно ли это в 1Cv8? Оказывается вполне возможно!

1 стартмани

13.03.2013    27679    138    Антон Ширяев    40       

Работа с криптографией на примере получения хэша SHA-512 в 1С 22

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Защита и шифрование

Понадобилось мне как то сделать одну СМС-рассылку в 1С с методом усиленной авторизации, в которой необходимо было получить хэш SHA-512. Было перерыто половина интернета и ничего толкового именно по SHA-512 найдено так и не было... В результате был найден способ как получить криптографическую функцию в 1С не копаясь в RFC и спецификациях относительно быстро и самое главное отлаженную от и до.

1 стартмани

25.02.2013    25138    35    Diversus    29       

Обработка-пример шифрования в 1С 8.2 13

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Защита и шифрование

Обработка-пример шифрования в 1С 8.2 До безобразия простой код, однако, весьма эффективный алгоритм. Иногда требуется что-то подобное, например, у нас в базе хранятся пароли на расчетные листки и на ключевые константы и регистры.

1 стартмани

21.12.2012    18702    83    vladshnurkoff    11       

Искажение данных, очистка данных из информационной базы 3

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Чистка базы Защита и шифрование

Иногда нужно передать базу в третьи руки, но так что бы клиент был спокоен за свои данные - сделал небольшую обработку искажения текстовых данных во всех справочниках, удаления записей независимых регистров сведений и вычистки планов обменов. Обработка не претендует на универсальность. Универсальная уже есть на ИТС (1CIts\EXE\EXTREPS\UNIREPS81\UpdatePrivateInformation).

1 стартмани

04.12.2012    13945    16    bxz    7       

Защита конфигурации 1С (без внешних компонент, супер легкая и быстрая) 38

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Возможность автоматизации легкой и быстрой защиты конфигурации от распространения неблагонадежными клиентами. Работает только в режиме обычного приложения. Защита не полноценная (в случае если не применять обфускатор к спец.модулям), но позволяет снять проблему.

3 стартмани

11.05.2012    37465    167    Kyrales    45       

Создание "обезличенной" демо базы 8,1,8.2 и 8.3 Управляемые и обычные формы. 49

Инструменты и обработки no Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Защита и шифрование Обработка справочников

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

1 стартмани

03.12.2010    27463    284    milkers    10       

Индивидуальный Ключ Защиты (ИКЗ) 235

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Защитите свою корпоративную информацию от несанкционированного доступа. Контролируйте кто, когда и как может пользоваться вашей информацией с помощью "ИКЗ" (Индивидуального Ключа Защиты). ИКЗ может быть внедрен абсолютно в любую "свою" или типовую конфигурацию от 1С...

1 стартмани

21.10.2010    25383    485    wacko    65       

Кодирование префикса из 3-х символов по стандарту RADIX-50 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование Обработка справочников

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

1 стартмани

05.08.2010    12066    13    Larkin    1       

Привязка конфигурации к диску 40

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Защита и шифрование

Простой способ определить по id HDD, используют ли твою работу на постороннем компьютере

1 стартмани

13.04.2010    17104    228    simgo83    39