https://github.com/jesseduffield/horcrux Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Customer Stories + White papers, Ebooks, Webinars + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} jesseduffield / horcrux Public * * Notifications * Fork 100 * Star 3.7k Split your file into encrypted fragments so that you don't need to remember a passcode License MIT license 3.7k stars 100 forks Activity Star Notifications * Code * Issues 13 * Pull requests 3 * Actions * Projects 1 * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights jesseduffield/horcrux This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 3 branches 3 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/j] Use Git or checkout with SVN using the web URL. [gh repo clone jessed] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @jesseduffield jesseduffield Merge pull request #18 from henrysdev/patch-1 ... 6575949 Dec 22, 2020 Merge pull request #18 from henrysdev/patch-1 Add Project Alternative - Haystack 6575949 Git stats * 51 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github add funding.yml August 2, 2020 13:53 example fix up arg parsing January 4, 2020 00:23 pkg add MPL-2 license references August 9, 2020 15:16 .goreleaser.yml update goreleaser yaml August 2, 2020 13:48 LICENSE add license and readme January 2, 2020 17:39 README.md Add Haystack project as a project alternative August 24, 2020 16:16 go.mod Add Go module support. May 15, 2020 15:26 main.go better separation of concerns June 14, 2020 13:44 View code [ ] horcrux How it works Splitting Binding Installation Who this is for: FAQ Alternatives README.md horcrux Split your file into encrypted horcruxes so that you don't need to remember a passcode [6874747073] How it works horcrux has two commands, split and bind. Splitting If I have a file called diary.txt in my current directory I can call horcrux split diary.txt and it will prompt me for how many horcruxes I want, and how many will be needed to resurrect the original file. For example I might want 5 horcruxes with the ability to resurrect the file if I have any 3. The horcrux files will be created like so: diary_1_of_5.horcrux diary_2_of_5.horcrux ... Now you just need to disperse the horcruxes around the house on various USBs or online locations and hope you can recall where they all are! Binding To bind the horcruxes back into the original file just call horcrux bind in the directory containing the horcruxes (or pass the directory as an argument). Installation via homebrew: brew install jesseduffield/horcrux/horcrux via binary release Who this is for: * People who need to encrypt a big sensitive file like a diary and don't expect to remember any passwords years from now (but who paradoxically will be capable of remembering where they've hidden their horcruxes) * People who want to transmit files across multiple channels to substantially reduce the ability for an attacker to intercept * People named Tom Riddle FAQ Q) This isn't really in line with how horcruxes work in the harry potter universe! A) It's pretty close! You can't allow any one horcrux to be used to resurrect the original file (and why would you that would be useless) but you can allow two horcruxes to do it (so only off by one). Checkmate HP fans. Q) How does this work? A) This uses the Shamir Secret Sharing Scheme to break an encryption key into parts that can be recombined to create the original key, but only requiring a certain threshold to do so. I've adapted Hashicorp's implementation from their vault repo Alternatives * ssss. Works for keys but (as far as I know) not files themselves. * horcrux. Looks like somebody beat me to both the name and concept, however this repo doesn't support thresholds of horcruxes * Haystack. Implements another file sharding and reassembly algorithm inspired by SSSS, but requires a password for reassembly and does not support thresholds of horcruxes. About Split your file into encrypted fragments so that you don't need to remember a passcode Resources Readme License MIT license Activity Stars 3.7k stars Watchers 29 watching Forks 100 forks Report repository Releases 2 v0.2 Latest Jan 3, 2020 + 1 release Sponsor this project * * https://donorbox.org/lazygit Learn more about GitHub Sponsors Packages 0 No packages published Used by 2 * @CyberFlameGO @CyberFlameGO / horcrux-ui * @jesseduffield @jesseduffield / horcrux-ui Contributors 6 * @jesseduffield * @semistrict * @dawidd6 * @Benjamin-Lee * @henrysdev * @7h3w1zz Languages * Go 100.0% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time.