Как захешировать данные в md5 excel
Существует ли функция 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.
Аудитории Яндекса строят сегменты на основе адресов электронной почты, номеров телефонов и идентификаторов мобильных устройств. Требование к количеству данных — не менее 1000 записей в файле.
Подсказка: Если у вас не хватает несколько десятков (даже сотен) данных для формирования сегмента, воспользуйтесь генератором случайных чисел для создания случайных адресов и номеров.
Мы будем использовать e-mail. Экспортируем список лидов, открываем в Excel (или Google sheets) и выполняем подготовку:
Формулы для поиска и выполнения указанных действий ниже.
Для удобства сортируем столбцы по колонке Результат в каждом случае и проверяем адреса на корректность.
Если адресов с ошибками мало, правим руками. Если во многих строках встречаются запятые, необходимо использовать функцию SPLIT. Она позволяет выводить текст по нескольким ячейкам в зависимости от разделяемого символа. Пример работы функции:
После того, как все электронные адреса приведены в требуемый вид, создаем CSV-файл и переходим ко второму шагу — Хеширование адресов.
Хешируем адреса с помощью MD5
При загрузке файла в Яндекс.Аудитории можно заметить галочку «Хешированные данные». Что это? Яндекс дает возможность зашифровать данные с пометкой «Если вы опасаетесь за сохранность своих данных, записи в файле можно захешировать (md5). При этом каждую запись нужно хешировать отдельно».
Мы опасаемся за сохранность данных и будем шифровать.
Ни монструозный Excel, ни продвинутые Google таблицы не имеют готовой функции MD5. Краткий обзор форумов показал, что можно подключить некую библиотеку DLL и все заработает.
Мы подготовили PHP-скрипт, который обрабатывает файл с e-mail и предоставляет файл с хешами для загрузки. Трудоемкость разработки — не более 20 минут. Остается в табличном редакторе выделить необходимый столбец и сохранить в CSV.
Результат работы скрипта:
Создаем сегмент в Яндекс.Аудиториях
Результат загрузки файла
Сразу после загрузки файл проходит обработку. Это занимает менее 30 минут.
После обработки сегмент приобретает статус Готов и доступен для условий таргетирования, если бы не одно но!
Через 2 часа после создания сегмента его все еще нельзя выбрать в условиях для таргетинга. Придется подождать.
Имейте в виду задержки при планировании запусков рекламных кампаний!
May the Force be with you!
Послесловие
В пользовательском соглашении прошу обратить отдельное внимание на пункт 3.4.1. Из него следует, например, что перед тем, как загружать базу контактов в Аудитории, получите разрешение у каждого контакта персонально. Проверьте, что у вас есть такие разрешения:
Современный маркетинг требует быстрой и системной обработки массивов данных в тысячи и сотни тысяч строк.
Недавно на конференции Yet another Conference on Marketing 2016 Яндекс анонсировал сервис Аудитории. Сервис позволяет загружать и использовать в настройке рекламных кампаний собственные данные о пользователях — телефоны, почтовые адреса, идентификаторы устройств.
Мы расскажем, как за несколько простых шагов получить файл с базой адресов и подготовить его для загрузки в Аудитории. Поговорка «Лучший друг маркетолога — Excel» обретает новую жизнь.
Файл для загрузки в Аудитории
Требуемый формат файла — CSV. Большинство современных CRM могут сформировать выгрузку из списка контактов. Для примера мы использовали сегмент, полученный из Битрикс24. Для начала откроем CRM и перейдем на вкладку Лиды (или Контакты, кому как нравится). Проверьте, что пользователь имеет права на доступ к экспорту данных из CRM.
Аудитории Яндекса строят сегменты на основе адресов электронной почты, номеров телефонов и идентификаторов мобильных устройств. Требование к количеству данных — не менее 1000 записей в файле.
Подсказка: Если у вас не хватает несколько десятков (даже сотен) данных для формирования сегмента, воспользуйтесь генератором случайных чисел для создания случайных адресов и номеров.
Мы будем использовать e-mail. Экспортируем список лидов, открываем в Excel (или Google sheets) и выполняем подготовку:
Формулы для поиска и выполнения указанных действий ниже.
Для удобства сортируем столбцы по колонке Результат в каждом случае и проверяем адреса на корректность.
Если адресов с ошибками мало, правим руками. Если во многих строках встречаются запятые, необходимо использовать функцию SPLIT. Она позволяет выводить текст по нескольким ячейкам в зависимости от разделяемого символа. Пример работы функции:
После того, как все электронные адреса приведены в требуемый вид, создаем CSV-файл и переходим ко второму шагу — Хеширование адресов.
Хешируем адреса с помощью MD5
При загрузке файла в Яндекс.Аудитории можно заметить галочку «Хешированные данные». Что это? Яндекс дает возможность зашифровать данные с пометкой «Если вы опасаетесь за сохранность своих данных, записи в файле можно захешировать (md5). При этом каждую запись нужно хешировать отдельно».
Мы опасаемся за сохранность данных и будем шифровать.
Ни монструозный Excel, ни продвинутые Google таблицы не имеют готовой функции MD5. Краткий обзор форумов показал, что можно подключить некую библиотеку DLL и все заработает.
Мы подготовили PHP-скрипт, который обрабатывает файл с e-mail и предоставляет файл с хешами для загрузки. Трудоемкость разработки — не более 20 минут. Остается в табличном редакторе выделить необходимый столбец и сохранить в CSV.
Результат работы скрипта:
Создаем сегмент в Яндекс.Аудиториях
Результат загрузки файла
Сразу после загрузки файл проходит обработку. Это занимает менее 30 минут.
После обработки сегмент приобретает статус Готов и доступен для условий таргетирования, если бы не одно но!
Через 2 часа после создания сегмента его все еще нельзя выбрать в условиях для таргетинга. Придется подождать.
Имейте в виду задержки при планировании запусков рекламных кампаний!
May the Force be with you!
Послесловие
В пользовательском соглашении прошу обратить отдельное внимание на пункт 3.4.1. Из него следует, например, что перед тем, как загружать базу контактов в Аудитории, получите разрешение у каждого контакта персонально. Проверьте, что у вас есть такие разрешения:
Читайте также: