{"id":15608608,"url":"https://github.com/hypercubed/dice","last_synced_at":"2025-04-28T11:50:06.550Z","repository":{"id":38307496,"uuid":"439970078","full_name":"Hypercubed/dice","owner":"Hypercubed","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-16T01:00:44.000Z","size":11762,"stargazers_count":4,"open_issues_count":10,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T09:22:19.273Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://hypercubed.github.io/dice/","language":"TypeScript","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/Hypercubed.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}},"created_at":"2021-12-19T21:18:57.000Z","updated_at":"2025-03-03T11:14:14.000Z","dependencies_parsed_at":"2024-09-07T02:44:16.632Z","dependency_job_id":"52ef7bc1-8349-4678-938e-b4b8b6fdbd9b","html_url":"https://github.com/Hypercubed/dice","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/Hypercubed%2Fdice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hypercubed%2Fdice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hypercubed%2Fdice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hypercubed%2Fdice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hypercubed","download_url":"https://codeload.github.com/Hypercubed/dice/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251310514,"owners_count":21568998,"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":[],"created_at":"2024-10-03T05:21:38.298Z","updated_at":"2025-04-28T11:50:06.528Z","avatar_url":"https://github.com/Hypercubed.png","language":"TypeScript","funding_links":["https://www.buymeacoffee.com/hypercubed"],"categories":[],"sub_categories":[],"readme":"# Dice\n\nTired of worrying about your sensitive data getting into the wrong hands? DICE is here to provide a secure and convenient solution.\n\nDecode in case of Emergency (DICE) is a simple online and open-source tool to convert confidential messages into encrypted QRCodes to be decoded in case of emergency.\n\nMessages are encoded using an encryption password and aes-256-cbc encryption, the same as the one used in the [OpenSSL cli tool](https://wiki.openssl.org/index.php/Command_Line_Utilities). All encryption and decryption happens within the browser and never sent to any server. Feel free to deploy your own server for this tool but don't worry messages can always be decrypted using the OpenSSL cli tool.\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/hypercubed)\n\n## Use Case\n\nProtect Your Offline Secrets and Emergency Messages:\n\n- **Backup Codes**: Generate QR codes for your two-factor authentication backup codes. Print them and store them in a safe place.\n- **Passwords**: Create QR codes for your most important passwords. Scan them with DICE when needed, ensuring secure and offline access.\n- **Emergency Messages**: Encrypt and store important messages for loved ones in case of an emergency.\n\n## Key Benefits\n\n- **Industry-Standard Encryption**: DICE uses proven encryption methods, ensuring the highest level of security for your data.\n- **Decodable with Common Tools**: Your DICE-encrypted data can be decoded using widely available command-line tools, giving you flexibility and control.\n- **Open-Source and Transparent**: DICE is completely open-source, allowing you to inspect and verify its code.\n- **Offline PWA for Mobile and Desktop**: Run DICE as a Progressive Web App (PWA) for a standalone, offline-capable experience on both mobile and desktop devices.\n\n## How to use\n\nDICE is designed to be easily deployed to any static hosting sites. Feel free to clone and deploy DICE to your own site or use one of the following deployments:\n\n### Auto-deployed from this repo\n\n- https://hypercubed.github.io/dice/\n- https://dice-on.netlify.app/\n- https://dice-on.vercel.app/\n\n### Manual deployments (may be out of date)\n\n- https://dice.hypercubed.repl.co/\n- https://dice-on.surge.sh/\n- https://dice-on.glitch.me/\n- http://dice-on.s3-website-us-east-1.amazonaws.com/\n- https://gateway.pinata.cloud/ipfs/QmboFxoGxf3PSkYASZ2X56Pwv6quKrcW6sdoCdqVRgSMeX/#/\n- https://hypercubed.itch.io/dice\n\n### Encoding Method, Compatibility with OpenSSL\n\nText is encrypted using AES (with PBKDF2, CBC block and random IV) then base64 encoded using the same method used by `openssl`. `openssl` encryption and decryption command lines are shown below. The QR code is generated from the base64 encoded encrypted text and the current application URL (optionally disabled). If the the QR code is generated with the application URL, the encrypted text URL safe encoded and appended to the URL as a query parameter.\n\nEncode:\n\n```sh\n\u003e echo \"Hello World!\" | openssl enc -e -aes-256-cbc -A -base64 -pbkdf2 -md sha256 -iter 10000\nenter aes-256-cbc encryption password:\nVerifying - enter aes-256-cbc encryption password:\nU2FsdGVkX1/Kf8Yo6JjBh+qELWhirAXr78+bbPQjlxE=\n```\n\nDecode:\n\n```sh\n\u003e echo -n \"U2FsdGVkX1/Kf8Yo6JjBh+qELWhirAXr78+bbPQjlxE=\" | openssl enc -d -aes-256-cbc -A -base64 -pbkdf2 -md sha256 -iter 10000\nenter aes-256-cbc decryption password:\nHello World!\n```\n\nIf the encrypted value contains spaces, they should be removed before decoding or use [basenc](https://man7.org/linux/man-pages/man1/basenc.1.html) (`basenc -di --base64`) to \"ignore junk\" before passing to openssl (see example below). Notice that the `-A -base64` flags are removed from the `openssl` command line since `basenc` will decode the base64 encoded string.\n\n```sh\n\u003e echo -n \"U2Fs dGVk X1/K f8Yo 6JjB h+qE LWhi rAXr 78+b bPQj lxE=\" | basenc -di --base64 | openssl enc -d -aes-256-cbc -pbkdf2 -md sha256 -iter 10000\n```\n\nIf the encrypted value contains `-` or `_` characters, they should be replaced with `+` and `/` respectively before decoding. This is only needed if the encrypted value was extracted from a URL embedded in a QRCode by DICE. You may also use [basenc](https://man7.org/linux/man-pages/man1/basenc.1.html) (`basenc -di --base64url`) to URL safe base64 decode the encrypted value before passing to openssl (see example below).\n\n```sh\necho -n \"U2FsdGVkX1_Kf8Yo6JjBh-qELWhirAXr78-bbPQjlxE=\" | basenc -di --base64url | openssl enc -d -aes-256-cbc -pbkdf2 -md sha256 -iter 10000\n```\n\n\u003e **Note:** The `openssl` command on MacOS may point to LibreSSL. If so you may need to install OpenSSL.\n\n\u003e **Note:** The `echo` command on Windows/DOS may look a little different. Try removing the `-n` flag and quotes.\n\n## More About DICE\n\nDICE was created by Jayson Harshbarger (Hypercubed). Born out of a personal need for a secure and reliable way to store sensitive information offline. As someone who values control over my data, I found existing solutions lacking in either security or convenience.\n\nI began developing DICE several years ago and have used it personally to protect my backup codes, and other confidential information. The experience has been invaluable, and I've witnessed firsthand how it can safeguard your digital life.\n\nDriven by a desire to share this tool with others, I decided to release DICE as open-source. By making it freely available, I hope to empower individuals to take control of their digital security and protect their privacy.\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/hypercubed)\n\n## License (The MIT License)\n\nCopyright (c) 2022-2024 J. Harshbarger\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypercubed%2Fdice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhypercubed%2Fdice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypercubed%2Fdice/lists"}