Есть ли утилита контрольной суммы, эквивалентная Hashtab для Windows?

6

Я использую Hashtab в Windows для вычисления хэша файла. Все, что мне нужно сделать, это щелкнуть правой кнопкой мыши по файлу, щелкнуть по свойствам, а в меню свойств появится вкладка Hash и будет содержать хэш файла в разных форматах, таких как MD5, SHA-1 и т. Д.

Есть ли что-то подобное для Ubuntu?

    
задан Ufoguy 14.09.2013 в 12:06
источник

4 ответа

6

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

Если вы используете Gnome и Nautilus, вы можете установить nautilus-gtkhash . Это добавляет вкладку «Дайджесты» в диалоговом окне «Свойства» для файла.

ПРИМЕЧАНИЕ. Перед появлением вкладки вам придется перезапустить Nautilus с nautilus -q .

    
ответ дан Phoeey 14.09.2013 в 12:25
источник
0

Вы также можете попробовать эту «Hash Checker»

Ссылка

HowTo -

КАК УСТАНОВИТЬ / УДАЛИТЬ Из графического интерфейса: Просто запустите сценарий «Setup» и следуйте инструкциям. От терминала: cd в папку Hash Checker и введите «./Setup -help» (без кавычек), чтобы просмотреть доступные языковые ключи.

ПРИМЕНЕНИЕ Использование с Nautilus: Щелкните правой кнопкой мыши где-нибудь в Наутилусе, перейдите в раздел Скрипты > Проверьте хэш (ы), затем перейдите к файлу, который вы хотите проверить. или (чтобы избежать просмотра файла) просто щелкните правой кнопкой мыши файл, который вы хотите проверить, затем перейдите в раздел Скрипты > Проверьте хэш (ы). Использование с любым файловым менеджером: Нажмите на значок рабочего стола Hash Checker, чтобы запустить его, затем перейдите к файлу, который вы хотите проверить.

ЗАВИСИМОСТИ Zenity (для отображения GUI) md5sum и sha256sum (большинство дистрибутивов имеют оба значения по умолчанию)

Я получил его с этого сайта

Ссылка

Вы также можете увидеть это

Ссылка

Это было упомянуто в комментариях первого сайта.

    
ответ дан Aaditya Bagga 14.09.2013 в 12:29
0

Одно настольное независимое решение GtkHash :

A GTK+ utility for computing message digests or checksums

Если вы используете Thunar, тогда вы можете использовать плагин thunar-gtkhash . Он работает аналогично расширению Наутилуса.     

ответ дан landroni 24.11.2015 в 23:20
0

Пользовательский сценарий Nautilus

Хотя существует несколько существующих утилит, всегда можно написать сценарий для выполнения такой задачи, что я и сделал. Сценарий, представленный ниже, написан на Python 3 и использует встроенные функции для выполнения вычислений хэш-сумм для нескольких типов хэшей и отображает результат в окне просмотра zenity .

Использование

Сначала настройте скрипт. Сохраните исходный код сценария как файл в папке ~/.local/share/nautilus/scripts . В моем примере я сохранил его как get_hashsums.py . Сделайте исполняемый файл с помощью параметров GUI или командой chmod +x в терминале.

В этот момент скрипт доступен через контекстное меню и будет доступен в подменю Scripts .

Когдавынажимаетеget_hashsums.py,скриптвыполнитвсенеобходимыевычисленияиотобразитокнопросмотраzenitytextсовсемисуммамихэша,которыемогутбытьвыполненычерезhashlib.

Исходныйкодсценария

Такжедоступенвмоемличном репозитории GitHub (который может содержать больше добавленных функций).

#!/usr/bin/env python3
import sys
import urllib.parse
import hashlib
import os
import subprocess
import tempfile
from collections import OrderedDict as od

def get_hashsums(file_path):
    hash_sums = od()
    hash_sums['md5sum'] = hashlib.md5()
    hash_sums['sha1sum'] = hashlib.sha1()
    hash_sums['sha224sum'] = hashlib.sha224()
    hash_sums['sha256sum'] = hashlib.sha256()
    hash_sums['sha384sum'] = hashlib.sha384()
    hash_sums['sha512sum'] = hashlib.sha512()

    with open(file_path, 'rb') as fd:
        data_chunk = fd.read(1024)
        while data_chunk:
              for hashsum in hash_sums.keys():
                  hash_sums[hashsum].update(data_chunk)
              data_chunk = fd.read(1024)

    results = od()
    for key,value in hash_sums.items():
         results[key] = value.hexdigest()         
    return results

def puke(message):
    sys.stderr.write(message + '\n')
    subprocess.call(['zenity', '--error', '--text', message])
    sys.exit(2)

def write_temp_file(data):
    temp = tempfile.mkstemp()[1]
    with open(temp, 'w') as fd:
        fd.write(data)
    return temp


def main():
    uri_list = os.getenv("NAUTILUS_SCRIPT_SELECTED_URIS").strip().split()
    output_lines = []
    for uri in uri_list:
        uri_decoded = urllib.parse.unquote(uri)
        path = uri_decoded.replace('file://','').strip()
        if not os.path.isfile(path):
             puke(path+" is not a regular file")
        text = ""
        text = path + "\n" 
        hashsums = get_hashsums(path)
        for key,value in hashsums.items():
              text = text + key + " " + value + "\n"
        output_lines.append(text)

    output_file = write_temp_file("\n".join(output_lines))
    subprocess.call(['zenity','--text-info',
                     '--title','Hash Sums',
                     '--filename',output_file])
    os.unlink(output_file)

if __name__ == '__main__': 
    try:
        main()
    except Exception as e:
        puke(repr(e))
    
ответ дан Sergiy Kolodyazhnyy 08.07.2017 в 01:40