|
Как программно получить контрольную сумму MD5 для файла в 8.2? | ☑ | ||
---|---|---|---|---|
0
VitaliySm
03.02.16
✎
23:41
|
Необходимо программно получить контрольную сумму файла MD5 платформа 8.2.18, ОС - Windows Server 2008 R2 Enterprise 64. Пробовал через CAPICOM но она в системе не установлена и админы не очень хотят её ставить. Может есть у кого другой вариант?
|
|||
1
Garykom
гуру
03.02.16
✎
23:42
|
.Net ?
|
|||
2
su_mai
04.02.16
✎
00:31
|
(0) JavaScript?
|
|||
3
VitaliySm
04.02.16
✎
00:37
|
скрипты находил, но там только для переданной строки, а мне нужно получить MD5 для файла
|
|||
4
VitaliySm
04.02.16
✎
01:24
|
Решил. Может кому пригодится, решение ниже:
Функция MD5Файл(тИмяФайла) Crypt = Новый COMОбъект("System.Security.Cryptography.SHA1Managed"); Stream = Новый COMОбъект("ADODB.Stream"); Stream.Open(); Stream.Type = 1; Stream.LoadFromFile(тИмяФайла); HashArray = Crypt.ComputeHash_2(Stream.Read()); Hash = ""; Для Каждого Число Из HashArray Цикл Hash = Hash + DecToHex(Число); КонецЦикла; Возврат Hash; КонецФункции Функция DecToHex(Знач Число) тЧисло = Число; тБаза = 16; Пока тЧисло <> 0 Цикл тПоз =тЧисло % тБаза; Результат = Сред("0123456789abcdef", тПоз + 1, 1) + Результат; тЧисло = Цел(тЧисло / тБаза); КонецЦикла; Если Число < тБаза Тогда Результат = "0" + Результат; КонецЕсли; Возврат Результат; КонецФункции |
|||
5
Garykom
гуру
04.02.16
✎
01:25
|
У меня короче ))
ПолноеИмяФайла = "D:\123.jpg"; врап=новый COMОбъект("NetObjectToIDispatch45"); md = врап.ПолучитьТип("System.Security.Cryptography.MD5"); md5 = md.Create(); file = врап.ПолучитьТип("System.IO.File"); stream = file.OpenRead(ПолноеИмяФайла); data = md5.ComputeHash(stream); bc = врап.ПолучитьТип("System.BitConverter"); хеш = bc.ToString(data); хеш = СтрЗаменить(хеш, "-", ""); Сообщить("MD5 хеш = "+хеш); |
|||
6
Garykom
гуру
04.02.16
✎
01:30
|
(4) и вы SHA1 посчитали а не MD5 ))
|
|||
7
Serginio1
04.02.16
✎
10:04
|
(5) Ну сегодня красный день календаря. Ты после меня и oleg_km третий человек кто на форуме использует NetObjectToIDispatch45
Кстати насчет ресурсов, то их желательно закрывать Обычно это stream.Close(); Но универсально так Врап.ПолучитьИнтерфейс(stream,"IDisposable").Dispose(); А то Dispose вызовется только при сборке мусора (неизвестно когда) и у тебя не будет доступа к файлу на запись Спасибо!! |
|||
8
oleg_km
04.02.16
✎
10:49
|
В 8.3 вроде встроенный объект появился ХешированиеДанных, но меня уже ломает на него переделывать.
|
|||
9
Serginio1
04.02.16
✎
11:17
|
(8) Ну у него 8.2.
Но если честно самому проще использовать классы .Net чем отслеживать нововведения в новых версиях или просто использовать уже отлаженный код используя примеры которых куча чем переписывать его под 1С |
|||
10
oleg_km
04.02.16
✎
14:55
|
(9) От тож
|
|||
11
ДенисЧ
04.02.16
✎
14:57
|
(9) А может сразу уйти с 1с и не тащить в неё всякие поделки?
|
|||
12
Serginio1
04.02.16
✎
16:02
|
(11) А зачем если они мне облегчают жизнь? Я просто сочувствую тебе? раз ты не умеешь их не только готовить, но и применять
|
|||
13
Serginio1
04.02.16
✎
16:32
|
(11) Кстати я с 1С больше 20 лет. С .Net 13 лет. Зачем мне куда то уходить. Мне проще их скрещивать увеличивая функциональность, в том числе для интеграции с другими системами.
|
|||
14
Garykom
гуру
04.02.16
✎
16:49
|
(13) +1
для работы лучше выбирать тот инструмент который более подходит из тех которыми умеешь пользоваться |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |