Имя: Пароль:
1C
1С v8
Ошибка при вызове метода контекста (ComputeHash_2) или (GetBytes_4)
0 supportingII
 
04.08.14
20:35
Добрый вечер народ...есть код

    оMD5 = Новый  COMОбъект("System.Security.Cryptography.MD5CryptoServiceProvider");
    оEnc = Новый COMОбъект("System.Text.UTF8Encoding");
    оStr = Новый COMОбъект("System.Text.StringBuilder");

    // переводим в байтовый массив
    Массив = оEnc.GetBytes_4(КодируемаяСтрока);
    
    // MD5
    Массив = оMD5.ComputeHash_2(Массив);
    
    // переведем обратно из байтового массива в строку
    КолЭлементовМассива = Массив.GetLength();
    Для Ит = 0 ПО КолЭлементовМассива - 1 Цикл
    
        оStr.AppendFormat("{0:x02}", Массив.GetValue(Ит));
    
    КонецЦикла;
    
    оMD5 = NULL;
    оEnc = NULL;
    
    Возврат оStr.ToString;

Возникают ошибки Ошибка при вызове метода контекста (ComputeHash_2) или (GetBytes_4) подскажи в какую сторону копать?
1 Garykom
 
гуру
04.08.14
20:41
v8: Преобразовать String в byte array


ЗЫ все уже украдено до нас...
2 supportingII
 
04.08.14
21:25
(1) ммм...чет не совсем понятно =\
3 Garykom
 
гуру
04.08.14
22:04
(2) типы не совпадают...массивов...
4 supportingII
 
04.08.14
22:14
(3)хм...скорее всего в другом т.к. из 10 машин на 9 работает...может быть дело в правах,или ОС самой?
5 Garykom
 
гуру
04.08.14
22:24
(4) сказали же типы не совпадают...

x86 и x64 да ? винда т.е. 32 или 64 битная
6 Garykom
 
гуру
04.08.14
22:55
еще может раз "10 машин на 9 работает" на той 1 нету .net framework'а или не тот/кривой
7 supportingII
 
05.08.14
08:44
(6) сейчас буду смотреть...где,чего не хватает...
8 supportingII
 
05.08.14
09:49
Пытаюсь использовать этот вариант

Функция  ПолучитьMD5ХэшФайла(ПутьКФайлу) Экспорт
    adTypeBinary = 1;
    
    objCrypt = Новый COMОбъект("System.Security.Cryptography.MD5CryptoServiceProvider");
    objStream = Новый COMОбъект("ADODB.Stream");
    objStream.Open();
    objStream.Type = adTypeBinary;
    objStream.LoadFromFile(ПутьКФайлу);
    HashArray = objCrypt.ComputeHash_2(objStream.Read());
    Хэш = "";
    Для каждого Число Из HashArray Цикл
        Хэш = Хэш + DecToHex(Число);
    КонецЦикла;
    //Возврат Хэш;
    Сообщить(Хэш);
КонецФункции

объясните,почему когда я создаю txt в ручную и забиваю туда значение он мне правильно переводит хэш,а когда создаю временный файл средствами 1С и помещаю туда значение он мне выдает другой хэш...пробовал с кодировкой UTF8 и без.
9 Serginio1
 
05.08.14
10:47
10 oleg_km
 
05.08.14
11:03
(8) Файлы сравни утилитой bc в бинарном режиме
11 supportingII
 
05.08.14
13:04
хм...нашел вариант в БСП,где не используются ком объекты...и норм все отрабатывает...тему можно закрывать.Всем спасибо!!!
12 Serginio1
 
05.08.14
13:41