Как захешировать данные в md5 excel

Обновлено: 06.07.2024

Существует ли функция Excel для создания хэш-значения?

Я работаю с несколькими списками данных, которые имеют ключ по имени документа. Имена документов, хотя и очень описательные, довольно громоздки, если мне нужно их просмотреть (до 256 байт-это много недвижимости), и мне бы хотелось создать меньшее ключевое поле, которое легко воспроизводится в случае, если мне нужно сделать VLOOKUP с другой workseet или книги.

Я думаю хэш из названия, который был бы уникальным и воспроизводимым на каждое название было бы больше всего соответствующий. Есть ли функция, или я смотрю на разработку собственного алгоритма?

есть мысли или идеи по той или иной стратегии?

лично я использую эту функцию VBA

настройка длины хэша

  • хэш-изначально это 28 символов Unicode строку (регистр + спецсимволы)
  • настройки длины хэш-кода со строки: Const cutoff As Integer = 5
  • 4 цифры hash = 36 коллизий в 6895 линиях = 0.5 % частота коллизий
  • 5 цифр хэш = 0 коллизий в 6895 строках = 0% коллизий

вы также можете просто скачать это пример книги и поиграйте со всеми 5 реализациями хэша. Как видите, на первом листе хорошее сравнение

Я не очень забочусь о столкновениях, но мне нужен слабый псевдорандомайзер строки, основанные на строковом поле переменной длины. Вот одно безумное решение, которое хорошо работает:

"MOD" S там предотвратить переполнить к научной нотации. 1009 является простым, может использовать что-нибудь X, так что X*255 max_int_size . 10 произвольно; используйте что угодно. Значения "Else" являются произвольными (цифры pi сюда!); используйте что угодно. Расположение символов (1,3,5,7,9) произвольное; используйте что угодно.

для достаточно небольшого списка вы можете создать скремблер (хэш-функцию бедного человека), используя встроенные функции Excel.

здесь A1 и B1 содержат случайную начальную букву и длину строки.

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

как это работает: формула использует первую букву строки и фиксированную букву, взятую из середины строки, и использует LEN () как "функция раздувания", чтобы уменьшить вероятность столкновений.

предостережение: это не хэш, но когда вам нужно что-то сделать быстро, и можете проверить результаты, чтобы увидеть, что нет никаких столкновений, он работает довольно хорошо.

изменить: Если ваши строки должны иметь переменную длину (например, полные имена), но извлекаются из записи базы данных с полями фиксированной ширины, вам нужно сделать это так это:

MD5: генерировать файлы Excel

Как сгенерировать хэш MD5 для файлов Excel?

У меня есть куча файлов, и я должен создать хеш для одного из них.

Как пример ниже

У кого-нибудь есть предложение, чтобы решить это?

3 ответа

"Выполнить задачу процесса" можно использовать для запуска сценария файла.bat. Полученный файл представляет собой файл CSV (Comma Separated Variable).

Я работаю с несколькими списками данных, которые имеют ключ по имени документа. Имена документов, хотя и очень описательные, довольно громоздки, если мне нужно их просмотреть (до 256 байт-это много недвижимости), и мне бы хотелось создать меньшее ключевое поле, которое легко воспроизводится в случае, если мне нужно сделать VLOOKUP с другой workseet или книги.

Я думаю хэш из названия, который был бы уникальным и воспроизводимым на каждое название было бы больше всего соответствующий. Есть ли функция, или я смотрю на разработку собственного алгоритма?

есть мысли или идеи по той или иной стратегии?

вам не нужно писать свою собственную функцию - другие уже сделали это за вас.
Например, я собрал и сравнил пять хэш-функций VBA на этом ответе на StackOverflow

лично я использую эту функцию VBA

  • ее назвали с =BASE64SHA1(A1) в Excel после копирования макроса в VBA модуль
  • требуется .NET, так как он использует библиотеку " Microsoft MSXML "(с опозданием обязательный)

настройка длины хэша

  • хэш-изначально это 28 символов Unicode строку (регистр + спецсимволы)
  • настройки длины хэш-кода со строки: Const cutoff As Integer = 5
  • 4 цифры hash = 36 коллизий в 6895 линиях = 0.5 % частота коллизий
  • 5 цифр хэш = 0 коллизий в 6895 строках = 0% коллизий

вы также можете просто скачать это пример книги и поиграйте со всеми 5 реализациями хэша. Как видите, на первом листе хорошее сравнение

Я не очень забочусь о столкновениях, но мне нужен слабый псевдорандомайзер строки, основанные на строковом поле переменной длины. Вот одно безумное решение, которое хорошо работает:

здесь Z2 - это ячейка, содержащая строку, которую вы хотите хэш.

"MOD" S там предотвратить переполнить к научной нотации. 1009 является простым, может использовать что-нибудь X, так что X*255 max_int_size . 10 произвольно; используйте что угодно. Значения "Else" являются произвольными (цифры pi сюда!); используйте что угодно. Расположение символов (1,3,5,7,9) произвольное; используйте что угодно.

для достаточно небольшого списка вы можете создать скремблер (хэш-функцию бедного человека), используя встроенные функции Excel.

здесь A1 и B1 содержат случайную начальную букву и длину строки.

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

как это работает: формула использует первую букву строки и фиксированную букву, взятую из середины строки, и использует LEN () как "функция раздувания", чтобы уменьшить вероятность столкновений.

предостережение: это не хэш, но когда вам нужно что-то сделать быстро, и можете проверить результаты, чтобы увидеть, что нет никаких столкновений, он работает довольно хорошо.

изменить: Если ваши строки должны иметь переменную длину (например, полные имена), но извлекаются из записи базы данных с полями фиксированной ширины, вам нужно сделать это так это:


Макрос для формирования hash-суммы по указанному файлу. Поддерживаются алгоритмы: MD2, MD5, MD4, SHA1, SHA256, SHA384 и SHA512. Сформированный hash сохраняется в буфере обмена для быстрого использования в дальнейшей работе.

Подробное описание

Как часто вы передаете или получаете по работе какие-либо файлы? Я например, очень часто что-то кому-то отправляю и также часто получаю. В ряде случаев бывает важно знать, тот ли файл вам прислали и те ли данные вы используете, которые планировалось. Сохранность и целостность передаваемых (получаемых) файлов порой бывают очень важны.

Кто работал с торрентами, наверное замечали на странице загрузки рядом с файлом, как правило, пишут его MD5 код. Задумывались зачем? Основных причин, как правило, две:
1. чтобы после загрузки файла проверить, весь ли файл был загружен
2. чтобы перед запуском файла убедиться, тот ли файл был загружен

Данный принцип применим в работе с любыми файлами, в том числе и с файлами из пакета MS Office (Excel, Access, Word и др).

Представим ситуацию.
Вы получили письмо с файлом эксель от вашего коллеги. Но по чистой случайности, коллега отправил вам старую версию файла. Хорошо, если несоответствия в данных были замечены сразу. Но могло случиться и так, что вы не заметили разницы и отправили данные дальше наверх, тем самым (сами того не желая) дезинформировав руководство.

Другой пример.
Вы скачали файл из интернета, но при запуске он не открывается. Пробуете открыть аналогичный файл у коллеги - все работает. Можно конечно загрузить файл снова, но как проверить, что и в этом случае копирование будет полноценным?

Еще пример из практики.
Ваши подчиненные (или коллеги) обязаны в определенный срок выкладывать свои отчеты (фото, excel, txt и тп. файлы) в сетевую папку. Здорово, когда можно доверять людям. Но еще лучше знать, где и на чем вас могут обмануть. Так и в этом случае. Отчет сотрудник, например, выложил вовремя, но спустя n-нное количество дней он его отредактировал (изменив дату и время редактирования файла на исходные). Визуально к файлу не подкопаться - дата создания и сохранения теже, что и раньше. Только вот сведения в нем уже другие.

MD5, равно как и MD2, MD4, SHA1, SHA2 - разновидности алгоритмов шифрования. С их помощью можно сделать, так называемый, снимок (отпечаток) файла или иначе говоря, получить hash-сумму файла. Любое изменение файла будет вести к изменению его hash-суммы.

В приложенном выше excel-шаблоне вы найдете простой пример, как получить MD5 код указанного файла. Работа шаблона основана на vba-классе clsHash, который выложен здесь. Данный класс также поддерживает алгоритмы: MD2, MD4, SHA1, SHA256, SHA384 и SHA512.

Так как весь код написан на vba, то адаптировать шаблон под свои задачи может любой желающий. При возникновении вопросов, пишите - буду рад помочь.

Александр Давыдов

Современный маркетинг требует быстрой и системной обработки массивов данных в тысячи и сотни тысяч строк.

Недавно на конференции Yet another Conference on Marketing 2016 Яндекс анонсировал сервис Аудитории. Сервис позволяет загружать и использовать в настройке рекламных кампаний собственные данные о пользователях — телефоны, почтовые адреса, идентификаторы устройств.

Мы расскажем, как за несколько простых шагов получить файл с базой адресов и подготовить его для загрузки в Аудитории. Поговорка «Лучший друг маркетолога — Excel» обретает новую жизнь.

Файл для загрузки в Аудитории

Требуемый формат файла — CSV. Большинство современных CRM могут сформировать выгрузку из списка контактов. Для примера мы использовали сегмент, полученный из Битрикс24. Для начала откроем CRM и перейдем на вкладку Лиды (или Контакты, кому как нравится). Проверьте, что пользователь имеет права на доступ к экспорту данных из CRM.

Экспорт лидов из CRM

Аудитории Яндекса строят сегменты на основе адресов электронной почты, номеров телефонов и идентификаторов мобильных устройств. Требование к количеству данных — не менее 1000 записей в файле.

Подсказка: Если у вас не хватает несколько десятков (даже сотен) данных для формирования сегмента, воспользуйтесь генератором случайных чисел для создания случайных адресов и номеров.

Мы будем использовать e-mail. Экспортируем список лидов, открываем в Excel (или Google sheets) и выполняем подготовку:

Формулы для поиска и выполнения указанных действий ниже.

Формулы для Эксель

Для удобства сортируем столбцы по колонке Результат в каждом случае и проверяем адреса на корректность.

Если адресов с ошибками мало, правим руками. Если во многих строках встречаются запятые, необходимо использовать функцию SPLIT. Она позволяет выводить текст по нескольким ячейкам в зависимости от разделяемого символа. Пример работы функции:

Результат работы функции SPLIT

После того, как все электронные адреса приведены в требуемый вид, создаем CSV-файл и переходим ко второму шагу — Хеширование адресов.

Хешируем адреса с помощью MD5

При загрузке файла в Яндекс.Аудитории можно заметить галочку «Хешированные данные». Что это? Яндекс дает возможность зашифровать данные с пометкой «Если вы опасаетесь за сохранность своих данных, записи в файле можно захешировать (md5). При этом каждую запись нужно хешировать отдельно».

Мы опасаемся за сохранность данных и будем шифровать.

Ни монструозный Excel, ни продвинутые Google таблицы не имеют готовой функции MD5. Краткий обзор форумов показал, что можно подключить некую библиотеку DLL и все заработает.

Мы подготовили PHP-скрипт, который обрабатывает файл с e-mail и предоставляет файл с хешами для загрузки. Трудоемкость разработки — не более 20 минут. Остается в табличном редакторе выделить необходимый столбец и сохранить в CSV.

Результат работы скрипта:

Хешированные email

Создаем сегмент в Яндекс.Аудиториях

Создание сегмента в Яндекс.Аудиториях

Результат загрузки файла

Сразу после загрузки файл проходит обработку. Это занимает менее 30 минут.

Загруженный сегмент в Аудитории

После обработки сегмент приобретает статус Готов и доступен для условий таргетирования, если бы не одно но!

Обработанный сегмент

Через 2 часа после создания сегмента его все еще нельзя выбрать в условиях для таргетинга. Придется подождать.

Попытка выбрать сегмент в настройках Директа

Имейте в виду задержки при планировании запусков рекламных кампаний!

May the Force be with you!

Послесловие

В пользовательском соглашении прошу обратить отдельное внимание на пункт 3.4.1. Из него следует, например, что перед тем, как загружать базу контактов в Аудитории, получите разрешение у каждого контакта персонально. Проверьте, что у вас есть такие разрешения:

Александр Давыдов

Современный маркетинг требует быстрой и системной обработки массивов данных в тысячи и сотни тысяч строк.

Недавно на конференции Yet another Conference on Marketing 2016 Яндекс анонсировал сервис Аудитории. Сервис позволяет загружать и использовать в настройке рекламных кампаний собственные данные о пользователях — телефоны, почтовые адреса, идентификаторы устройств.

Мы расскажем, как за несколько простых шагов получить файл с базой адресов и подготовить его для загрузки в Аудитории. Поговорка «Лучший друг маркетолога — Excel» обретает новую жизнь.

Файл для загрузки в Аудитории

Требуемый формат файла — CSV. Большинство современных CRM могут сформировать выгрузку из списка контактов. Для примера мы использовали сегмент, полученный из Битрикс24. Для начала откроем CRM и перейдем на вкладку Лиды (или Контакты, кому как нравится). Проверьте, что пользователь имеет права на доступ к экспорту данных из CRM.

Экспорт лидов из CRM

Аудитории Яндекса строят сегменты на основе адресов электронной почты, номеров телефонов и идентификаторов мобильных устройств. Требование к количеству данных — не менее 1000 записей в файле.

Подсказка: Если у вас не хватает несколько десятков (даже сотен) данных для формирования сегмента, воспользуйтесь генератором случайных чисел для создания случайных адресов и номеров.

Мы будем использовать e-mail. Экспортируем список лидов, открываем в Excel (или Google sheets) и выполняем подготовку:

Формулы для поиска и выполнения указанных действий ниже.

Формулы для Эксель

Для удобства сортируем столбцы по колонке Результат в каждом случае и проверяем адреса на корректность.

Если адресов с ошибками мало, правим руками. Если во многих строках встречаются запятые, необходимо использовать функцию SPLIT. Она позволяет выводить текст по нескольким ячейкам в зависимости от разделяемого символа. Пример работы функции:

Результат работы функции SPLIT

После того, как все электронные адреса приведены в требуемый вид, создаем CSV-файл и переходим ко второму шагу — Хеширование адресов.

Хешируем адреса с помощью MD5

При загрузке файла в Яндекс.Аудитории можно заметить галочку «Хешированные данные». Что это? Яндекс дает возможность зашифровать данные с пометкой «Если вы опасаетесь за сохранность своих данных, записи в файле можно захешировать (md5). При этом каждую запись нужно хешировать отдельно».

Мы опасаемся за сохранность данных и будем шифровать.

Ни монструозный Excel, ни продвинутые Google таблицы не имеют готовой функции MD5. Краткий обзор форумов показал, что можно подключить некую библиотеку DLL и все заработает.

Мы подготовили PHP-скрипт, который обрабатывает файл с e-mail и предоставляет файл с хешами для загрузки. Трудоемкость разработки — не более 20 минут. Остается в табличном редакторе выделить необходимый столбец и сохранить в CSV.

Результат работы скрипта:

Хешированные email

Создаем сегмент в Яндекс.Аудиториях

Создание сегмента в Яндекс.Аудиториях

Результат загрузки файла

Сразу после загрузки файл проходит обработку. Это занимает менее 30 минут.

Загруженный сегмент в Аудитории

После обработки сегмент приобретает статус Готов и доступен для условий таргетирования, если бы не одно но!

Обработанный сегмент

Через 2 часа после создания сегмента его все еще нельзя выбрать в условиях для таргетинга. Придется подождать.

Попытка выбрать сегмент в настройках Директа

Имейте в виду задержки при планировании запусков рекламных кампаний!

May the Force be with you!

Послесловие

В пользовательском соглашении прошу обратить отдельное внимание на пункт 3.4.1. Из него следует, например, что перед тем, как загружать базу контактов в Аудитории, получите разрешение у каждого контакта персонально. Проверьте, что у вас есть такие разрешения:

Читайте также: