Initial commit

This commit is contained in:
user
2026-07-12 14:06:45 +04:00
commit a75028d68f
148 changed files with 3275 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
from argparse import ArgumentParser
def parse_args(argv=None):
ap = ArgumentParser(
prog="app.py",
description="CLI для лабораторной по хэшированию"
)
sub = ap.add_subparsers(dest="cmd", required=True)
# --- Общие группы ---
common_variant = ArgumentParser(add_help=False)
common_variant.add_argument("-v", "--variant", choices=["1", "2", "3"], required=True,
help="Выбор варианта: 1=sin, 2=cos, 3=xor")
common_salt = ArgumentParser(add_help=False)
common_salt.add_argument("-s", "--salt", type=str, default="",
help="Соль (по умолчанию пустая)")
common_bytes = ArgumentParser(add_help=False)
common_bytes.add_argument("--bytes", type=int, default=16,
help="Количество значимых байтов хэша (по умолчанию 16)")
# --- HASH ---
sp_hash = sub.add_parser("hash", parents=[common_variant, common_salt, common_bytes],
help="Посчитать хэш сообщения")
sp_hash.add_argument("-m", "--message", type=str, default="",
help="Сообщение (может быть пустым)")
# --- AVALANCHE ---
sp_av = sub.add_parser("avalanche", parents=[common_variant, common_salt, common_bytes],
help="Тест эффекта лавины")
sp_av.add_argument("-m", "--message", type=str, required=True,
help="Базовое сообщение")
# --- COLLISIONS ---
sp_col = sub.add_parser("collisions", parents=[common_variant, common_bytes],
help="Поиск коллизий (перебор)")
sp_col.add_argument("--max-len", type=int, default=3,
help="Максимальная длина сообщений (по умолчанию 3)")
sp_col.add_argument("--alphabet", choices=["alnum", "alpha", "digits"], default="alnum",
help="Алфавит: alnum[a-z0-9], alpha[a-z], digits[0-9]")
# --- ANALYZE ---
sp_an = sub.add_parser("analyze", parents=[common_variant, common_bytes],
help="Анализ равномерности")
sp_an.add_argument("--count", type=int, default=100,
help="Сколько сообщений сгенерировать")
sp_an.add_argument("--buckets", type=int, default=10,
help="Сколько корзин для распределения (по умолчанию 10)")
return ap.parse_args(argv)