GithubHelp home page GithubHelp logo

doytsujin / horcrux Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jesseduffield/horcrux

0.0 1.0 0.0 155 KB

Split your file into encrypted fragments so that you don't need to remember a passcode

License: MIT License

Go 100.00%

horcrux's Introduction

horcrux

Split your file into encrypted horcruxes so that you don't need to remember a passcode

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

horcrux's People

Contributors

jesseduffield avatar benjamin-lee avatar dawidd6 avatar 7h3w1zz avatar semistrict avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.