Есть ли способ предотвратить повторение одинаковых блоков кода в этих хеш-функциях?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ предотвратить повторение одинаковых блоков кода в этих хеш-функциях?

Сообщение Anonymous »

Я создал эту программу для вычисления хэша sha256 или sha512 данного файла и преобразования вычислений в шестнадцатеричный формат.
Она состоит из 5 файлов, 4 — пользовательских модулей и 1 — основного. .
У меня есть две функции в разных модулях, но единственная разница в этих функциях — одна переменная. См. ниже:
Из sha256.py

Код: Выделить всё

def get_hash_sha256():
global sha256_hash
filename = input("Enter the file name: ")
sha256_hash = hashlib.sha256()
with open(filename, "rb") as f:
for byte_block in iter(lambda: f.read(4096),b""):
sha256_hash.update(byte_block)
#       print("sha256 valule: \n" + Color.GREEN + sha256_hash.hexdigest())
print(Color.DARKCYAN + "sha256 value has been calculated")
color_reset()
Из sha512.py

Код: Выделить всё

def get_hash_sha512():
global sha512_hash
filename = input("Enter the file name: ")
sha512_hash = hashlib.sha512()
with open(filename, "rb") as f:
for byte_block in iter(lambda: f.read(4096),b""):
sha512_hash.update(byte_block)
#       print("sha512 valule: \n" + Color.GREEN + sha512_hash.hexdigest())
print(Color.DARKCYAN + "sha512 value has been calculated")
color_reset()
Эти функции вызываются в моем файле simple_sha_find.py:

Код: Выделить всё

def which_hash():
sha256_or_sha512 = input("Which hash do you want to calculate: sha256 or sha512? \n")
if sha256_or_sha512 == "sha256":
get_hash_sha256()
verify_checksum_sha256()
elif sha256_or_sha512 == "sha512":
get_hash_sha512()
verify_checksum_sha512()
else:
print("Type either sha256 or sha512. If you type anything else the program will close...like this.")
sys.exit()

if __name__ == "__main__":
which_hash()
Как видите, функции, которые будут вызываться, основаны на вводе пользователя. Если пользователь вводит sha256, он запускает функции из sha256.py, но если он вводит sha512, он запускает функции из sha512.py
Приложение работает, но я знаю, что могу сделать это менее избыточным, но я не знаю как.
Как я могу определить функции get_hash_sha---() иverify_checksum_sha---() один раз, и они будут выполнять соответствующие вычисления на основе выбирает ли пользователь sha256 или sha512?
Я выполнил несколько вариантов кодирования этой программы.
Я создал ее как один файл, как а также создание различных модулей и вызов функций из этих модулей.
В любом случае у меня было повторение, но я знаю, что это противоречит цели автоматизации.

Подробнее здесь: https://stackoverflow.com/questions/790 ... se-hashing
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»