{"id":13510850,"url":"https://github.com/skewthreads/QR-secret-sharing","last_synced_at":"2025-03-30T17:31:30.106Z","repository":{"id":47462531,"uuid":"114667098","full_name":"skewthreads/QR-secret-sharing","owner":"skewthreads","description":":lock: Create QR codes to secret-share a message. Ideal for cryptocurrency wallet recovery keys and passwords.","archived":false,"fork":false,"pushed_at":"2022-11-16T01:35:57.000Z","size":806,"stargazers_count":118,"open_issues_count":0,"forks_count":17,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-11-01T11:35:23.404Z","etag":null,"topics":["qr-code","qr-secrets","qrcode","recovery","recovery-key","secret-sharing","secrets","shamir-secret-sharing"],"latest_commit_sha":null,"homepage":"https://skewthreads.github.io/QR-secret-sharing/","language":"Python","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/skewthreads.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}},"created_at":"2017-12-18T17:08:00.000Z","updated_at":"2024-08-01T20:55:49.000Z","dependencies_parsed_at":"2023-01-21T18:55:13.031Z","dependency_job_id":null,"html_url":"https://github.com/skewthreads/QR-secret-sharing","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skewthreads%2FQR-secret-sharing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skewthreads%2FQR-secret-sharing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skewthreads%2FQR-secret-sharing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skewthreads%2FQR-secret-sharing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skewthreads","download_url":"https://codeload.github.com/skewthreads/QR-secret-sharing/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246355384,"owners_count":20763990,"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":["qr-code","qr-secrets","qrcode","recovery","recovery-key","secret-sharing","secrets","shamir-secret-sharing"],"created_at":"2024-08-01T02:01:56.485Z","updated_at":"2025-03-30T17:31:30.100Z","avatar_url":"https://github.com/skewthreads.png","language":"Python","funding_links":[],"categories":["Python","others"],"sub_categories":[],"readme":"# ![alt text][lock] QR Secret Sharing [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/skewthreads/QR-secret-sharing/blob/master/LICENSE)\n\n![alt text][flow]\n\n## Description\nCreate QR codes to secret share a message using [Shamir's secret sharing algorithm](https://dl.acm.org/citation.cfm?id=359176). Ideal for cryptocurrency wallet recovery keys, passwords, etc. Protect your message by sharing it to secrets. Print the created QR codes and store them separately somewhere safe.\n\nShares are not parts of the message. Each share does not reveal any information about the initial message itself. Restoring the initial message needs all shares combined, or a specified minimum amount (default threshold is equal to the number of shares). For more information read [Shamir's secret sharing](https://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing) algorithm, or [similar work](https://en.wikipedia.org/wiki/Secret_sharing).\n\n## Demonstration\n\n### Sharing\n`python share.py`\n\n![alt text](./images/share.png)\n\nShare 1           | Share 2           | Share 3\n:------------------:|:-------------------:|:-------------------:\n![](./images/1.png) | ![](./images/2.png) | ![](./images/3.png)\n\n### Recovering\n`python recover.py`\n\n![alt text](./images/recover.png)\n\n\n## Installation\n\n```\ngit clone https://github.com/skewthreads/QR-secret-sharing.git\ncd QR-secret-sharing\npip install -r ./requirements.txt\n```\n\n## Suggested Usage\nSuggested usage is to create 3 or more shares of your message, print the corresponding QR codes and store them in separate physical locations. In case you need to recover your original message, scan the qr codes, and input the shares in the recovery script.\n\nYou can specify the number of shares that will be sufficient to recover the original message. This threshold must obviously be greater than 2. The most secure practice is to set that threshold equal to the number of shares. If you set it to a number less than the number of shares, then you can recover your secret using less shares. For example, you can split your message into 4 shares and set your recovering threshold to 3, you can get the original message using any 3 of the 4 shares, in case that a share gets destroyed. But beware, an adversary can recover your secret using only 3 shares as well. Use this security/usability trade-off with caution.\n\n## Credits\n- [inquirer](https://github.com/magmax/python-inquirer)\n- [secretsharing](https://github.com/blockstack/secret-sharing)\n- [PyQRCode](https://github.com/mnooner256/pyqrcode)\n- [pypng](https://github.com/drj11/pypng)\n- [animation](https://github.com/bprinty/animation)\n\n## Caution\n**Always** check that you can recover your message before destroying the original.\n\n\n\n### ![alt text][skew-threads] An open-source project by Skew Threads\n\n\n[lock]: ./images/lock-small.png\n\n[flow]: ./images/QR-Secret-Sharing-flow.png\n\n[skew-threads]: ./images/skew-threads.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskewthreads%2FQR-secret-sharing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskewthreads%2FQR-secret-sharing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskewthreads%2FQR-secret-sharing/lists"}