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

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

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

Шифрование Sha256

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

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

При сложном варианте расшифровать файл назад без пароля (от 8 символов) -станет практически невозможным.

Минусы данного метода - крайне низкая скорость работы.

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

 

Сначала мы получаем массивы из текста - которые необходимо зашифровать.

Далее из пароля делаем хеш код в формате SHA256 для надежности

Процедура КнопкаВыполнитьНажатие(Кнопка)
	массивТекста = РазложитьТекстВМассивПодстрок(СокрЛП(ИсходныйТест),символы.ПС);
	
	
	Хеш=Новый ХешированиеДанных(ХешФункция.SHA256);
	Хеш.Добавить(КодШифра); //Код Шифра - это наш пароль
	КлючШифра = Хеш.ХешСумма;
    //КлючШифра	 - это хеш от пароля в формате (SHA256) На котором работает Биткоин 
	МассивХеша = новый Массив;
	КлючШифра = СтрЗаменить(КлючШифра," ","");
	МассивХеша = РазложитьСтрокуВМассивзнаков(КлючШифра,МассивХеша);
	ЗашифрованныйТекст = ЗашифроватьТекст(массивТекста, МассивХеша);

КонецПроцедуры

 

Ниже приведен код текста шифрования:

//МассивСимволов - это текст переведенный в Массив
//КлючШифра - это хеш ключ переведенный массив
Функция ЗашифроватьТекст(МассивСимволов,КлючШифра)
	ЗашифрованнаяСтрока = "";
	ГСЧ = Новый ГенераторСлучайныхЧисел(1);

	ПозицияСимволаХэша = 0;
	ДлинаХэша = МассивХеша.количество();
	для каждого ном из МассивСимволов Цикл
		//Извлекаем номр шифруемого символа  UTF-8
		НомерСимвола = КодСимвола(ном);
		Если  ПозицияСимволаХэша >= ДлинаХэша-1 тогда
			ПозицияСимволаХэша = 0;
		КонецЕсли;
		//Позиция суммируемого хеша
		ПозицияСимволаХэша = ПозицияСимволаХэша+1;
		//Извлекаем номр символа хеша UTF-8
		СимволаХэша = КодСимвола(МассивХеша[ПозицияСимволаХэша]); 
		
		//Суммируем СуммыПозиций кодов 
		Код_Зашифрованный_символ =  НомерСимвола+СимволаХэша;
		Зашифрованный_символ = Символ(Код_Зашифрованный_символ);
		ЗашифрованнаяСтрока= ЗашифрованнаяСтрока+Зашифрованный_символ;
		
		//Усложним шифр добавляя тенического мусора при условие что КодСимвола хеша четный;
		Если Цел(СимволаХэша/2) = СимволаХэша/2 тогда
			
			СлучайноеЧисло = ГСЧ.СлучайноеЧисло(100, 1000); 
			ЗашифрованнаяСтрока= ЗашифрованнаяСтрока+Символ(СлучайноеЧисло);
		КонецЕсли;	
	КонецЦикла;
	возврат ЗашифрованнаяСтрока; 
	
	
КонецФункции	

Теперь сам код расшифровки 

Функция РасшифроватьТекст(МассивСимволов,КлючШифра)
	РасшифроватьТекст = "";
	ПозицияСимволаХэша = 0;
	ДлинаХэша = МассивХеша.количество();
	пропуск = ложь;
	для каждого ном из МассивСимволов Цикл
		
		Если пропуск тогда
			пропуск=ложь;
			продолжить;
		КонецЕсли;	

		
		НомерСимвола = КодСимвола(ном);
		Если  ПозицияСимволаХэша >= ДлинаХэша-1 тогда
			ПозицияСимволаХэша = 0;
		КонецЕсли;
		ПозицияСимволаХэша = ПозицияСимволаХэша+1;
		СимволаХэша = КодСимвола(МассивХеша[ПозицияСимволаХэша]); 

		Код_Зашифрованный_символ =  НомерСимвола-СимволаХэша;
		Зашифрованный_символ = Символ(Код_Зашифрованный_символ);
		
		
		РасшифроватьТекст= РасшифроватьТекст+Зашифрованный_символ;
		
		//Отсекаем мусор
		Если Цел(СимволаХэша/2) = СимволаХэша/2 тогда
			//пропускаем следующий символ;
			пропуск = истина;
		КонецЕсли;	

	КонецЦикла;
	возврат РасшифроватьТекст; 
	
	
КонецФункции	

Ну а также прочие функции по преобразованию текста в массив

Функция РазложитьТекстВМассивПодстрок(Знач Стр, Разделитель = "") Экспорт
	
	МассивСтрок = Новый Массив();
	ДлинаРазделителя = СтрДлина(Разделитель);
	Пока 1=1 Цикл
		Поз = Найти(Стр,Разделитель);
		Если Поз=0 Тогда
			МассивСтрок.Добавить(Стр);
			прервать;
		КонецЕсли;
		МассивСтрок.Добавить(Лев(Стр,Поз-1));
		Стр = Сред(Стр,Поз+ДлинаРазделителя);
	КонецЦикла;
	//Возврат МассивСтрок;
	МассивТекста = новый массив;
	для каждого ном из МассивСтрок Цикл
		Если  ном <> "" тогда
			МассивТекста = РазложитьСтрокуВМассивзнаков(ном,МассивТекста);
		КонецЕсли;
		МассивТекста.добавить(символы.ПС);
	КонецЦикла;	 
	
	возврат  МассивТекста;
	
КонецФункции



Функция РазложитьСтрокуВМассивзнаков(Знач Стр,МассивСтрок) Экспорт
	
	//МассивСтрок = Новый Массив();
	Длинастроки = СтрДлина(Стр);
	Поз=0;
	Пока 1=1 Цикл
		Поз = Поз+1;
		Если Длинастроки=0 Тогда
			Если Стр <> "" тогда
				МассивСтрок.Добавить(Лев(Стр,1));
			КонецЕсли;
			Возврат МассивСтрок;
		КонецЕсли;
		Если Стр <> "" тогда
			МассивСтрок.Добавить(Лев(Стр,1));
		КонецЕсли;
		
		Стр = Прав(Стр,Длинастроки-1);
		Длинастроки= Длинастроки-1;
	КонецЦикла;
	
	
КонецФункции 

Теперь мы получили инструмент к шифрации данных, тем не шифр имеет уязвимости в связи с повторяющимся ключом шифрации. Усложним ее перехешируя хеш-ключ при каждом повторении. Код с изменяющимся хешом-ключом представлен в сложной обработке (текст, файл). После чего получаем шифр стойкий к дешифровке. При пароле более 8 символов вероятность взлома шифра на сегодняшний день невозможна, так как необходим интеллектуальный анализ результата который потребует минимум 4-8 Гиг памяти платы(Asic устройства их не имеют.) и бесконечно много тактово-процессорных ресурсов для морфологического анализа полученного результата.

UPD 09.07.19 Добавлена обработка шифрования файлов

22

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

Наименование Файл Версия Размер
Простое шифрование текста с помощью 1С.(Работает на всех конфигурациях на платформе 8.3, тестировалось на платформе 8.3.10.2753) Толстый клиент
.epf 10,04Kb
09.07.19
2
.epf 10,04Kb 2
Сложное шифрование текста с помощью 1С.(Работает на всех конфигурациях на платформе 8.3, тестировалось на платформе 8.3.10.2753) Толстый клиент
.epf 9,36Kb
09.07.19
1
.epf 9,36Kb 1
Обработка шифрует файлы сквозным способом
.epf 9,92Kb
19.07.19
1
.epf 9,92Kb 1

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

Комментарии
Избранное Подписка Сортировка: Древо
1. astracrypt 59 26.06.19 13:29 Сейчас в теме
Просто круто. Это гениально?
3. ogidni 151 26.06.19 14:07 Сейчас в теме
(1) это просто, может сам шифр и не сильно устойчив к шифрованию, но если немного изменить алгоритм, на индивидуальный, то на мой взгляд расшифровка станет невозможна ближайшие столетия, даже имея мощные Асики.
К примеру RSA алгоритмы, уже под угрозой расшифровки. 18 значный пароль, имея Хэндшейк(ключ согласования RSA) подбирается за 20 дней на Asic устройстве
2. SerVer1C 192 26.06.19 14:06 Сейчас в теме
Шифровать строки модуля обработки и хранить в ней же пароль?
4. ogidni 151 26.06.19 14:13 Сейчас в теме
(2)
Шифровать строки модуля обработки и хранить в ней же пароль?

Достаточно хранить хеш-код SHA256. С обрезанными пробелами он очень тяжело вытаскивается декомпилятором.
К примеру если пользоваться сторонними приложениями он легко вытаскивается как обращение 1С-ом к Capicom например.

Если именить код на
        Хеш=Новый ХешированиеДанных(ХешФункция.SHA256);
	Хеш.Добавить(КодШифра); //Код Шифра - это наш пароль
	КлючШифра = Хеш.ХешСумма;
    //КлючШифра	 - это хеш от пароля в формате (SHA256) На котором работает Биткоин 
	МассивХеша = новый Массив;
	КлючШифра = СтрЗаменить(КлючШифра," ","");
	МассивХеша = РазложитьСтрокуВМассивзнаков(КлючШифра,МассивХеша);

      //Добавляем код 
    Хеш.Добавить("111111111111");
   КлючШифра = Хеш.ХешСумма;
   ///Конец добавки

	ЗашифрованныйТекст = ЗашифроватьТекст(массивТекста, МассивХеша);
Показать


Так же массив хеша можно добавить 1-10 мусорных символа. К примеру.
Если использовать обработку в чистом виде то можно. А если индивидуально допишите, то сложнее будет перехватывать
5. ogidni 151 26.06.19 15:00 Сейчас в теме
А если все это писать на C++. То можно вместа sha-256, Ethash Бутерина использовать с даг файлом на 2-4 гигабайта. Только тогда надо будет видеокарту задействовать.
6. wowik 609 26.06.19 15:41 Сейчас в теме
+1. Напишите мессенджер на андроид!
7. ogidni 151 26.06.19 16:41 Сейчас в теме
(6)
+1. Напишите мессенджер на андроид!

можно пользоваться телеграмм + плагин с доп шифрацией. Без RSA с передачей ключей лично в руки
8. wowik 609 26.06.19 17:58 Сейчас в теме
(7) не понял про плагин. Это в телеграм уже есть?
9. ogidni 151 26.06.19 18:05 Сейчас в теме
(8)еще нет надо сделать :-)
Месяц назад продал, машину. Ко мне приехал черовек из деревни с распечаткой где и когда я парковался, со всеми моими штрафами, неуплаченными налогами и временем прохождения то, и информацией об ОСАГО итп. Говорит в телеграмм канале за 500р купил.
И тут я решил пошифроваться.

ПыСы: Ты понимаешь Карл, человек из деревни знает обо мне почти все - куда это годится... если в гос органах информация льется как из душа.
Мало им того что фотки приходят жене со штрафами, а если я Бухгалтера подвез до банка - как жене это объяснить?!
Skripatch; for_sale; +2 Ответить
19. for_sale 783 30.06.19 09:46 Сейчас в теме
(9)
вэлкам ту зе рил ворлд))
10. Borisqa 27.06.19 09:58 Сейчас в теме
Никогда больше не лезьте в криптографию. Ваш алгоритм ломается за 1 секунду, т.к. "ключ" повторяется. Да это даже не ключ, а просто хэш от пароля, который даже перебирать не надо. Пожалуйста, оставьте эту затею и не вводите людей в заблуждение
Vovan1975; Perfolenta; SerVer1C; A_Max; +4 Ответить
12. ogidni 151 27.06.19 12:29 Сейчас в теме
(10)
Никогда больше не лезьте в криптографию. Ваш алгоритм ломается за 1 секунду, т.к. "ключ" повторяется. Да это даже не ключ, а просто хэш от пароля, который даже перебирать не надо. Пожалуйста, оставьте эту затею и не вводите людей в заблуждение

А если ключ при каждом повторе будет в степень "X" кратно соответсвующего символа? Вы не читали в тексте где написано - что алгоритм можно усложнять?
К примеру ту зависимость что на картинке картинке.
Или просто каждый раз хешировать ключевой хеш повторно при повторе? при таком раскладе думаю до конца галактической зимы будете расшировывать

За секунду он подберет., это вы в секундах световых лет ведете времяисчисление?
Ну в целом ваше невежество принято и зачтено.
Прикрепленные файлы:
14. SerVer1C 192 28.06.19 08:18 Сейчас в теме
(12) Месье хотел сказать, что не комильфо хранить и алгоритм, и пароль (или его аналог, который и будет использоваться для расшифровки) в открытом виде, а внешняя обработка 1с как раз и имеет открытый вид. А то, что Вы пытаетесь запутать алгоритм шифрования не усложнит стойкость ко взлому! Сравните свою поделку с реализацией AES.
15. ogidni 151 28.06.19 10:28 Сейчас в теме
(14) реализация AES хороша, главная проблема всех известных алгоритмов - та что он известна. И под них имеются Asic устройства.
Хранить ключи к шифру вас никто не заставляет.
Это так сказать ваше дело где хранить: в голове, на бумаге флешке или в облаке...
13. ogidni 151 27.06.19 19:49 Сейчас в теме
Добавлен сложный метод шифровки.
16. vsesam80 29.06.19 20:36 Сейчас в теме
(13)Интересно, а предложенный вами вариант более устойчив к взлому чем этот?: https://infostart.ru/public/518576/
18. Неопределено 55 30.06.19 06:31 Сейчас в теме
(16), (17), не понимаю в чём дело: я никогда не был в этой статье до текущего момента, но получил уведомления о ваших сообщениях как будто они были ответом на моё сообщение.
20. vsesam80 01.07.19 01:20 Сейчас в теме
(18)Может Инфостарт перевели на 1С движок. А у нас в 1С и не такое бывает, сами знаете)))
23. ogidni 151 01.07.19 01:31 Сейчас в теме
(20)да он изначально на. 1с битрексе
21. ogidni 151 01.07.19 01:22 Сейчас в теме
(18)может это знак к тому — что пора шифроваться
vsesam80; +1 Ответить
22. ogidni 151 01.07.19 01:24 Сейчас в теме
(16) изучу то что вы указали на днях напишу. Но лучше всего придумать свой принцип и держать его в голове. Даже зная пароль и не зная алгоритм — хрен кто что расшифрует. Я не претендую на то чтобы кто то использовал алгоритм для шифра, статья для шевеления мозга
17. Fox-trot 105 29.06.19 20:47 Сейчас в теме
(13) покажи еще скорость шифрования
24. ogidni 151 01.07.19 01:33 Сейчас в теме
(17) скорость на 1с? Откуда такое счастье, если только на 16 движке сделают реализацию OpenGL или Cuda
25. Неопределено 55 01.07.19 03:41 Сейчас в теме
Если интересно, могу скинуть как я делал sha-512 года 3 назад. Там, правда, подключался js скрипт и использовалась какая-то виндовая компонента.
27. ogidni 151 01.07.19 09:04 Сейчас в теме
28. Неопределено 55 01.07.19 09:38 Сейчас в теме
(27) Может быть, но я своё не выкладывал. Кстати, вспомнил: код js я переписал под 1С, так что там из стороннего использовалась только виндовая компонента криптографии.
29. ogidni 151 01.07.19 10:25 Сейчас в теме
(28)
нил: код js я переписал под 1С, так что там из стороннего использовалась только виндовая компонента криптографии.

может стоит выложить?
30. Неопределено 55 01.07.19 10:26 Сейчас в теме
(29) Вечером доберусь до домашнего компа и кину здесь в комментариях. Оно не стоит отдельной публикации.
31. Неопределено 55 01.07.19 10:35 Сейчас в теме
(29) Нашёл копию в облаке. Шифруемая строка называется ТекстЗапроса т.к. шифровался текст HTTP запроса к API. Переменная Секрет это API-ключ, он же соль.
Функция ЗашифроватьHMACSHA512(ТекстЗапроса, Секрет) 
	
	Текст = Новый COMОбъект("System.Text.UTF8Encoding");
	Криптография = Новый COMОбъект("System.Security.Cryptography.HMACSHA512");
	Криптография.Key = Текст.GetBytes_4(Секрет);
	ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(ТекстЗапроса)).Выгрузить();
	Шифр = "";
	Для Каждого Байт Из ХешБайт Цикл
	    База = 16;
	    Символ = "";
	    Пока Байт <> 0 Цикл
	       Поз = Байт % База;
	       Символ = Сред("0123456789ABCDEF", Поз + 1, 1) + Символ;
	       Байт = Цел(Байт / База);
	    КонецЦикла;
	    Шифр = Шифр + ?(СтрДлина(Символ) = 2, Символ, "0" + Символ);
	КонецЦикла;
	
	Шифр = нРег(Шифр);
	
	Возврат Шифр;
	
КонецФункции
Показать
32. Fox-trot 105 01.07.19 10:35 Сейчас в теме
(29) а сравнение скорости со штатной можешь выложить? просто интересно
34. ogidni 151 01.07.19 11:06 Сейчас в теме
(32) Вот пример реализации CUDA SHA256. Можете сделать внешнюю компоненту и передавать туда массив с данными необходимые к хешированию.
GPU карта распределит и быстро все посчитает. Для выполнения необходима Видеокарта GTX.

#ifndef SHA256_H
#define SHA256_H

#include <cstdint>


/****************************** MACROS ******************************/
#define SHA256_BLOCK_SIZE 32            // SHA256 outputs a 32 byte digest

#define ROTLEFT(a,b) (((a) << (b)) | ((a) >> (32-(b))))
#define ROTRIGHT(a,b) (((a) >> (b)) | ((a) << (32-(b))))

#define CH(x,y,z) (((x) & (y)) ^ (~(x) & (z)))
#define MAJ(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
#define EP0(x) (ROTRIGHT(x,2) ^ ROTRIGHT(x,13) ^ ROTRIGHT(x,22))
#define EP1(x) (ROTRIGHT(x,6) ^ ROTRIGHT(x,11) ^ ROTRIGHT(x,25))
#define SIG0(x) (ROTRIGHT(x,7) ^ ROTRIGHT(x,18) ^ ((x) >> 3))
#define SIG1(x) (ROTRIGHT(x,17) ^ ROTRIGHT(x,19) ^ ((x) >> 10))

#define checkCudaErrors(x) \
{ \
    cudaGetLastError(); \
    x; \
    cudaError_t err = cudaGetLastError(); \
    if (err != cudaSuccess) \
        printf("GPU: cudaError %d (%s)\n", err, cudaGetErrorString(err)); \
}
/**************************** DATA TYPES ****************************/
typedef unsigned char BYTE;             // 8-bit byte
typedef uint32_t  WORD;             // 32-bit word, change to "long" for 16-bit machines

typedef struct {
	BYTE data[64];
	WORD datalen;
	unsigned long long bitlen;
	WORD state[8];
} SHA256_CTX;

__constant__ WORD dev_k[64];

static const WORD host_k[64] = {
	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,
	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,
	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,
	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,
	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,
	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,
	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,
	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
};

/*********************** FUNCTION DECLARATIONS **********************/
char * print_sha(BYTE * buff);
__device__ void sha256_init(SHA256_CTX *ctx);
__device__ void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len);
__device__ void sha256_final(SHA256_CTX *ctx, BYTE hash[]);

__device__ void mycpy12(uint32_t *d, const uint32_t *s) {
#pragma unroll 3
	for (int k = 0; k < 3; k++) d[k] = s[k];
}

__device__ void mycpy16(uint32_t *d, const uint32_t *s) {
#pragma unroll 4
	for (int k = 0; k < 4; k++) d[k] = s[k];
}

__device__ void mycpy32(uint32_t *d, const uint32_t *s) {
#pragma unroll 8
	for (int k = 0; k < 8; k++) d[k] = s[k];
}

__device__ void mycpy44(uint32_t *d, const uint32_t *s) {
#pragma unroll 11
	for (int k = 0; k < 11; k++) d[k] = s[k];
}

__device__ void mycpy48(uint32_t *d, const uint32_t *s) {
#pragma unroll 12
	for (int k = 0; k < 12; k++) d[k] = s[k];
}

__device__ void mycpy64(uint32_t *d, const uint32_t *s) {
#pragma unroll 16
	for (int k = 0; k < 16; k++) d[k] = s[k];
}

__device__ void sha256_transform(SHA256_CTX *ctx, const BYTE data[])
{
	WORD a, b, c, d, e, f, g, h, i, j, t1, t2, m[64];
	WORD S[8];

	//mycpy32(S, ctx->state);

#pragma unroll 16
	for (i = 0, j = 0; i < 16; ++i, j += 4)
		m[i] = (data[j] << 24) | (data[j + 1] << 16) | (data[j + 2] << 8) | (data[j + 3]);

#pragma unroll 64
	for (; i < 64; ++i)
		m[i] = SIG1(m[i - 2]) + m[i - 7] + SIG0(m[i - 15]) + m[i - 16];

	a = ctx->state[0];
	b = ctx->state[1];
	c = ctx->state[2];
	d = ctx->state[3];
	e = ctx->state[4];
	f = ctx->state[5];
	g = ctx->state[6];
	h = ctx->state[7];

#pragma unroll 64
	for (i = 0; i < 64; ++i) {
		t1 = h + EP1(e) + CH(e, f, g) + dev_k[i] + m[i];
		t2 = EP0(a) + MAJ(a, b, c);
		h = g;
		g = f;
		f = e;
		e = d + t1;
		d = c;
		c = b;
		b = a;
		a = t1 + t2;
	}

	ctx->state[0] += a;
	ctx->state[1] += b;
	ctx->state[2] += c;
	ctx->state[3] += d;
	ctx->state[4] += e;
	ctx->state[5] += f;
	ctx->state[6] += g;
	ctx->state[7] += h;
}

__device__ void sha256_init(SHA256_CTX *ctx)
{
	ctx->datalen = 0;
	ctx->bitlen = 0;
	ctx->state[0] = 0x6a09e667;
	ctx->state[1] = 0xbb67ae85;
	ctx->state[2] = 0x3c6ef372;
	ctx->state[3] = 0xa54ff53a;
	ctx->state[4] = 0x510e527f;
	ctx->state[5] = 0x9b05688c;
	ctx->state[6] = 0x1f83d9ab;
	ctx->state[7] = 0x5be0cd19;
}

__device__ void sha256_update(SHA256_CTX *ctx, const BYTE data[], size_t len)
{
	WORD i;

	// for each byte in message
	for (i = 0; i < len; ++i) {
		// ctx->data == message 512 bit chunk
		ctx->data[ctx->datalen] = data[i];
		ctx->datalen++;
		if (ctx->datalen == 64) {
			sha256_transform(ctx, ctx->data);
			ctx->bitlen += 512;
			ctx->datalen = 0;
		}
	}
}

__device__ void sha256_final(SHA256_CTX *ctx, BYTE hash[])
{
	WORD i;

	i = ctx->datalen;

	// Pad whatever data is left in the buffer.
	if (ctx->datalen < 56) {
		ctx->data[i++] = 0x80;
		while (i < 56)
			ctx->data[i++] = 0x00;
	}
	else {
		ctx->data[i++] = 0x80;
		while (i < 64)
			ctx->data[i++] = 0x00;
		sha256_transform(ctx, ctx->data);
		memset(ctx->data, 0, 56);
	}

	// Append to the padding the total message's length in bits and transform.
	ctx->bitlen += ctx->datalen * 8;
	ctx->data[63] = ctx->bitlen;
	ctx->data[62] = ctx->bitlen >> 8;
	ctx->data[61] = ctx->bitlen >> 16;
	ctx->data[60] = ctx->bitlen >> 24;
	ctx->data[59] = ctx->bitlen >> 32;
	ctx->data[58] = ctx->bitlen >> 40;
	ctx->data[57] = ctx->bitlen >> 48;
	ctx->data[56] = ctx->bitlen >> 56;
	sha256_transform(ctx, ctx->data);

	// Since this implementation uses little endian byte ordering and SHA uses big endian,
	// reverse all the bytes when copying the final state to the output hash.
	for (i = 0; i < 4; ++i) {
		hash[i] = (ctx->state[0] >> (24 - i * 8)) & 0x000000ff;
		hash[i + 4] = (ctx->state[1] >> (24 - i * 8)) & 0x000000ff;
		hash[i + 8] = (ctx->state[2] >> (24 - i * 8)) & 0x000000ff;
		hash[i + 12] = (ctx->state[3] >> (24 - i * 8)) & 0x000000ff;
		hash[i + 16] = (ctx->state[4] >> (24 - i * 8)) & 0x000000ff;
		hash[i + 20] = (ctx->state[5] >> (24 - i * 8)) & 0x000000ff;
		hash[i + 24] = (ctx->state[6] >> (24 - i * 8)) & 0x000000ff;
		hash[i + 28] = (ctx->state[7] >> (24 - i * 8)) & 0x000000ff;
	}
}

#endif   // SHA256_H
Показать
26. dj_tol 89 01.07.19 05:06 Сейчас в теме
Молодец. Я тоже как-то занимался шифрованием ярлыков 1С. Тема интересная.
33. ogidni 151 01.07.19 10:46 Сейчас в теме
(26)Хм это не ваш код нашим клиентам все данные зашифровал и просил червонец? ;-)
35. dj_tol 89 01.07.19 14:01 Сейчас в теме
Нет. Я ярлыки запуска шифровал, что бы не понятно было где база лежит
36. vsesam80 01.07.19 21:10 Сейчас в теме
было бы здорово, если бы кто нибудь выложил пример шифрования на JS. Это нужно для мобильной платформы. Там виндовой компоненты нет и с шифрованием всё грустно. А между тем мобильное приложение на 1С весьма востребовано
37. ogidni 151 03.07.19 10:07 Сейчас в теме
(36) а как же объект System.Security.Cryptography? На JS не работает?
38. vsesam80 03.07.19 20:07 Сейчас в теме
(37)Работает, но я хотел это применить на мобильной платформе, а там ДотНета не имеется
39. ogidni 151 04.07.19 10:11 Сейчас в теме
(38) А что шифровать будете? Текстовые поля?
40. vsesam80 04.07.19 16:10 Сейчас в теме
(39)Именно! Идея такая - юзер в офлайне шифрует свои данные.
Есть конечно вариант через HTTPS. например юзер вносит данные по "безопасному каналу", они даже не хранятся на смартфоне. Скачиваются по мере необходимости - по запросу. И даже если смарт украдут или потеряют, данные всё равно на серваке.
А есть вариант офлайн, когда строковые поля справочника шифруются. А пароль для дешифровки вводится пр запуске приложения. И даже можно пустить злоумышленика далее в приложение - он всё равно получит билеберду, вместо осмысленного текста.
Оставьте свое сообщение

См. также

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

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

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

5 стартмани

17.09.2019    787    1    IgorKissil    0       

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

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

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

2 стартмани

02.09.2019    3269    12    leoxz    62       

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

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

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

1 стартмани

30.08.2019    2653    4    mvxyz    59       

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

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

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

1 стартмани

30.06.2019    1155    5    Asdam    0       

Цифровая подпись 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    3105    12    PythonJ    25       

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

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

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

3 стартмани

16.04.2019    1255    1    bashinsky    2       

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

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

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

1 стартмани

18.02.2019    2074    5    BigTaur    6       

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

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

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

1 стартмани

06.02.2019    6154    29    semagin@gmail.com    8       

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

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

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

1 стартмани

03.12.2018    4115    6    BigB    10       

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

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

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

1 стартмани

25.10.2018    4002    2    ikekoval    2       

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

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

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

1 стартмани

16.02.2018    9092    11    adam26    9       

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

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

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

1 стартмани

14.12.2017    4665    3    unregisteret    3       

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

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

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

1 стартмани

11.12.2017    7228    10    Zahary    5       

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

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

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

1 стартмани

05.12.2017    5820    14    timothy_    3       

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

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

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

10 стартмани

09.10.2017    25078    62    VsHome    5       

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

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

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

1 стартмани

26.06.2017    6731    2    juricher    2       

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

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

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

10 стартмани

28.02.2017    9497    24    ZadachNik1C    1       

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

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

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

1 стартмани

25.02.2017    19492    54    Knup    35       

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

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

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

1 стартмани

27.04.2016    21529    32    NikitaXa    16       

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

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

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

1 стартмани

28.03.2016    33304    320    karpik666    123       

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

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

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

1 стартмани

16.02.2016    28527    112    Юрий-К    17       

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

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

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

3 стартмани

27.01.2016    16018    28    eskor    4       

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

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

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

1 стартмани

20.12.2015    34780    306    masterkio    106       

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

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

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

1 стартмани

03.11.2015    13442    37    kser87    23       

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

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

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

3 стартмани

23.06.2015    15016    15    alex271    3       

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

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

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

5 стартмани

31.05.2015    31245    40    Naposaram    57       

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

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

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

1 стартмани

17.05.2015    27748    144    primat    22       

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

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

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

2 стартмани

15.04.2015    19532    55    MherArsh    22       

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

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

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

1 стартмани

25.11.2014    12008    13    eugeniezheludkov    5       

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

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

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

1 стартмани

06.10.2014    11898    13    insidex    3       

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

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

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

1 стартмани

21.08.2014    14268    44    ivn75    18       

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

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

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

1 стартмани

11.02.2014    13367    6    sdn-1    3       

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

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

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

1 стартмани

05.09.2013    52502    326    anig99    21       

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

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

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

1 стартмани

25.02.2013    24679    35    Diversus    29       

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

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

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

1 стартмани

21.12.2012    18399    83    vladshnurkoff    11       

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

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

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

1 стартмани

04.12.2012    13669    16    bxz    7       

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

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

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

3 стартмани

11.05.2012    36917    167    Kyrales    45       

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

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

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

1 стартмани

03.12.2010    27048    284    milkers    10       

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

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

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

1 стартмани

21.10.2010    25106    485    wacko    65       

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

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

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

1 стартмани

05.08.2010    11808    13    Larkin    1       

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

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

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

1 стартмани

13.04.2010    16855    228    simgo83    39       

Golden Key 8.1 Prototype 69

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

В этот раз не будет внешней компоненты, не будет программной оболочки. В этот раз все – средствами 1С, все просто и достаточно эффективно …

1 стартмани

30.03.2010    21764    297    O-Planet    23       

Защита внешней обработки - прячем и шифруем макет 60

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

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

2 стартмани

12.03.2010    27649    1    ll13    33