81 lines
2.1 KiB
Python
81 lines
2.1 KiB
Python
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()
|