{"id":29175799,"url":"https://github.com/decryptable/idn45","last_synced_at":"2025-09-03T14:42:16.611Z","repository":{"id":301639418,"uuid":"1009891213","full_name":"decryptable/IDN45","owner":"decryptable","description":"A modern cryptographic hash function built in Rust","archived":false,"fork":false,"pushed_at":"2025-06-27T23:29:46.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-27T23:29:53.650Z","etag":null,"topics":["hash"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/decryptable.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-27T22:46:22.000Z","updated_at":"2025-06-27T23:29:49.000Z","dependencies_parsed_at":"2025-06-27T23:40:01.008Z","dependency_job_id":null,"html_url":"https://github.com/decryptable/IDN45","commit_stats":null,"previous_names":["decryptable/idn45"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/decryptable/IDN45","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decryptable%2FIDN45","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decryptable%2FIDN45/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decryptable%2FIDN45/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decryptable%2FIDN45/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/decryptable","download_url":"https://codeload.github.com/decryptable/IDN45/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decryptable%2FIDN45/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262996681,"owners_count":23396909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hash"],"created_at":"2025-07-01T16:11:08.344Z","updated_at":"2025-07-01T16:11:09.027Z","avatar_url":"https://github.com/decryptable.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![IDN45](https://socialify.git.ci/decryptable/IDN45/image?description=1\u0026font=Source+Code+Pro\u0026forks=1\u0026issues=1\u0026language=1\u0026logo=data%3Aimage%2Fsvg%2Bxml%2C%253Csvg%2520fill%253D%2522%2523fff%2522%2520version%253D%25221.1%2522%2520id%253D%2522Layer_1%2522%2520xmlns%253D%2522http%253A%252F%252Fwww.w3.org%252F2000%252Fsvg%2522%2520xmlns%253Axlink%253D%2522http%253A%252F%252Fwww.w3.org%252F1999%252Fxlink%2522%2520viewBox%253D%25220%25200%252024%252024%2522%2520xml%253Aspace%253D%2522preserve%2522%253E%253Cg%2520id%253D%2522SVGRepo_bgCarrier%2522%2520stroke-width%253D%25220%2522%252F%253E%253Cg%2520id%253D%2522SVGRepo_tracerCarrier%2522%2520stroke-linecap%253D%2522round%2522%2520stroke-linejoin%253D%2522round%2522%252F%253E%253Cg%2520id%253D%2522SVGRepo_iconCarrier%2522%253E%253Cpath%2520d%253D%2522M18%252C8V6h1V2h-2v2h-1v4h-5V6h1V2h-2v2H9v4H2v2h6v1H7v3H2v2h4v2H5v4h2v-1v-1h1v-4h5v1v1h-1v4h2v-2h1v-4h7v-2h-6v-1h1v-3h5V8%2520H18z%2520M15%252C11h-1v3H9v-1h1v-3h5V11z%2522%252F%253E%253C%252Fg%253E%253C%252Fsvg%253E\u0026name=1\u0026owner=1\u0026pattern=Circuit+Board\u0026pulls=1\u0026stargazers=1\u0026theme=Dark)\n\n# IDN45\n\n[![Build \u0026 Release IDN45](https://github.com/decryptable/IDN45/actions/workflows/build.yml/badge.svg)](https://github.com/decryptable/IDN45/actions/workflows/build.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\n**IDN45** is an educational implementation of a modern cryptographic hash function built in Rust.\n\nThis project serves as a practical exploration of cryptographic principles, demonstrating how to build a performant, cross-platform CLI tool and library in Rust.\n\n---\n\n## 🛑 CRITICAL SECURITY WARNING\n\nThis implementation is for **educational and demonstrative purposes ONLY**. It has not undergone the rigorous, public, and academic peer review that standard algorithms like SHA-256 or SHA-3 have.\n\n**DO NOT USE THIS IN A PRODUCTION ENVIRONMENT** for any security-critical application. The shorter hash formats (`uuid` and `short`) are especially insecure against collision attacks. For real-world use cases, always use established, well-vetted cryptographic libraries like the `sha2` or `sha3` crates.\n\n---\n\n## Features\n\n- **Modern Cryptographic Design**: Implements a Sponge Construction similar to Keccak/SHA-3.\n- **Flexible Output Formats**:\n  - `standard`: A secure 256-bit hash (64 hex characters).\n  - `uuid`: A 96-bit hash formatted for unique IDs (`IDN45-xxxxxxxx-xxxxxxxx-xxxxxxxx`).\n  - `short`: A 44-bit hash for decorative purposes (`xxxx:xxxxxxx`).\n- **Powerful CLI**: A full-featured command-line interface for hashing and validating text, files, and piped data.\n- **Cross-Platform**: The GitHub Actions workflow automatically builds binaries for Linux, macOS (Intel \u0026 Apple Silicon), and Windows.\n- **Usable as a Library**: Can be easily integrated into other Rust projects.\n\n## Installation\n\n### From Source\n\nEnsure you have the Rust toolchain installed. Then, clone the repository and build the project:\n\n```sh\ngit clone https://github.com/decryptable/IDN45.git\ncd IDN45\ncargo build --release\n```\n\nThe binary will be located at `target/release/idn45`. You can copy this file to a directory in your system's `PATH` (e.g., `/usr/local/bin` or `~/.cargo/bin`).\n\n### From Pre-compiled Binaries\n\nYou can download the latest pre-compiled executables for your operating system from the **[Actions tab](https://www.google.com/search?q=https://github.com/decryptable/IDN45/actions)**. Look for the latest successful run of the \"Build \u0026 Release IDN45\" workflow and download the appropriate artifact.\n\n## CLI Usage\n\nThe CLI is structured with subcommands for hashing and validating.\n\n```sh\n# Display the main help message\nidn45 --help\n\n# Display help for the 'hash' subcommand\nidn45 hash --help\n```\n\n### Hashing\n\n```sh\n# Hash a string with the default standard format (256-bit)\nidn45 hash --text \"Hello, Rust!\"\n\n# Hash a file with the UUID format\nidn45 hash --file ./Cargo.toml --format uuid\n\n# Hash a string with the short format and a salt\nidn45 hash --text \"secret_password\" --format short --salt \"my-secret-salt\"\n\n# Hash data from stdin (piping)\necho \"Piped data\" | idn45 hash\n```\n\n### Validation\n\n```sh\n# 1. First, generate a hash\nHASH=$(idn45 hash --text \"my data to validate\")\n\n# 2. Then, validate it\nidn45 validate --hash \"$HASH\" --text \"my data to validate\"\n# Output: Validation successful: Hash matches the input data.\n\n# 3. An incorrect validation will produce an error\nidn45 validate --hash \"$HASH\" --text \"wrong data\"\n# Output: Error: Validation failed: Hash does not match the input data.\n```\n\n## License\n\nThis project is licensed under the **MIT License**. See the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecryptable%2Fidn45","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdecryptable%2Fidn45","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecryptable%2Fidn45/lists"}