![]() |
![]() |
|
Как быстро посчитать CRC-файла ₽ |
☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
01.02.07
✎
19:03
|
Хочется в 1С быстро посчитать CRC файла, причем желательно CRC подлиннее, чтобы проверить, менялся файл или нет и искать дубли файлов.
|
|||
1
Neco
01.02.07
✎
21:51
|
Перечисления.НаборПравПользователей
|
|||
2
Neco
01.02.07
✎
21:52
|
(1) Тьфу ошибка ;-) Не в ту ветку
|
|||
3
shuhard
01.02.07
✎
22:35
|
(0) кроме vbs есть и другие скрипты:
ставим в каталог c:\php PHP под винду, пишем махонький скриптик: echo md5_file("c:\inna.txt"); толкаем под шелом: C:\php>php -f crc.php тащимся от хэша: 4e633321cd63d08038e0d3ab83f3a794 передачу аргументов,возврат значения и вызов из 1СV8.0 на твое усмотрение. P.S. хэлпик http://www.php.net/get/php_manual_ru.chm/from/a/mirror дистрибутив http://www.php.net/downloads.php |
|||
4
Гений 1С
гуру
02.02.07
✎
18:08
|
(3) а может не надо из пушки по воробьям???
В винде есть встроенный метод подсчета CRC или может у кого библиотека для подсчета CRC (путем чтения файла и вычисления хэш-функции)? |
|||
5
smaharbA
02.02.07
✎
18:13
|
(4) было реализовано полностью на языке 1С, но если бинарники, придется ОЛЕ цеплять...
|
|||
6
Гений 1С
гуру
02.02.07
✎
18:38
|
(5) именно, бинарники. Неужели в винде нет готовой функции для CRC???
|
|||
7
shuhard
02.02.07
✎
18:58
|
(6) тебе с шашечками или ехать ?
|
|||
8
MMF
02.02.07
✎
19:00
|
(6) Есть внешние компоненты
|
|||
9
Гений 1С
гуру
02.02.07
✎
19:12
|
(7) Мне ехать с шашечками. Мне нужно сравнивать версии файлов.
|
|||
10
Гений 1С
гуру
02.02.07
✎
19:12
|
(8) А какие?
|
|||
11
Гений 1С
гуру
02.02.07
✎
19:12
|
для восьмерки!
|
|||
12
Aka Лёвыч
02.02.07
✎
19:27
|
(4) какие пушки? Если сделаешь, как в (3), то можно легко и просто scriptlet нацарапать, который будет считать CRC
|
|||
13
MMF
02.02.07
✎
19:28
|
не помню точно, кажись на проктоклубе была Crc32. Я писал МД5, но на 8-ке не взлетит - использован IExtWindowsSupport. Ну да фигли там делать, готовые реализации каких-угодно хешей на любом языке есть, сделать ее запросто (проще, чем твое управление светофорами :-) )
|
|||
14
Гений 1С
гуру
02.02.07
✎
19:34
|
(12) Левыч, я пишу конфу, которую будут юзать на стандартных вынь-машинах. PHP там не предусмотрен. Поэтому это из пушек по воробьям.
|
|||
15
Гений 1С
гуру
02.02.07
✎
19:35
|
(13) НЕУЖЕЛИ НЕТ ТИПОВОЙ ВИНДОВОЙ? я в ауте
|
|||
16
Aka Лёвыч
02.02.07
✎
19:45
|
(15) три дня тому назад я задался тем же вопросом (надо было сравнить два каталога и идентичные файлы казнить) только безотносительно к 1с.
Поковырял msdn и на тему CRC нашел только какую-то хрень, которая вместе с офисом устанавливается и может из командной строки создавать и проверять убогие сертификаты. Как называется - не помню к сожалению |
|||
17
Aka Лёвыч
02.02.07
✎
19:49
|
Из ситуации вышел тупо и без затей - поскольку мне нужно было такой фокус срочно и один раз в жизни провернуть, я натравил на оба каталога DC++ взял получившуюся хml и уже из нее взял хэши файлов.
|
|||
18
FCIV
02.02.07
✎
19:49
|
||||
19
Гений 1С
гуру
02.02.07
✎
19:51
|
(18) мдя...
|
|||
20
Aka Лёвыч
02.02.07
✎
19:55
|
(19) а что делать?... Лень - двигатель прогресса, но не всегда :)
|
|||
21
smaharbA
02.02.07
✎
20:10
|
(6)
лень было заморачиваться с AND/XOR/POW применил скрипт, но это не очч быстрый метод... |
|||
22
Гений 1С
гуру
02.02.07
✎
20:50
|
(21) медленно
|
|||
23
shuhard
02.02.07
✎
21:06
|
(15) - MSDN поюзать в лом ?
MD5 Class Namespace: System.Security.Cryptography Assembly: mscorlib (in mscorlib.dll) Simple Name Algorithm Implementation SHA SHA1CryptoServiceProvider SHA1 SHA1CryptoServiceProvider System.Security.Cryptography.SHA1 SHA1CryptoServiceProvider System.Security.Cryptography.HashAlgorithm SHA1CryptoServiceProvider MD5 MD5CryptoServiceProvider System.Security.Cryptography.MD5 MD5CryptoServiceProvider SHA256 SHA256Managed SHA-256 SHA256Managed System.Security.Cryptography.SHA256 SHA256Managed SHA384 SHA384Managed SHA-384 SHA384Managed System.Security.Cryptography.SHA384 SHA384Managed SHA512 SHA512Managed SHA-512 SHA512Managed System.Security.Cryptography.SHA512 SHA512Managed RSA RSACryptoServiceProvider System.Security.Cryptography.RSA RSACryptoServiceProvider System.Security.Cryptography.AsymmetricAlgorithm RSACryptoServiceProvider DSA DSACryptoServiceProvider System.Security.Cryptography.DSA DSACryptoServiceProvider DES DESCryptoServiceProvider System.Security.Cryptography.DES DESCryptoServiceProvider 3DES TripleDESCryptoServiceProvider TripleDES TripleDESCryptoServiceProvider Triple DES TripleDESCryptoServiceProvider System.Security.Cryptography.TripleDES TripleDESCryptoServiceProvider System.Security.Cryptography.SymmetricAlgorithm TripleDESCryptoServiceProvider RC2 RC2CryptoServiceProvider System.Security.Cryptography.RC2 RC2CryptoServiceProvider Rijndael RijndaelManaged System.Security.Cryptography.Rijndael RijndaelManaged |
|||
24
smaharbA
02.02.07
✎
21:17
|
(23) Да, слушай, только надо фреймворк, а так да
http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cpref/html/frlrfsystemsecuritycryptographymd5classtopic.asp |
|||
25
shuhard
02.02.07
✎
21:34
|
(21) твое(Ваше) решение изящнее, к своему стыду про Math не знал
(24) пусть Гений определит входит ли .NET Framework 1.1 в понятие стандартной машинки в догон - возможно в RAR библиотеках есть,ведь RAR смело можно считать стандартным доя России офисным ПО ? |
|||
26
k23
02.02.07
✎
21:46
|
ну вы блин, и даёте. классика.
лет эннадцать назад ещё к фокспро подцепил. crc32test.cpp #include <stdio.h> #include <string.h> static const unsigned long crc_table[256] = { 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, 0x2d02ef8dL }; unsigned long crc32(unsigned long crc, const unsigned char * buf, unsigned short len) { crc ^= 0xffffffffL; while (len) { crc = crc_table[(crc ^ (*buf++)) & 0xff] ^ (crc >> 8); len--; } return crc ^ 0xffffffffL; } #define BUFSIZE (1 << 20) void main(int argc, char ** argv) { char * buf = new char[BUFSIZE]; if (buf == NULL) { puts("Out of memory"); return; } unsigned long dwCrc = 0; size_t cnt = 0; while(gets(buf)) { if ((cnt & 1) == 0) { dwCrc = crc32(dwCrc, (unsigned char *)buf, strlen(buf)); printf("%s\n%.3f\n", buf, (double)(long)dwCrc); } cnt++; } printf("CRC: %x\n", dwCrc); delete [] buf; } |
|||
27
smaharbA
02.02.07
✎
21:48
|
(26) смотри (21)
|
|||
28
k23
02.02.07
✎
21:55
|
(27) любители вайсиков потом и открывают подобные темы. мОзги тренеруйте товарищи, жизнь проще будет.
|
|||
29
shuhard
02.02.07
✎
22:03
|
(26) дык при наличии булевых >> N и XOR c AND CRC посчитать можно всякими способами.
Я циклический контроль на ТМ8+ЛА2+ЛП5 паял в году этак 1987 |
|||
30
k23
02.02.07
✎
22:10
|
я же говорю, классика это.
не моё. это алгоритм, всеобщий, мировой, все это юзают. и вайсик тоже так делает. гугль спросите. |
|||
31
shuhard
02.02.07
✎
22:14
|
(30) и без гугля все за , осталось заставить Гения написать dll , язык не важен.
|
|||
32
Neco
02.02.07
✎
22:20
|
(30) Классно! Теперь тоже самое на 1С
ЗЫ: Любитель не любитель, а задачу нужно решить здесь и сейчас |
|||
33
shuhard
02.02.07
✎
22:30
|
(32) написать булеву арифметику можно , но сделать ее производительной мне не удалось, если знаешь ходы - код в студию
|
|||
34
Neco
02.02.07
✎
22:53
|
(33) Исключающее ИЛИ в 1С и лучшего пока не придумали:
Function XOR(Val ParA, Val ParB) Res = 0; Koef = 1; For BitNumber = 1 To 8 Do BitA = ParA % 2; BitB = ParB % 2; ParA = Int(ParA / 2); ParB = Int(ParB / 2); BitC = (BitA + BitB) % 2; Res = Res + BitC * Koef; Koef = Koef * 2; EndDo; Return Res; EndFunction |
|||
35
Gepard
02.02.07
✎
23:58
|
(0) сейчас добавил сюда http://d01-soft.ru/soft-vk1c.htm MD5 - попробуйте пожалуйста
|
|||
36
Gepard
03.02.07
✎
00:16
|
(35) правда тестировал пока только на двух файлах...
|
|||
37
Immortal
03.02.07
✎
00:41
|
что же ниу кого рука не поднялась то..
веточку в Бз и мну в архив. |
|||
38
shuhard
03.02.07
✎
08:30
|
(34) 72 операции с плавучкой вместо:
mov ax,123h mov bx,0ffh XOR ax,bx не взлетит |
|||
39
Ковычки
03.02.07
✎
09:18
|
(28) друх извини, моск тебе надо тренировать, ты заметил в каком разделе ветка ?
Да и нах ВК если есть (23)(24), ком объект (достаточно шустрый) напишу и в блокноте и даже без (23), такчто бросаться копипастом не стоИт... |
|||
40
Gepard
03.02.07
✎
10:06
|
(0) .Net Framework входит в стандартный набор приложений рабочей станции?
|
|||
41
Гений 1С
гуру
05.02.07
✎
18:13
|
(40) неа, XP & W2k
|
|||
42
Ковычки
05.02.07
✎
18:15
|
(41) еще актуально ?
|
|||
43
Гений 1С
гуру
05.02.07
✎
18:17
|
(42) а то...
|
|||
44
Gepard
05.02.07
✎
22:06
|
(43) не пробовали (35)?
|
|||
45
Ковычки
06.02.07
✎
00:20
|
А че делать с файлами -> 1 Мб и более ?
|
|||
46
smaharbA
06.02.07
✎
11:56
|
(алгоритм crc32 как в (26)) |
|||
47
Гений 1С
гуру
06.02.07
✎
18:18
|
(26) гы, а что это за таблица такая? crc_table, по какому принципу строится?
|
|||
48
Гений 1С
гуру
06.02.07
✎
18:18
|
(45) читать порциями.
|
|||
49
Гений 1С
гуру
06.02.07
✎
18:20
|
А 1с умеет считывать порциями двоичные файлы???
|
|||
50
smaharbA
06.02.07
✎
18:20
|
(47) это полином от edb88320
|
|||
51
Гений 1С
гуру
06.02.07
✎
18:20
|
(46) чем так извращаться, лучше весь скрипт запихнуть в vbscriptig (один скрипт) и один раз его запустить, хотя все равно медленно наверное будет. ;-)
Но пофиг - большинство файлов не более 2-3 метров. |
|||
52
smaharbA
06.02.07
✎
18:21
|
(49) смотри (46) там побайтно, но порциями ненамного сложнее
|
|||
53
Гений 1С
гуру
06.02.07
✎
18:22
|
все-таки через FileScripting? 1С не умеет двоичные читать?
|
|||
54
smaharbA
06.02.07
✎
18:22
|
(51) это не VBS скрипт - это ком объект, просто тут он вкуче с 1С, а так пожалуйста делай его отдельно и пользуй его методы
|
|||
55
smaharbA
06.02.07
✎
18:22
|
(53) там не через филескрипт, там через адодб.стрим
|
|||
56
shuhard
06.02.07
✎
20:31
|
(46) Браво
|
|||
57
Эрвинс
06.02.07
✎
20:34
|
в 1с можно dll юзать?
|
|||
58
Neco
06.02.07
✎
20:43
|
(57) COM и OLE объекты зарегистрированные в системе
|
|||
59
Эрвинс
06.02.07
✎
21:03
|
(58) что мешает написать dll для этих целей?
|
|||
60
Neco
06.02.07
✎
21:09
|
(59) Гм. ничего не мешает
|
|||
61
Gepard
06.02.07
✎
21:18
|
(59) тут просто тренировка мозгов идет...
|
|||
62
Neco
06.02.07
✎
22:19
|
Кстати о dll'ках. Накатал побырику ВК
http://proba1c.narod.ru/downloads/ExtCom_CRC.rar |
|||
63
ячссчы
07.02.07
✎
00:37
|
Хотите знать, что о вас думают окружающие?
Как относится к вашей работе ваш босс? Чем занимаются соседи? Просматривать телевизор или слушать музыку при почти выключенном звуке (полезно если у Вас спит ребенок) Или просто нужен необычный подарок? заходите сюда http://www.proslyshka.ru/index.php?refid=10306 ззз |
|||
64
smaharbA
07.02.07
✎
06:42
|
(62) к семерке ее можно подцепить ?
|
|||
65
Neco
07.02.07
✎
17:35
|
(64) Легко, только обработку свою накалякать
|
|||
66
Ковычки
07.02.07
✎
17:54
|
(65) теперь давай мд5 только "взад" ))
|
|||
67
Гений 1С
гуру
07.02.07
✎
18:08
|
Господа, а вот это все коды для какого CRC?
Я бы для файлов хотел CRC, по длине аналогичный GUID, т.е. 16 байт. Возможно сие счастье? Чтобы более-менее надежно отфильтровывать одинаковые файлы. ;-) В связке Размер файла + CRC должно по идее надежно работать. |
|||
68
Neco
07.02.07
✎
18:12
|
(67) А зачем размер файла?
(66) Нихт ферштейн. Алгоритмы нашел в Инете, смысл алгоритмов не знаю, тупо вставил в ВК, как-то работает. Правильно-ли? Не знаю. Экспериментировал с разными файлами, вроде разные по размеру, но немного отличающиеся файлы отличает. |
|||
69
Гений 1С
гуру
07.02.07
✎
18:31
|
(68) мне нужно быстро узнать, менялся файл или нет.
с нужной долей надежности об этом говорит размер файла и CRC, на дату модификации опираться не могу. |
|||
70
Гений 1С
гуру
07.02.07
✎
18:31
|
Потому что проверяю не локальный файл, а файл на http
|
|||
71
Ковычки
07.02.07
✎
18:44
|
в (46) CRC16 и CRC32, а ты захотел аж CRC64, его тоже несложно реализовать
|
|||
72
Гений 1С
гуру
07.02.07
✎
18:45
|
16 байт это CRC 128
|
|||
73
romix
модератор
07.02.07
✎
19:57
|
А у меня кажется есть MD5
http://x-romix.narod.ru/Events.rar |
|||
74
Гений 1С
гуру
08.02.07
✎
18:23
|
(73) эхъ, придется самому писать.
Не пойму этих 1снегов. вставили в систему географические схемы, а логическое и или и ксор забыли... мдя, пути 1цэ неисповедимы |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |