Имя: Пароль:
1C
1С v8
подключения через com (ключи шифрования) ошибка
0 andrey i1c
 
03.08.20
17:41
Ниже приведен код, который по приватному ключу шифрует строку, которую передаем. Все работает. Ключ формируется автоматически и с определенным количеством символов! Если я формирую строку xml с собственным ключом, который короче, то получаю ошибку:1с Недопустимая длина массива знаков Base-64.
Нашел метод public RSACryptoServiceProvider (int dwKeySize) где в параметрах можно указать количество необходимых символов. Но как это сделать в подключении com объекта указать параметры?     ОбъектШифрования = Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider "???-вот сюда"");

&НаСервере
Процедура ЗашифроватьНажатиеНаСервере()

    ОбъектШифрования = Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider");
    //генерируем новый приватный и публичный ключи
    //в рабочей версии ключи требуется раздать пользователям и хранить
   ПубличныйКлюч = "";
   RSAСоздатьКлючи(ПубличныйКлюч); //, ПубличныйИПриватныйКлюч);
  
    Сообщить("Публичный ключ:");
    Сообщить(ПубличныйКлюч);
    
    //Инициализация объект RSA, используя данные ключа из строки XML.
    //http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.rsa.fromxmlstring.aspx
    ОбъектШифрования.FromXmlString(ПубличныйКлюч);

    //преобразование строки для шифрования в двоичный вид
    ИсхТекстДвоичн = СтрокаВДвоичныйВид(ИсхТекстСтрока);
    
    //шифруем
    ЗашифрованныйТекстДвоичн = ОбъектШифрования.Encrypt(ИсхТекстДвоичн, False);

    //преобразование зашифрованных данных в Base64
    ЗашифрованныйТекстСтр = ДвоичныеДанныеВBase64(ЗашифрованныйТекстДвоичн);
    
        Сообщить("Зашифрованный текст: ");
    Сообщить(ЗашифрованныйТекстСтр);

    ОбъектШифрования = Неопределено;
    
КонецПроцедуры


&НаСервере
Процедура RSAСоздатьКлючи(КлючШифрования) Экспорт //, КлючШифрованияИРасшифрования) Экспорт
    
    //http://msdn.microsoft.com/ru-ru/library/system.security.cryptography.rsa.toxmlstring.aspx
    ОбъектКриптографии = Новый COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider");
    КлючШифрования = ОбъектКриптографии.ToXmlString(False);
    ОбъектКриптографии = Неопределено;
    
КонецПроцедуры
1 andrey i1c
 
03.08.20
18:45
проще говоря как получить параметр (1024) на стороне 1С в ком
new RSACryptoServiceProvider(1024);
Независимо от того, куда вы едете — это в гору и против ветра!