import json import sys from cli.parse_args import parse_args def main() -> int: args = parse_args() try: if args.cmd == "keygen": # Класс для режима генерации ключей from modes.keygen import KeygenMode runner = KeygenMode() result = runner.run( p=args.p, q=args.q, min=args.min, max=args.max, bits=args.bits, seed=args.seed, ) elif args.cmd == "encrypt": # Класс для режима шифрования from modes.encrypt import EncryptMode runner = EncryptMode() result = runner.run( text=args.text, m=args.m, n=args.n, e=args.e, ) elif args.cmd == "decrypt": # Класс для режима расшифрования from modes.decrypt import DecryptMode runner = DecryptMode() result = runner.run( c=args.c, n=args.n, d=args.d, ) elif args.cmd == "auto": from modes.auto import AutoMode runner = AutoMode() result = runner.run( text=args.text, m=args.m, p=args.p, q=args.q, min=args.min, max=args.max, bits=args.bits, seed=args.seed, ) else: raise RuntimeError(f"Неизвестная команда: {args.cmd}") # Печать результата, если он что-то возвращает if result is not None: if isinstance(result, (dict, list)): print(json.dumps(result, ensure_ascii=False, indent=2)) else: print(result) return 0 except Exception as exc: print(f"Ошибка: {exc}", file=sys.stderr) return 1 if __name__ == "__main__": main()