Алгоритм шифрования RC4 Для решения некоторых задач, иногда требуется имееть возможность шифровать и дешифровывать, какие-то данные. Но при этом нет возможности использовать стороние внешнии компоненты.
Предлагаем пример реализации алгоритма шифрования RC4 на встроенном языке 1С.
Код 1C v 7.x
перем масТемп[254 ], масSБлок[254 ];
перем олеШелл;
функция стрКодировать(стрИсточник, стрКлюч)
чисДлинаКлюча = стрдлина( стрКлюч) ;
у = 0 ;
для х = 1 по 254 цикл
у = у + 1 ;
у = ? ( у > чисДлинаКлюча, 1 , у) ;
масТемп[х] = кодсимв( сред( стрКлюч, у, 1 ) ) ;
масSБлок[х] = х - 1 ;
конеццикла ;
у = 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 Категория:
COM-объекты, WMI, WSH