helpf.pro
Регистрация
 0 
Распечатать

Алгоритм шифрования RC4

Для решения некоторых задач, иногда требуется имееть возможность шифровать и дешифровывать, какие-то данные. Но при этом нет возможности использовать стороние внешнии компоненты.
Предлагаем пример реализации алгоритма шифрования RC4 на встроенном языке 1С.

Код 1C v 7.x
 // оперделим два массива для формирования S-Блока
перем масТемп[254], масSБлок[254];
// переменая для управления объектом Script Control
перем олеШелл;

//*******************************************
// стрКодировать(стрИсточник, стрКлюч)
//
// Параметры:
// стрИсточник - Строка. Набор симвлов для преобразования.
// стрКлюч - Строка. Набор симвлов для формирования S-Блока.
//
// Возвращаемое значение:
// Строка. Набор симвлов после преоброзования.
//
// Описание:
// Функция шифрует или дешифрует набор символов с помощью
// S-Блока сформированного на основе ключа.
//
функция стрКодировать(стрИсточник, стрКлюч)
// Инициализация данных для формирования S-Блока
чисДлинаКлюча = стрдлина(стрКлюч);
у = 0;
для х = 1 по 254 цикл
у = у + 1;
у = ?(у > чисДлинаКлюча, 1, у);
масТемп[х] = кодсимв(сред(стрКлюч, у, 1));
масSБлок[х] = х - 1;
конеццикла;
// Формирование S-Блока
у = 0;
для х = 1 по 254 цикл
у = (у + масТемп[х] + масSБлок[х]) % 254 + 1;
чисТемп = масSБлок[х];
масSБлок[х] = масSБлок[у];
масSБлок[у] = чисТемп;
конеццикла;
// Ну и сообственно преобразование
чисДлинаТекста = стрдлина(стрИсточник);
у = 0;
ч = 0;
для х = 1 по чисДлинаТекста цикл
чисБайт = кодсимв(сред(стрИсточник, х, 1));
у = (у + 1) % 254 + 1;
ч = (ч + масSБлок[у]) % 254 + 1;
чисТемп = масSБлок[у];
масSБлок[у] = масSБлок[ч];
масSБлок[ч] = чисТемп;
чисТемп = масSБлок[(масSБлок[у] + масSБлок[ч]) % 254 + 1];
чисБайт = число(олеШелл.Run("intXOR", чисБайт, чисТемп));
Ответ = Ответ + симв(чисБайт);
конеццикла;
// Возвращаем полученную строку
возврат Ответ;
конецфункции

//*******************************************
// Этот блок обязателен.
// Необходимо что бы он отработал до первого вызова
// функции стрКодировать
//*******************************************
// Создаем объект для управления скриптами
олеШелл = создатьобъект("MSScriptControl.ScriptControl");
// Устанавливаем рабочий язык для выполнения скриптов
олеШелл.Language = "VBScript";
// Сам срипт для проведения логически-исключающего сложение двух операндов
стрКод =
"function intXOR(x, y)
| intXOR = x xor y
|end function";
// Добавим наш скрипт в котрол скриптов
олеШелл.AddCode(стрКод);

Ответ = стрКодировать("Это пример реализации алгоритма шифрования RC4 на языке 1С", "Казахстанский Клуб профессионалов 1С");
сообщить(Ответ);
Ответ = стрКодировать(Ответ, "Казахстанский Клуб профессионалов 1С");
сообщить(Ответ);

Скачивать файлы может только зарегистрированный пользователь!
Решение предложил IUnknown
Разместил:   Версии: | 7.x |  Дата:   Прочитано: 7609
 0 
Распечатать
Возможно, вас также заинтересует
Google maps, поиск оптимального маршрута 2
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; *...
ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать...
Выбор оптимального алгоритма для разбора строки в массив 0
Столкнулся с проблемой: ПолучитьСтрокуПоНомеру() медленно отрабатывает на входных данных 100 000 строк. Как сделать бытсрее? // Пример Defender aka LINN ВремяНачала = ТекущаяДата(); Сообщить(" Обработка начата: " + ВремяНачала); ...
Выгрузка / Загрузка данных посредством DBF файлов? 1
DBF-файл – это файл, в котором данные хранятся в виде таблицы (Database format). Работа с этими файлами происходит по принципу курсора, т.е. по одной строке. Для работы с DBF-файлами существует тип данных XBase. Несмотря на то, что...
Выгрузка / Загрузка данных посредством текстовых (TXT) файлов 2
Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста . Разница двух подходов состоит в способе загрузки документа: ТекстовыйДокумент загружает файл...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.