{"id":33918954,"url":"https://github.com/ree-verse/rexor","last_synced_at":"2026-04-04T13:02:34.178Z","repository":{"id":344028276,"uuid":"1081080417","full_name":"Ree-verse/ReXOR","owner":"Ree-verse","description":"Cross-platform Rust library with CLI app implementing XOR encryption/decryption","archived":false,"fork":false,"pushed_at":"2026-03-10T16:46:02.000Z","size":2076,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-13T01:15:37.037Z","etag":null,"topics":["cli","decryption","encryption","security","xor"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/ReXOR","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/Ree-verse.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-22T09:30:23.000Z","updated_at":"2026-02-28T20:38:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Ree-verse/ReXOR","commit_stats":null,"previous_names":["ree-verse/rexor"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Ree-verse/ReXOR","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ree-verse%2FReXOR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ree-verse%2FReXOR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ree-verse%2FReXOR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ree-verse%2FReXOR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ree-verse","download_url":"https://codeload.github.com/Ree-verse/ReXOR/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ree-verse%2FReXOR/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31400460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cli","decryption","encryption","security","xor"],"created_at":"2025-12-12T08:38:05.527Z","updated_at":"2026-04-04T13:02:34.173Z","avatar_url":"https://github.com/Ree-verse.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\u003ccode\u003eReXOR\u003c/code\u003e - Cross-platform Rust library with CLI app, implementing XOR encryption/decryption\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://crates.io/crates/rexor\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/ree-verse/ReXOR/main/assets/ReXOR resized.png\" alt=\"ReXOR logo\" height=\"250\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub commit activity](https://img.shields.io/github/commit-activity/w/ree-verse/rexor)](https://github.com/ree-verse/rexor/commits)\n[![GitHub Issues](https://img.shields.io/github/issues/ree-verse/rexor.svg?style=flat-square\u0026label=Issues\u0026color=d77982)](https://github.com/ree-verse/rexor/issues)\n[![CI](https://github.com/ree-verse/rexor/workflows/CI/badge.svg)](https://github.com/ree-verse/rexor/actions)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/ree-verse/rexor/blob/main/LICENSE)\n[![Discord](https://img.shields.io/discord/1262386017202212996?color=738adb\u0026label=Discord\u0026logo=discord\u0026logoColor=white\u0026style=flat-square)](https://discord.gg/ZZfqH9Z4uQ)\n\n[![Stars](https://img.shields.io/github/stars/ree-verse/rexor.svg)](https://github.com/ree-verse/rexor/stargazers)\n[![Crates.io](https://img.shields.io/crates/v/rexor.svg)](https://crates.io/crates/rexor)\n[![Crates.io Downloads](https://img.shields.io/crates/d/rexor.svg)](https://crates.io/crates/rexor)\n[![GitHub Downloads](https://img.shields.io/github/downloads/ree-verse/rexor/total.svg)](https://github.com/ree-verse/rexor/releases)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://docs.rs/rexor\"\u003eDocumentation\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"https://discord.gg/ZZfqH9Z4uQ\"\u003eDiscord\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"https://github.com/ree-verse/ReXOR/issues/new\"\u003eIssues\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\n  \u003cbr /\u003e\n\u003c/div\u003e\n\n### [Read the docs →](https://docs.rs/rexor)\n\n---\n\n## Overview\n\n`rexor` is a **simple and cross-platform Rust library with CLI app** that provides **basic file encryption and decryption** functionality using **XOR logic**. It's designed to be **easy to use** while offering **secure file protection** with **password-based encryption**.\n\n## Features\n\n- 🌐 **Cross-platform compatibility** - Works on Windows and UNIX-based systems\n- 🔐 Simple **file encryption/decryption** using **XOR logic** with a **provided password** - Quick and easy to use\n- ⚙ **Automatic or custom output file path** - Generates `.rxor` files by default, or use a custom path\n- ⚡ **Efficient processing in 8K chunks** for large files - Handles large files without using excessive memory\n- 📦 **No external dependencies** - Pure Rust implementation, no third-party crates required\n\n## Installation\n\nAdd `rexor` as a dependency in `Cargo.toml`:\n\n```toml\n[dependencies]\nReXOR = \"0.1.0\"\n```\n\n## Parameters\n\n| Parameter     | Type           | Default | Description                                                                                               |\n| ------------- | -------------- | ------- | --------------------------------------------------------------------------------------------------------- |\n| `input_path`  | `\u0026str`         | -       | Path to the file to process (for `encode`, it must exist; for `decode`, it must be a valid `.rxor` file). |\n| `password`    | `\u0026str`         | -       | The password used for XOR encryption/decryption. Must not be empty.                                       |\n| `output_path` | `Option\u003c\u0026str\u003e` | `None`  | Custom output file path. If `None`, `.rxor` is appended on encode, or stripped on decode.                 |\n\n## Return Value\n\nBoth `encode` and `decode` return a `std::io::Result\u003cString\u003e`.\n\n- On success, the `Ok` variant contains the path to the generated file.\n- On failure, an appropriate `std::io::Error` is returned, commonly due to:\n\n  - Invalid input paths or missing files\n  - Empty password (`std::io::ErrorKind::InvalidInput`)\n  - I/O issues while reading or writing files\n\n## Usage\n\n### Encoding a File\n\n```rust\nuse rexor::encode;\n\nfn main() -\u003e std::io::Result\u003c()\u003e {\n    let input = \"example.txt\";\n    let password = \"password123\";\n\n    // Encode the file into \"example.txt.rxor\"\n    let output = encode(input, password, None)?;\n    println!(\"Encoded file saved at: {}\", output);\n\n    Ok(())\n}\n```\n\n### Decoding a File\n\n```rust\nuse rexor::decode;\n\nfn main() -\u003e std::io::Result\u003c()\u003e {\n    let input = \"example.txt.rxor\";\n    let password = \"password123\";\n\n    // Decode the file back to its original form\n    let output = decode(input, password, None)?;\n    println!(\"Decoded file saved at: {}\", output);\n\n    Ok(())\n}\n```\n\n### Custom Output Paths\n\nYou can specify custom output paths for both encoding and decoding:\n\n```rust\nuse rexor::{encode, decode};\n\nfn main() -\u003e std::io::Result\u003c()\u003e {\n    let input = \"example.txt\";\n    let password = \"password123\";\n\n    // Encode to a custom location\n    let encoded = encode(input, password, Some(\"encrypted/output.rxor\"))?;\n\n    // Decode back into another file\n    let decoded = decode(\u0026encoded, password, Some(\"decrypted/example.txt\"))?;\n\n    println!(\"Encoded: {}\", encoded);\n    println!(\"Decoded: {}\", decoded);\n\n    Ok(())\n}\n```\n\n## How It Works\n\nThe library uses the XOR operation to encrypt and decrypt files with the provided password. Since XOR is reversible with the same key, the same function can be used for both encryption and decryption.\n\n---\n\n# CLI Application\n\nA **user-friendly command-line interface** for ReXOR is available as a separate application.\n\n## Features\n\n- ✨ **Interactive text-based menu interface**\n- 📁 **File selection dialogs** for choosing input and output files\n- 🔒 **Secure password entry** (input is hidden)\n- 🎨 **Colorful terminal** output for better user experience\n\n## Screenshot\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/ree-verse/ReXOR/main/assets/screenshot.png\" alt=\"ReXOR CLI screenshot\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Installation\n\n### Option 1: Via releases\n\nYou can download pre-built binaries directly from the GitHub Releases page:\n\u003e https://github.com/ree-verse/rexor/releases\n\n### Option 2: Using Cargo\n\nYou can easily install ReXOR CLI using Cargo:\n\n```bash\ncargo install ReXOR\n```\n\nAfter installation, you can run the CLI from the terminal:\n\n```bash\nReXOR\n```\n\n### Option 3: Building from source\n\nAlternatively, you can clone the repository and install the CLI locally:\n\n```bash\ngit clone https://github.com/ree-verse/ReXOR.git\ncd ReXOR\ncargo run --release\n```\n\n## Usage\n\nSimply run the application to get started.\nThe application provides an interactive menu with the following options:\n\u003e 1) Encode a file\n\u003e 2) Decode a file\n\u003e 3) Exit\n\nThe CLI guides you through:\n- Selecting the input file via a dialog\n- Entering a password (which will be hidden during typing)\n- Choosing where to save the output file\n\n## Dependencies\n\nThe CLI application uses several crates to improve the user experience:\n- `clearscreen`: For clearing the terminal\n- `colored`: For colorful text output\n- `rfd`: For file dialogs\n- `rpassword`: For secure password input (hidden input)\n\n---\n\n## Star History\n\n\u003ca href=\"https://star-history.com/#Ree-verse/ReXOR\u0026Timeline\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=ree-verse/ReXOR\u0026type=Timeline\u0026theme=dark\" /\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=ree-verse/ReXOR\u0026type=Timeline\" /\u003e\n    \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=ree-verse/ReXOR\u0026type=Timeline\" /\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e\n\n## License\n\nReleased under the [MIT License](https://github.com/ree-verse/ReXOR/blob/main/LICENSE) © 2025 [Ree-verse](https://github.com/ree-verse).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Free-verse%2Frexor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Free-verse%2Frexor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Free-verse%2Frexor/lists"}