69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
import json
|
|
import sys
|
|
|
|
from cli.parse_args import parse_args
|
|
|
|
|
|
def main() -> int:
|
|
args = parse_args()
|
|
|
|
try:
|
|
if args.cmd == "hash":
|
|
from modes.hash_mode import HashMode
|
|
runner = HashMode()
|
|
result = runner.run(
|
|
variant=args.variant,
|
|
message=args.message,
|
|
salt=args.salt,
|
|
bytes=args.bytes,
|
|
)
|
|
|
|
elif args.cmd == "avalanche":
|
|
from modes.test_avalanche import AvalancheTest
|
|
runner = AvalancheTest()
|
|
result = runner.run(
|
|
variant=args.variant,
|
|
message=args.message,
|
|
salt=args.salt,
|
|
bytes=args.bytes,
|
|
)
|
|
|
|
elif args.cmd == "collisions":
|
|
from modes.test_collisions import CollisionsTest
|
|
runner = CollisionsTest()
|
|
result = runner.run(
|
|
variant=args.variant,
|
|
max_len=args.max_len,
|
|
alphabet=args.alphabet,
|
|
bytes=args.bytes,
|
|
)
|
|
|
|
elif args.cmd == "analyze":
|
|
from modes.analyze_uniformity import UniformityAnalyzer
|
|
runner = UniformityAnalyzer()
|
|
result = runner.run(
|
|
variant=args.variant,
|
|
count=args.count,
|
|
buckets=args.buckets,
|
|
)
|
|
|
|
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()
|