{"id":22025923,"url":"https://github.com/sakryukov/storage-free-pass","last_synced_at":"2025-05-07T09:42:31.037Z","repository":{"id":49518834,"uuid":"238989151","full_name":"SAKryukov/storage-free-pass","owner":"SAKryukov","description":"Storage-Free Pass is a generator of highly secure passwords based on cryptographic hash and master password, which should be memorized; no password storage is involved","archived":false,"fork":false,"pushed_at":"2025-01-24T17:39:03.000Z","size":295,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-31T08:43:51.813Z","etag":null,"topics":["authentication","criptographic-hash","cryptography","css","html","javascript","security"],"latest_commit_sha":null,"homepage":"https://www.SAKryukov.org","language":"JavaScript","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/SAKryukov.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":"2020-02-07T17:44:36.000Z","updated_at":"2025-01-24T17:39:06.000Z","dependencies_parsed_at":"2023-01-31T07:15:44.096Z","dependency_job_id":null,"html_url":"https://github.com/SAKryukov/storage-free-pass","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAKryukov%2Fstorage-free-pass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAKryukov%2Fstorage-free-pass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAKryukov%2Fstorage-free-pass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SAKryukov%2Fstorage-free-pass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SAKryukov","download_url":"https://codeload.github.com/SAKryukov/storage-free-pass/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252852559,"owners_count":21814378,"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":["authentication","criptographic-hash","cryptography","css","html","javascript","security"],"created_at":"2024-11-30T07:20:43.653Z","updated_at":"2025-05-07T09:42:31.031Z","avatar_url":"https://github.com/SAKryukov.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# Storage-Free Pass\r\n\r\n*Generator of highly secure passwords based on cryptographic hash and master password, which should be memorized; no password storage is involved*\r\n\r\n[Original article](https://sakryukov.github.io/publications/2022-12-06.No-need-to-Store-Encrypt-or-Memorize-Passwords!.html)\r\n\r\n## Background\r\n\r\nThis password generator is deterministic. It doesn't store any passwords in any form. Instead, passwords are re-generated every time. First, [https://en.wikipedia.org/wiki/SHA-2](SHA-2) cryptographic [hash](https://en.wikipedia.org/wiki/Cryptographic_hash_function) is generated out of two strings: 1) master password, one for all accounts, memorized by the use and entered each time, and 2) _seed_, created per account, stored in the user's data. Then part of the hash is used for the generation of passwords; it uses the following parameters stored in the user's data, per account: starting position in the hash, length of a password, _character repertoire_, and shift in the character repertoire. It makes password recovery of the account passwords and the master password _infeasible_, even if access to the user-stored data is obtained.\r\n\r\n## Basic Usage\r\n\r\nCreate an HTML file and reference the script “API.js” in the `head` element:\r\n\r\n```\r\n\u003chead\u003e\r\n  \u003cscript src=\"../storage-free-pass.api/API.js\"\u003e\u003c/script\u003e\r\n\u003c/head\u003e\r\n```\r\n\r\nIn the `\u003cbody\u003e` element, add a single script. It should define the function `const userData = () =\u003e {/*...*/};` and return the structure of the user accounts. Make sure to fill in account `name` values and different `seed` values for each case. If you need to change the password, change the `seed` value. It's a good idea to use the date or date/time of password creation in the `seed` string, combined with the account name. Strictly speaking, seed values don't have to be kept secret. See [Live Demo](https://sakryukov.github.io/storage-free-pass/code/user-demo/index.html) and the page source for the complete sample. See also the product [Help](https://sakryukov.github.io/storage-free-pass/code/storage-free-pass.api/help.html).\r\n\r\nA really secret piece of data is your master password, which should better be memorized and not disclosed to anyone. It can be used for a long time. If you decide to change your master password, you would have to change all the account passwords.\r\n\r\nRun the application “index.html”. Enter the master password. The account passwords will be generated each time you modify the master passwords string. You can access the password using the buttons “Copy to clipboard” or “Toggle visibility”.\r\n\r\n## Where is the Code?\r\n\r\nFor source code, see [code](./code)\r\n\r\n[Live Demo](https://sakryukov.github.io/storage-free-pass/code/user-demo/index.html).\r\n\r\n![Screenshot](doc/main.webp)\r\n\r\n## Credits\r\n\r\nInspired by [this work](https://SS64.com/pass) by Simon Sheppard.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakryukov%2Fstorage-free-pass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsakryukov%2Fstorage-free-pass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakryukov%2Fstorage-free-pass/lists"}