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

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

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

base58 encode decode

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

В расширении представлены алгоритмы:

  • Кодирования / декодирования строки в base58.
  • Кодирование строк utf8 в массив байт и декодирование массива байт в строку uft8

Данные алгоритмы перенесены с JS. За основу взята библиотека ts-lib-crypto. Внешние компоненты в разработки не использовались. Для использования алгоритмов необходима платформа версии не ниже 8.3.11

Разработка распространяется под лицензией MIT.

Исходный код всех модулей представлен ниже:

 
 base58_encode
 
 base58_decode
 
 Crypt_ОбщегоНазначенияКлиентСевер
 
 СтрокаВUtf8МассивБайт
 
 МассивБайтВUtf8Строку

 

Разработка не предусматривает интерфейса и состоит только из общих модулей.

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

Наименование Файл Версия Размер
Исходный код расширения:

.zip 12,81Kb
1
.zip 0.2 12,81Kb 1 Скачать

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

Лучшие комментарии
23. mrsmrv 78 14.05.20 10:48 Сейчас в теме
Вот что получилось в итоге:

Функция КодироватьHex(пСтрокаHex, пАлфавит) Экспорт
	Возврат Кодировать(ПолучитьДвоичныеДанныеИзHexСтроки(пСтрокаHex), пАлфавит);
КонецФункции

Функция Кодировать(пДвДанные, пАлфавит) Экспорт
	лБольшоеЧисло = 0;
	лБуферДвДанных = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(пДвДанные);
	лЧислоБайт = лБуферДвДанных.Размер;
	лРазмерАлфавита = СтрДлина(пАлфавит); // Алфавит односимвольный
	
	// Получаем большое число
	лСтрока1 = "";

	Для Каждого лТекБайт Из лБуферДвДанных Цикл
		лБольшоеЧисло = лБольшоеЧисло*256 + лТекБайт;
		Если лБольшоеЧисло=0 И лТекБайт=0 Тогда
			лСтрока1 = лСтрока1 + Сред(пАлфавит,1,1); // пишем ноль вначале, если лидирующие байты - нулевые
		КонецЕсли;
	КонецЦикла;
	
	лСтрока2 = "";
	// Разделяем на символы
	лОстаток = лБольшоеЧисло%лРазмерАлфавита;
	лБольшоеЧисло = Цел(лБольшоеЧисло/лРазмерАлфавита);
	Пока лОстаток <> 0 или лБольшоеЧисло > 0 Цикл
		лСтрока2 = Сред(пАлфавит,лОстаток+1,1) + лСтрока2;
		лОстаток = лБольшоеЧисло%лРазмерАлфавита;
		лБольшоеЧисло = Цел(лБольшоеЧисло/лРазмерАлфавита);
	КонецЦикла;
	Возврат лСтрока1+лСтрока2;
КонецФункции

Функция РаскодироватьHex(пСтрока, пАлфавит) Экспорт
	Возврат ПолучитьHexСтрокуИзДвоичныхДанных(Раскодировать(пСтрока, пАлфавит));
конецФункции

Функция Раскодировать(пСтрока, пАлфавит) Экспорт
	лБольшоеЧисло = 0;
	лРазмерАлфавита = СтрДлина(пАлфавит); // Алфавит односимвольный
	лДлинаСтроки = СтрДлина(пСтрока);
	
	лНулевойСимвол = Сред(пАлфавит,1,1); // определяем количество лидирующих "нулей"
	лКолвоНулевых = 0;
	Пока Сред(пСтрока,лКолвоНулевых+1,1) = лНулевойСимвол Цикл
		лКолвоНулевых = лКолвоНулевых + 1;
	КонецЦикла;
	
	// Лидирующие нули добавляют значащие символы в любой системе счисления 1 к 1, а не как a^x = b
	лДлинаБуфера = Окр((лДлинаСтроки-лКолвоНулевых)/ЛогарифмПоОснованию(лРазмерАлфавита,256))+лКолвоНулевых+1; // Создаём буфер с учётом лидирующих "нулей" и небольшим запасом
	лБуферДвДанных = Новый БуферДвоичныхДанных(лДлинаБуфера);
	
	// Получаем большое число
	лСтрока = "";
	нн=0;
	Для н=1 по лДлинаСтроки Цикл
		лТекЧисло = СтрНайти(пАлфавит,Сред(пСтрока,н,1))-1;
		лБольшоеЧисло = лБольшоеЧисло*лРазмерАлфавита + лТекЧисло;
		Если лБольшоеЧисло=0 И лТекЧисло=0 Тогда
			нн=н;
			// лБуферДвДанных.Установить(нн,0); // пишем нулевые байты вначале, если лидирующие символы - нулевые
			// писать нулевые байты смысла нет, они и так там нулевые. просто запоминаем сколько нулевых вначале и всё.
		КонецЕсли;
	КонецЦикла;
	
	// Разделяем на байты
	н = 0;
	лОстаток = лБольшоеЧисло%256;
	лБольшоеЧисло = Цел(лБольшоеЧисло/256);
	Пока лОстаток <> 0 или лБольшоеЧисло > 1 Цикл
		лБуферДвДанных.Установить(лДлинаБуфера-н-1,лОстаток);
		лОстаток = лБольшоеЧисло%256;
		лБольшоеЧисло = Цел(лБольшоеЧисло/256);
		н = н + 1;
	КонецЦикла;
	
	лРеальнаяДлинаБуфера = нн+н;
	
	лДвДанные = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(лБуферДвДанных.Прочитать(лДлинаБуфера-лРеальнаяДлинаБуфера,лРеальнаяДлинаБуфера));
	
	Возврат лДвДанные;
КонецФункции

Функция ЛогарифмПоОснованию(Основание, Показатель)
	Возврат Log10(Показатель)/Log10(Основание);
КонецФункции
Показать
ArtemSerov; +1 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. МихаилМ 15.11.19 20:58 Сейчас в теме
в 1с8 вычислительные операции долгие. замените их подстановкой из массива(соответствия). и не по байту , а по 2-3
2. dmbarchenkov 22.04.20 00:07 Сейчас в теме
МихаилМ дело говорит, можете поправить или вам не интересно обработку дорабатывать?
3. mrsmrv 78 09.05.20 17:35 Сейчас в теме
Извините, но:
Функция base58_decode(Знач тСтр) Экспорт
	
	ALPHABET = ПолучитьСтруктуруALPHABET();
	
	Если Не ЗначениеЗаполнено(тСтр) Тогда 
		
		Возврат Новый Массив; 
		
	КонецЕсли;
Показать


не следует ли сначала проверить входное значение и потом уже получать нужные данные.
Кроме того есть такая функция ПустаяСтрока() - она вроде как побыстрее работает, потому что не проверяет на типы данных.

Далее:
Если ТипЗнч(Буфер) <> ТипЗнч(Новый Массив) Тогда 
		
		Возврат "";
		
	КонецЕсли;



не лучше ли: Если ТипЗнч(Буфер) <> Тип("Массив") Тогда
Не создавать объект массив, а просто сравнивать с типом.
ArtemSerov; +1 Ответить
4. mrsmrv 78 09.05.20 17:59 Сейчас в теме
В функции base58_decode последний цикл:
Пока (Сред(тСтр, сч, 1) = "1" и сч < Байты.Количество()) Цикл

Байты.Добавить(0);

КонецЦикла;

бесконечный.
Я обработку не скачивал, только текст публикации анализирую.
Извините.
13. mrsmrv 78 09.05.20 20:58 Сейчас в теме
(4) в цикл попадаем если входная строка например "1234" что в байтах 0, 13, 155 (0x000d9b)
5. mrsmrv 78 09.05.20 18:04 Сейчас в теме
В скачанных файлах текст модуля тот-же. Как вы тестировали?
6. mrsmrv 78 09.05.20 18:10 Сейчас в теме
В тексте статьи вы указали что "платформа версии не ниже 8.3.11", но начиная с 8.3.10. есть функция ПолучитьДвоичныеДанныеИзСтроки и обратная функция ПолучитьСтрокуИзДвоичныхДанных. Стоило ли городить функции МассивБайтВUtf8Строку, СтрокаВUtf8МассивБайт ?
7. mrsmrv 78 09.05.20 18:25 Сейчас в теме
Алфавит. Если это просто массив, а только он и используется в приведённом решении, строка не используется. Зачем тогда структура. Кроме того заполнения массива зачем-то сделано с разделителями, когда строка с алфавитом же, и так ясно что в строке каждый символ это элемент алфавита. т.е. достаточно просто пройтись по строке, забрать по одному символу с каждой позиции строки и внести её в массив:
точн
ее, проще будет так:
	Результат = Новый Структура;
	
	Результат.Вставить("Строка", 
	"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"­);
	Результат.Вставить("Массив",Новый Массив);
	Для н = 1 Пл СтрДлина(Результат.Строка) Цикл
		Результат.Массив.Добавить(Сред(Результат.Строка,н,1));
	КонецЦикла;
Показать

Ну конечно структуру можно и неиспользовать. Но это в других местах тоже потребует изменения обращения к массиву алфавита.

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

Кроме того, алфавит вообще-то судя по википедии может быть разным, исходя из этого неплохо было бы его принимать в качестве параметра.
8. mrsmrv 78 09.05.20 18:30 Сейчас в теме
В функции РазложитьМассивВСтроку
СтрокаРезультат = СтрокаРезультат + СокрЛП(Строка(ЭлементМассива)) + Разделитель;
достаточно
СтрокаРезультат = СтрокаРезультат + СокрЛП(ЭлементМассива) + Разделитель;
А учитывая, что там и так элементы без пробелов (ведь у нас там лишь элементы алфавита), то
СтрокаРезультат = СтрокаРезультат + ЭлементМассива + Разделитель;

Впрочем она и не используется
9. mrsmrv 78 09.05.20 20:00 Сейчас в теме
Вот эта конструкция:
carry = Числа[к] / 58;
carry = Число(Лев(carry, СтрНайти(carry, ",") - 1));

Может быть заменена на 

carry = Цел(Числа[к] / 58);

Кровь из глаз, ведь вы только что явно присвоили Число, дальше то Зачем это?:

				Если ЗначениеЗаполнено(carry) тогда
					
					carry = Число(carry);
					
				Иначе
					
					carry = 0;
					
				КонецЕсли;
Показать
10. mrsmrv 78 09.05.20 20:09 Сейчас в теме
А в чём тайный смысл ПобитовоеИли((carry / 58), 0), Зачем побитовое или с нулём? или это у вас так "Цел" работает?
проверил, может я уже туплю, ан нет:
Прикрепленные файлы:
11. mrsmrv 78 09.05.20 20:13 Сейчас в теме
Вот эта конструкция
Если carry % 58 = 0 Тогда 
				
				carry = ПобитовоеИли((carry / 58), 0);
				
			Иначе
				
				carry = carry / 58;
				carry = Число(Лев(carry, СтрНайти(carry, ",") - 1));
				
				Если ЗначениеЗаполнено(carry) тогда
					
					carry = Число(carry);
					
				Иначе
					
					carry = 0;
					
				КонецЕсли;
Показать

превращается в
carry = Цел(carry / 58);
12. mrsmrv 78 09.05.20 20:35 Сейчас в теме
Переписал я вашу функцию base58_encode, она и быстрее стала, судите сами:

Текст функции:

Функция base58_encode2(Знач Буфер, Знач пАлфавит = "") Экспорт
	
	Если ТипЗнч(Буфер) <> Тип("Массив") Тогда 
		Возврат "";
	КонецЕсли;
	
	Если Буфер.Количество() = 0 Тогда 
		Возврат "";
	КонецЕсли;
	
	Если пАлфавит = "" Тогда
		пАлфавит = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"­;
	КонецЕсли;
	
	лМассивАлфавита = Новый Массив;
	Для н = 1 По СтрДлина(пАлфавит) Цикл
		лМассивАлфавита.Добавить(Сред(пАлфавит,н,1));
	КонецЦикла;
	
	Числа = Новый Массив;
	Числа.Добавить(0);
	сч = 0;
	
	Пока сч < Буфер.Количество() Цикл 
		счч = 0;
		
		Пока счч < Числа.Количество() Цикл
			Числа[счч] = Числа[счч]*256;
			счч = счч + 1;
		КонецЦикла;
		
		Числа[0] = Числа[0] + Буфер[сч];
		carry = 0;
		к = 0;
		
		Пока к < Числа.Количество() Цикл 
			Числа[к] = Числа[к] + carry;
			carry = Цел(Числа[к]/58);
			Числа[к] = Числа[к] % 58;
			к = к + 1;
		КонецЦикла;
		
		Пока carry <> 0 Цикл 
			Числа.Добавить(carry % 58);
			carry = Цел(carry / 58);
		КонецЦикла;
		сч = сч + 1;
	КонецЦикла;
	сч = 0;
	Пока (Буфер[сч] = "0" И сч < Буфер.Количество() - 1) Цикл
		Числа.Добавить(0);        
		сч = сч + 1;
	КонецЦикла;
	
	Результат = "";
	
	Для Каждого Индекс из Числа Цикл 
		
		Результат = лМассивАлфавита[Индекс] + Результат;
		
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции
Показать
Прикрепленные файлы:
14. mrsmrv 78 09.05.20 21:10 Сейчас в теме
хм, а как должны кодироваться нулевые байты, если они вначале идут? У вас они игнорируются:
например: 0, 0, 0, 255, 0, 34, 0 (0х000000FF002200) кодируются сервисом: https://www.appdevtools.com/base58-encoder-decoder в строку 1117X3tT1, а у вас в строку 7X3tT1, если брать обратно строку, то у вас строка 1117X3tT1 декодируется в байты: 0, 255, 0, 34, 0 (0x00FF002200), а в выше указанном сервисе всё корректно обратно преобразуется в байты 0, 0, 0, 255, 0, 34, 0 (0х000000FF002200).
Как быть? некоторые последовательности байтов у вас туда-обратно не восстанавливаются!
15. mrsmrv 78 10.05.20 10:19 Сейчас в теме
Открыл исходник в JS, в функции Decode в конце вы строки:

for (let i = 0; string[i] === '1' && i < string.length - 1; i++) {
      bytes.push(0)
    }


"превратили" в строки:

    сч = 1;
    
    Пока (Сред(тСтр, сч, 1) = "1" и сч < Байты.Количество()) Цикл 
        
        Байты.Добавить(0);    
        
    КонецЦикла;
Показать


Хорошо, что я уже сам там поставил увеличение счётчика, проверил, работает и своей догадке нашёл подтверждение в "оригинале" JS.

т.е. свою разработку вы не тестировали?
17. ArtemSerov 20 11.05.20 07:02 Сейчас в теме
(15) Оригинал алгоритма: https://github.com/wavesplatform/ts-lib-crypto

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

(12) Спасибо, как протестирую добавлю ваш код в публикацию
20. mrsmrv 78 11.05.20 22:11 Сейчас в теме
(17)Так у вашего проекта исходник из waves был скопирован чтоли?
16. mrsmrv 78 10.05.20 19:01 Сейчас в теме
Поставил минус, за то, что вы были на сайте и не удосужились ответить ни на один вопрос.
19. mrsmrv 78 11.05.20 22:10 Сейчас в теме
(16)О, ответ, хоть на что-то. Минус отменил.
21. ArtemSerov 20 12.05.20 06:20 Сейчас в теме
(19) Мои комментарии модерируются, не могу отвечать так оперативно
(20) Да, Проект Acryl это fork waves
22. mrsmrv 78 13.05.20 22:29 Сейчас в теме
Ну и теперь самая важная информация. Попробуйте в 1С набрать код: Сообщить(pow(2,1024*1024)); и выполнить его. То-то удивитесь.
23. mrsmrv 78 14.05.20 10:48 Сейчас в теме
Вот что получилось в итоге:

Функция КодироватьHex(пСтрокаHex, пАлфавит) Экспорт
	Возврат Кодировать(ПолучитьДвоичныеДанныеИзHexСтроки(пСтрокаHex), пАлфавит);
КонецФункции

Функция Кодировать(пДвДанные, пАлфавит) Экспорт
	лБольшоеЧисло = 0;
	лБуферДвДанных = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(пДвДанные);
	лЧислоБайт = лБуферДвДанных.Размер;
	лРазмерАлфавита = СтрДлина(пАлфавит); // Алфавит односимвольный
	
	// Получаем большое число
	лСтрока1 = "";

	Для Каждого лТекБайт Из лБуферДвДанных Цикл
		лБольшоеЧисло = лБольшоеЧисло*256 + лТекБайт;
		Если лБольшоеЧисло=0 И лТекБайт=0 Тогда
			лСтрока1 = лСтрока1 + Сред(пАлфавит,1,1); // пишем ноль вначале, если лидирующие байты - нулевые
		КонецЕсли;
	КонецЦикла;
	
	лСтрока2 = "";
	// Разделяем на символы
	лОстаток = лБольшоеЧисло%лРазмерАлфавита;
	лБольшоеЧисло = Цел(лБольшоеЧисло/лРазмерАлфавита);
	Пока лОстаток <> 0 или лБольшоеЧисло > 0 Цикл
		лСтрока2 = Сред(пАлфавит,лОстаток+1,1) + лСтрока2;
		лОстаток = лБольшоеЧисло%лРазмерАлфавита;
		лБольшоеЧисло = Цел(лБольшоеЧисло/лРазмерАлфавита);
	КонецЦикла;
	Возврат лСтрока1+лСтрока2;
КонецФункции

Функция РаскодироватьHex(пСтрока, пАлфавит) Экспорт
	Возврат ПолучитьHexСтрокуИзДвоичныхДанных(Раскодировать(пСтрока, пАлфавит));
конецФункции

Функция Раскодировать(пСтрока, пАлфавит) Экспорт
	лБольшоеЧисло = 0;
	лРазмерАлфавита = СтрДлина(пАлфавит); // Алфавит односимвольный
	лДлинаСтроки = СтрДлина(пСтрока);
	
	лНулевойСимвол = Сред(пАлфавит,1,1); // определяем количество лидирующих "нулей"
	лКолвоНулевых = 0;
	Пока Сред(пСтрока,лКолвоНулевых+1,1) = лНулевойСимвол Цикл
		лКолвоНулевых = лКолвоНулевых + 1;
	КонецЦикла;
	
	// Лидирующие нули добавляют значащие символы в любой системе счисления 1 к 1, а не как a^x = b
	лДлинаБуфера = Окр((лДлинаСтроки-лКолвоНулевых)/ЛогарифмПоОснованию(лРазмерАлфавита,256))+лКолвоНулевых+1; // Создаём буфер с учётом лидирующих "нулей" и небольшим запасом
	лБуферДвДанных = Новый БуферДвоичныхДанных(лДлинаБуфера);
	
	// Получаем большое число
	лСтрока = "";
	нн=0;
	Для н=1 по лДлинаСтроки Цикл
		лТекЧисло = СтрНайти(пАлфавит,Сред(пСтрока,н,1))-1;
		лБольшоеЧисло = лБольшоеЧисло*лРазмерАлфавита + лТекЧисло;
		Если лБольшоеЧисло=0 И лТекЧисло=0 Тогда
			нн=н;
			// лБуферДвДанных.Установить(нн,0); // пишем нулевые байты вначале, если лидирующие символы - нулевые
			// писать нулевые байты смысла нет, они и так там нулевые. просто запоминаем сколько нулевых вначале и всё.
		КонецЕсли;
	КонецЦикла;
	
	// Разделяем на байты
	н = 0;
	лОстаток = лБольшоеЧисло%256;
	лБольшоеЧисло = Цел(лБольшоеЧисло/256);
	Пока лОстаток <> 0 или лБольшоеЧисло > 1 Цикл
		лБуферДвДанных.Установить(лДлинаБуфера-н-1,лОстаток);
		лОстаток = лБольшоеЧисло%256;
		лБольшоеЧисло = Цел(лБольшоеЧисло/256);
		н = н + 1;
	КонецЦикла;
	
	лРеальнаяДлинаБуфера = нн+н;
	
	лДвДанные = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(лБуферДвДанных.Прочитать(лДлинаБуфера-лРеальнаяДлинаБуфера,лРеальнаяДлинаБуфера));
	
	Возврат лДвДанные;
КонецФункции

Функция ЛогарифмПоОснованию(Основание, Показатель)
	Возврат Log10(Показатель)/Log10(Основание);
КонецФункции
Показать
ArtemSerov; +1 Ответить
Оставьте свое сообщение

См. также

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

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

13.05.2019    12821    48    PythonJ    41    

Криптография (шифрование) на эллиптических кривых

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

Тема шифрования сейчас очень популярна, а шифрование на эллиптических кривых является топом, поскольку считается одним из самых надежных криптографических алгоритмов (и поэтому используется в Bitcoin и других криптовалютах, SSL протоколе и т.д.). У меня же возник интерес - а возможно ли реализовать шифрование на эллиптических кривых средствами 1С... и теперь мне известен ответ.

3 стартмани

12.01.2021    875    1    ikar-nikolay    5    

Занимательные задачи

Защита и шифрование v8 1cv8.cf Абонемент ($m)

Решение занимательных задач средствами 1С

1 стартмани

25.11.2020    665    0    agressor    3    

Практика применения XOR. XOR кодирование строковых полей с помощью ключа. Побитовые операции

Защита и шифрование v8 1cv8.cf Украина Абонемент ($m)

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

1 стартмани

06.11.2020    1054    1    kv.lv    2    

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

Обработка документов Обработка справочников Защита и шифрование v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

17.05.2015    34545    155    primat    24    

4 лабораторные работы по шифрованию и хешированию данных средствами 1С

Защита и шифрование v8 Абонемент ($m)

Знакомил студентов с шифрованием (и хешированием) данных штатными средства платформы «1С:Предприятие 8». Материалы превратились в четыре лабораторные работы: Шифрование и расшифровка строковых полей справочников модифицированным методом Виженера; Шифрование и расшифровка строковых полей справочников модифицированным методом Виженера с использованием контрольной (хеш) суммы; Метод симметричного шифрования; Использование хеш-суммы для контроля изменения значений справочника.

2 стартмани

02.11.2020    1153    0    delta    2    

Подпись данных алгоритмами SHA + AES собственным модулем

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

Реализация подписи данных ключом длиной 256 бит алгоритмами SHA-256 + AES-256 без использования внешних компонент, zip-файлов, обращения к диску или БД и без привязки к ОС.

2 стартмани

01.11.2020    1785    3    1div0    4    

Быстрый алгоритм шифрования AES ECB 128/192/256

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

Реализация существенно оптимизированного алгоритма симметричного шифрования AES (Advanced Encryption Standard) в режиме ECB (Electronic codebook) с различной длиной ключа 128/192/256 без использования внешних компонент, zip-файлов, обращения к диску или БД и без привязки к ОС.

1 стартмани

30.10.2020    2665    13    1div0    34    

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

Защита и шифрование Обработка справочников v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

03.12.2010    31803    282    milkers    10    

Обфускатор операционного кода 1с

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

Защита обработок 1С от восстановления исходного кода awa-ким декомпилятором. Протестировано 1С:Предприятие 8.3 (8.3.16.1502)

2 стартмани

18.09.2020    4579    22    m1cr0sh    28    

Алгоритм ECDSA для кривых SECP256k1 (Биткоин/Лайткоин)

Защита и шифрование v8 1cv8.cf Абонемент ($m)

Реализация алгоритма ECDSA для кривых SECP256k1, которые лежат в основе Биткоин.

1 стартмани

19.06.2020    2086    2    NikitaXa    2    

Кодирование по алфавиту. Большие целые числа

Защита и шифрование v8 1cv8.cf Бесплатно (free)

А вы знали, что 1С умеет в очень длинные числа? Кодирование информации в строку по указанному алфавиту, возможен любой алфавит и не только. В тексте приведён алгоритм для кодирования последовательности байт в любой и из любого односимвольного алфавита.

14.05.2020    1553    mrsmrv    5    

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

Универсальные обработки Защита и шифрование v8 1cv8.cf Абонемент ($m)

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

1 стартмани

05.09.2013    66192    388    anig99    25    

Алгоритм шифрования AES ECB 128/192/256

Защита и шифрование v8 1cv8.cf Абонемент ($m)

Реализация алгоритма симметричного шифрования AES (Advanced Encryption Standard) в режиме ECB (Electronic codebook) с различной длиной ключа 128/192/256 без использования внешних компонент и zip-файлов.

1 стартмани

20.04.2020    3475    16    NikitaXa    12    

Мобильная платформа. Шифрование строк в Android при помощи внешней компоненты

Разработка внешних компонент Защита и шифрование v8::Mobile Молдова Абонемент ($m)

Внешняя компонента для мобильной платформы на Android. Шифруем строки.

3 стартмани

15.04.2020    3073    0    kinan    0    

1C и защищенное хранение данных на блокчейне: модуль интеграции от Acryl Platform

Защита и шифрование Блокчейн Расширения Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Модуль интеграция 1С и блокчейн платформы "Acryl Platform" без использования внешних компонент. Под катом реализация механизмов Base58, Blake2b, Keccak, Curv25519 (the elliptic curve Diffie–Hellman) в подсистеме "Crypt", примеры генерации ключей, адресов, подписи транзакций, запись данных в блокчейн, чтение и восстановление данных из блокчейн. Код открыть. Лицензия MIT.

1 стартмани

21.01.2020    7399    4    ArtemSerov    18    

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

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

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

3 стартмани

11.05.2012    43608    165    Kyrales    45    

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

Разработка внешних компонент Мобильная разработка Защита и шифрование v8::Mobile Абонемент ($m)

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

5 стартмани

17.09.2019    6680    1    IgorKissil    9    

Криптографическое шифрование файлов

Защита и шифрование v8 1cv8.cf Абонемент ($m)

Обработка шифрует и дешифрует файлы. 

1 стартмани

03.09.2019    3643    2    shell_maxim    0    

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

Защита и шифрование v8 v8::УФ 1cv8.cf Абонемент ($m)

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

2 стартмани

02.09.2019    12075    56    leoxz    66    

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

Защита и шифрование v8 Абонемент ($m)

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

1 стартмани

30.08.2019    13896    15    mvxyz    63    

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

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

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

1 стартмани

30.06.2019    4830    12    Asdam    1    

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

Защита и шифрование v8::Mobile Абонемент ($m)

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

3 стартмани

16.04.2019    4155    2    bashinsky    2    

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

Защита и шифрование v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

18.02.2019    5626    6    BigTaur    6    

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

Защита и шифрование v8 v8::УФ 1cv8.cf Государственные, бюджетные структуры Россия Абонемент ($m)

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

1 стартмани

06.02.2019    10984    34    semagin@gmail.com    8    

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

Защита и шифрование Обработка справочников v8 1cv8.cf Абонемент ($m)

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

1 стартмани

03.12.2018    12509    10    BigB    10    

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

Защита и шифрование v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

16.02.2018    15177    15    adam26    10    

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

Защита и шифрование v8 1cv8.cf Абонемент ($m)

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

1 стартмани

14.12.2017    7575    3    unregisteret    3    

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

Разработка внешних компонент Защита и шифрование v8 1cv8.cf Украина Абонемент ($m)

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

1 стартмани

11.12.2017    13978    25    Zahary    5    

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

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

05.12.2017    9487    16    timothy_    3    

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

Защита и шифрование v8 1cv8.cf Абонемент ($m)

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

10 стартмани

09.10.2017    36761    97    VsHome    5    

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

Обработка справочников Защита и шифрование Управление персоналом (HRM) Управление персоналом (HRM) v8 1cv8.cf БУ Абонемент ($m)

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

1 стартмани

26.06.2017    9879    4    juricher    2    

"Набор юного строителя" для реализации внутреннего шифрования и ЭЦП

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

Набор процедур и функций для организации внутрикорпоративного документооборота и согласования.

1 стартмани

09.06.2017    14722    32    eskor    11    

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

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

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

10 стартмани

28.02.2017    13524    27    ZadachNik1C    1    

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

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

25.02.2017    27853    75    Knup    38    

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

Защита и шифрование Обработка справочников v8 1cv8.cf Абонемент ($m)

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

1 стартмани

27.04.2016    34460    42    NikitaXa    21    

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

Защита и шифрование v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

28.03.2016    39742    331    karpik666    125    

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

Защита и шифрование v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

16.02.2016    36638    143    Юрий-К    20    

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

Универсальные обработки Защита и шифрование v8 1cv8.cf Абонемент ($m)

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

3 стартмани

27.01.2016    20043    30    eskor    5    

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

Защита и шифрование v8 1cv8.cf Абонемент ($m)

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

1 стартмани

20.12.2015    41279    318    masterkio    107    

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

Защита и шифрование v8 1cv8.cf Абонемент ($m)

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

1 стартмани

03.11.2015    17107    44    kser87    25    

Двухфакторная аутентификация с помощью мессенджера Telegram

Информационная безопасность Защита и шифрование Внешние источники данных v8 Россия Абонемент ($m)

Повесть о том, как приручить бота из Telegram для аутентификации пользователей при входе в приложение 1С.

1 стартмани

29.10.2015    28708    73    id-mt    12    

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

Защита и шифрование v8 1cv8.cf Абонемент ($m)

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

3 стартмани

23.06.2015    18793    16    alex271    3    

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

Информационная безопасность Защита и шифрование v8 1cv8.cf Абонемент ($m)

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

5 стартмани

31.05.2015    37141    40    Naposaram    60