Как к md5 специальным символам - связанная Миниатюра

Я записал сценарий для генерации пользовательской Миниатюры для моих файлов сырых данных Nikon (.NEF).Пока все хорошо. Теперь имя файла миниатюры должно быть md5 полного пути изображения NEF, как указано здесь ссылки.

Мой сгенерированный md5 не соответствует тому, сгенерированному от системы, вот некоторые тесты с .jpg файлом

path = 'file:///home/ricardo/Área de Trabalho/TempImgX/capa_site_01.jpg'

StrNoSpecial = 'file%3A%2F%2F%2Fhome%2Fricardo%2F%C3%81rea%20de%20Trabalho%2FTempImgX%2Fcapa_site_01.jpg'

print(hashlib.md5((path).encode()).hexdigest())
print(hashlib.md5((StrNoSpecial).encode()).hexdigest())

Результат:

f9aa4e24d9942a1b120ecc5b7af360f9
5dd1386290a8ea7642d5864c349c28d4

md5 текущей рабочей миниатюры на ползунке. папка:

1f6cd39593b60e303d26856ffa471689

Поскольку Вы видите, что хеш отличается. Действительно ли специальные символы являются проблемой здесь?

0
задан 25 March 2019 в 07:32

1 ответ

Надлежащее кодирование для имени файла, кажется:

file:///home/ricardo/%C3%81rea%20de%20Trabalho/TempImgX/capa_site_01.jpg

Это: замените все пробелы %20 и это Á с %C3%81. Не заменяйте наклонные черты / и двоеточие :. Затем (в ударе):

filename="file:///home/ricardo/%C3%81rea%20de%20Trabalho/TempImgX/capa_site_01.jpg";
echo -n "$filename" | md5sum
1f6cd39593b60e303d26856ffa471689  -

Поскольку @Rinzwind сказал в комментарии,

Не только {пространство}, но и ! * ' ( ) ; : @ & = + $ , / ? % # [ ] и любые символы, которые не находятся в A-Z (как диакритические знаки) [замена потребности.]

К сожалению, Вы не можете применить это правило к полному URI file:///home/ricardo/Área de Trabalho/TempImgX/capa_site_01.jpg потому что это дает file%3A%2F%2F%2Fhome%2Fricardo%2F%C3%81rea%20de%20Trabalho%2FTempImgX%2Fcapa_site_01.jpg и это не удалось.

Вместо этого алгоритм, на который инструмент NEF/thumbnail, кажется, работает как так:

  1. разделите имя файла (как /home/ricardo/Área de Trabalho/TempImgX/capa_site_01.jpg) в / в части
  2. foreach такая замена части все странные символы с их кодированием процента
  3. воссоединитесь с частями с /
  4. предварительно ожидать file://
  5. подать заявку md5 к получившей строке.
0
ответ дан 25 October 2019 в 23:27

Другие вопросы по тегам:

Похожие вопросы: