|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
То notle, ну надеюсь Вы не обидчивый, но исправление Ваше ситуацию не исправило - показать коллизию на такой строке - уровенение на уровне 5-го класса (да даже не суть какого оно класса - вероятность возникновения коллизии на произвольных данных относительно очень высокая), VVA показал ссылку на MD5 - чем он Вас не устроил?? - не изобретайте велосипед.
з.ы. я честно говоря вообще обленился - и вытащил бы из .Net'а соответствующие классы хешей, но если хочется чистым лиспом (а если VVA до сих пор "системных" ActiveX не нашел - то считаем что их нет) - говорим спасибо LeeMac'у. з.з.ы. Вдруг вспомнил, в ассемблере был популярный прием проверки условного CRC с не сильной коллизийностью, но достаточно быстрый и "подходящий для большинства задач" - последовательное XOR'ирование аккамулятора к последовательности - реализовывался в 5 строк (ассемблера! - то есть в пять команд процессора) и соответственно по скорости был практически на уровне простого чтения аналогичного массиваиз памяти - вот Вам вариант.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Дима_,
и снова согласился. действительно можно довольно легко подобрать другую строку с тем же результатом, к примеру "wall" "rsfh" = 1501 "WALL" "rsx" = 1053 и не важно, что получается абра кадабра вполне может быть и чего то со смыслом, всех вариантов не просчитаешь. исправил.
__________________
Знание лисп: со справочником Н. Полещука |
||||
|
||||
Взял алгоритм RS Hash Function отсюда General purpose hash function algorithms library
В конце выдает количество измененных примитивов. Особо не тестировал. За основу взял код nolte. Здесь криптостойкость не требуется, главное чтобы алгоритм был быстрый и с не сильной коллизийностью Код:
без проверки Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 23.03.2016 в 23:22. |
||||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,189
|
nolte, Дима_, VVA, Спасибо вам
код протестировать пока не могу "L_ID" - думаю, лишнее. Если у объекта изменится ID, а ldata останутся, то контрольная сумма все равно изменится. Сейчас получается, что если я скопирую и вставлю объект с Ldata из буфера, то программа найдет его как отредактированный, поменяет ldata, но оставит неактуальный ID. "L_VER" и "SUM_ENT" - это минимально необходимое "L_DATE" и "RAB" - ну в общем может пригодится при разборе полетов, но тут важно насколько это увеличивает время работы программы.
__________________
apel.fas |
|||
|
||||
Цитата:
при копировании присваивается другой id, проверку добавил, добавил так же запись в файл ТХТ всех новых и измененных примитивов. пробовал ENTMAKE'ом восстанавливать из файла ТХТ - работает (на нескольких примитивах line polyline). Код:
вопрос к знатокам. пытаюсь восстановить чертеж из ТХТ файла, запись в файл осуществляется с помощью функции "21" поста 26. лисп стабильно считывает описание 544 примитивов из записанных в файл 1085 и восстанавливает их в том же файле автокада (предварительно все стерто с чертежа). я так понял, что одна из проблем это замороженные и выключенные слои, где еще может быть зарыта собака. конечная цель - полное восстановление чертежа в чистом, новом файле автокада из файла ТХТ. лисп для восстановления: Код:
__________________
Знание лисп: со справочником Н. Полещука Последний раз редактировалось nolte, 22.04.2014 в 16:38. |
||||
|
||||
Регистрация: 27.02.2008
Сообщений: 140
|
|
|||
|
||||
AcDbZombieObject (в лиспе ACAD_PROXY_ENTITY)
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
ежли это дело проверяется vla-get-objectname, то нет такого. Вот думается, что не восстанавливаются вложения блоков в блок.
__________________
Знание лисп: со справочником Н. Полещука |
||||
|
||||
Регистрация: 21.07.2008
Луцьк
Сообщений: 179
|
прямое сравнение хешев из (entget x) не будет работать
Entity name в разных сессиях будут разные надо все пары, где есть Entity name, исключать я бы рекомендовал сохранять "версию 1" в отдельный файл, а потом сравнивать с ней "версию N" |
|||
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,189
|
Vov.Ka, уже исключили
не вариант, это сильно усложнит процесс, хотя, как опцию - сравнение двух файлов - было б интересно иметь.
__________________
apel.fas |
|||
|
||||
Цитата:
На днях пришлось немного поиграться с RShash, так в некоторых случаях получал отрицательный результат. Возможно, придется полученную из entget'a строку делить на блоки по N байт для хеширования
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
VVA
отрицательный результат это всмысле со знаком минус /возможно результат отрицательных координат/, а если всмысле не уникальности то предлагаю рассмотреть первый вариант - удалять из спика, обнулять все кроме чисел /целых т дробных/ и группы 8.
__________________
Знание лисп: со справочником Н. Полещука |
||||
|
||||
Да, со знаком минус. Вполне возможно сыграли свою роль отрицательные координаты, хотя они рассматриваются не как числа. Я пока просто для себя отметил, разбираться пока нет времени. У нас тут министерство архитектуры и строительства такую ж... с аттестацией и квалификационными требованиями устроило.
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Lisp. Как выбрать три последних не удаленных примитива на чертеже используя ent* | Yura Agafonov | LISP | 17 | 27.06.2012 01:25 |
LISP. Выделение блоков с динамическими свойствами | Composter | LISP | 14 | 16.02.2012 22:42 |
LISP / AutoCAD2008 / Как программно снять выделение у примитивов, не используя sssetfirst | TararykovDG | LISP | 7 | 14.01.2011 10:48 |
LISP. Автоматическое замораживание нового слоя на выбраных вьюпортах | Yuzer | LISP | 2 | 25.12.2010 02:37 |
Произведение нескольких чисел на чертеже? Нужен Lisp по типу sum.lsp | UnAtom | LISP | 2 | 24.11.2010 20:18 |