Press enter or click to view image in full sizeMost cybersecurity professionals will tell you that a cryptographic hash involves the squeezing of data to form a fixed-length output. A demo of this is here:Tip5Tip5 is an Algebraic-oriented (AO) hash function [here], and uses a finite field (F_𝑝) with 𝑝 = 2⁶⁴ − 2³² + 1 — a “small” Goldilocks prime field. ** This file is a part of tip5xx library**/use clap::{Parser, ValueEnum};use std::error::Error;use twenty_first::{math::tip5::Tip5, prelude::{Digest, BFieldElement}};#[derive(Debug, Copy, Clone, PartialEq, Eq, ValueEnum)]enum Mode {Pair,Varlen,}#[derive(Parser)]#[command(author, version, about = "TIP5 Hash Calculator")]struct Args {/// Hash mode: 'pair' or 'varlen'#[arg(short, long, value_enum, default_value_t = Mode::Pair)]mode: Mode,/// Input digests in format (n1,n2,n3,n4,n5) for each digest#[arg(required = true, help = "Input digests in format (n1,n2,n3,n4,n5). ("Hash pair mode Digest{}, Digest{}", args.inputs[0], args.inputs[1]);let result = Tip5::hash_pair(digest1, digest2);print! ("Digest({})", result.to_string());}}Ok(())}A sample run is [Demo]:Hash pair mode Digest(06635923243246478901,08947438058482825410,01316460179998954120,11985665471998192029,14569756628708636130), Digest(06635923243246478902,08947438058482825410,01316460179998954127,11985665471998192023,14569756628708636139)Result: Digest(16064912558447642910,09028968064102432957,17557561715502144571,18410287472055724668,16895367727029851698)You can find other Low MC methods here: