LINUX.ORG.RU
ФорумAdmin

Имена файлов перегони в хеши. Таблицу хеш-название храни в индексном файле или бд

 , ,


2

1

Имена файлов перегони в хеши. Таблицу хеш-название храни в индексном файле или бд.

Максимальная длина имени файла (комментарий)

Собственно вопрос - как это сделать. На пальцах, для особо одорённых?

Спасибо!



Последнее исправление: EmmGold (всего исправлений: 1)

🤌Хеш-функция — функция от☝️аргумента. Она 🫳 данные, в твоём случае — имя файла, и 🫴 тебе хеш. Потом 🫵 🤏 хеш и 👇 в таблицу. ☝️столбец — хеш, ✌️столбец — имя файла. Всё, 👏, теперь можно 👇 на диск с хешем вместо имени, а настоящее имя смотреть в табличке 👍🫶🤝.

t184256 ★★★★★
()

Спросил у ии за тебя.

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

Пройти по всем файлам в указанной директории. Для каждого файла вычислить хеш (например, используя функцию hash() в Python). Сохранить соответствие хеша и имени файла в словарь. Сериализовать словарь в JSON или pickle (если вы используете Python). Сохранить сериализованный словарь в индексный файл или базу данных. Пример кода на Python, который реализует описанный алгоритм:

import os
import json

files_dict = {}

# Перебираем все файлы в директории и вычисляем хеш каждого файла
for filename in os.listdir('/path/to/directory'):
    if os.path.isfile(os.path.join('/path/to/directory', filename)):
        with open(os.path.join('/path/to/directory', filename), 'rb') as f:
            file_hash = hash(f.read())
            files_dict[str(file_hash)] = filename

# Сохраняем словарь в JSON файл
with open('/path/to/index.json', 'w') as f:
    json.dump(files_dict, f)
В данном примере мы перебираем все файлы в директории '/path/to/directory', вычисляем хеш каждого файла и сохраняем соответствие хеша и имени файла в словарь files_dict. Затем мы сериализуем словарь в JSON файл '/path/to/index.json'.

Вместо JSON можно использовать другой формат сериализации данных, например, pickle. Если же вы хотите сохранить данные в базу данных, то вам нужно будет подключиться к базе данных и выполнить соответствующие операции вставки данных

voltmod ★★★
()
Последнее исправление: voltmod (всего исправлений: 1)
Ответ на: комментарий от voltmod

Казалось бы, ладно он не понял контекст от слова совсем, ладно жопой слушал и вместо имени собрался хешировать содержимое, но пытаться делать это функцией hash() — это просто абзац.

На случай, если кто-то придет из гугла и развесит уши — соберите уши обратно:

$ python3 -c "print(hash(open('/etc/passwd').read()))"
-6798979298503110516
$ python3 -c "print(hash(open('/etc/passwd').read()))"
1542234302422615952
t184256 ★★★★★
()