2010-03-16 2 views
2

Возможно ли обнаружить изменения в кодировке base64 объекта для определения степени изменения объекта.Использование кодировки base64 в качестве механизма для обнаружения изменений

Предположим, что я отправляю вложение документов нескольким пользователям, и каждый из них вносит в него изменения и сообщения электронной почты обратно, могу ли я использовать расстояние строки между исходным base64 и полученными base64s, чтобы определить, какая версия имеет наибольшее количество изменений. Будет ли это допустимой метрикой?

Если нет, могли бы быть какие-либо другие показатели для количественной оценки дельт?

+0

Уточнение: означало, что вышеуказанное должно работать как для двоичных, так и для текстовых вложений. – Mikos

ответ

4

Это зависит полностью от типа документа, который вы закодировали. Если это был текстовый файл, то, конечно, разность в кодировке base64, вероятно, находится на одном уровне с фактическими изменениями. Тем не менее, у вас может быть формат файла, в котором изменения в содержимом фактически создают совершенно другой двоичный файл. Примером этого может быть ZIP-файл.

0

Вы должны сделать то же самое, что и diff. Затем, например, делайте метрики по размеру diff.

0

Теоретически, да, если делать умный diff (обнаружение вставок, исключений и модификаций).

На практике нет, если документы не являются абсолютно обычным текстом. Бинарные форматы не могут быть осмысленно различимы.

0

Base64 упаковывает группы из 3х8 бит в 4х6. Если вы измените одно 8-битное значение на один бит, тогда вы столкнетесь только с одним из 6-битных значений. Если вы измените на два бита, то у вас есть шанс на 5/12 ударить одно из других 6-битных значений. Поэтому, если вы считаете бит, это полностью эквивалентно; в противном случае вы будете вводить шум в зависимости от используемой метрики.