{"id":15584232,"url":"https://github.com/ableinc/scramblr","last_synced_at":"2025-09-14T23:12:00.799Z","repository":{"id":98807711,"uuid":"371078698","full_name":"ableinc/Scramblr","owner":"ableinc","description":"A password scrambling algorithm. - Python 3.7","archived":false,"fork":false,"pushed_at":"2023-01-05T16:13:40.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-07T00:46:32.854Z","etag":null,"topics":["encryption-algorithms","encryption-decryption","password","password-generator","python3","python37","scrambling-descrambling"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ableinc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-05-26T15:14:57.000Z","updated_at":"2023-01-05T16:13:44.000Z","dependencies_parsed_at":"2023-04-18T10:46:52.344Z","dependency_job_id":null,"html_url":"https://github.com/ableinc/Scramblr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ableinc/Scramblr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ableinc%2FScramblr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ableinc%2FScramblr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ableinc%2FScramblr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ableinc%2FScramblr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ableinc","download_url":"https://codeload.github.com/ableinc/Scramblr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ableinc%2FScramblr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275180222,"owners_count":25419066,"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","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["encryption-algorithms","encryption-decryption","password","password-generator","python3","python37","scrambling-descrambling"],"created_at":"2024-10-02T20:40:27.099Z","updated_at":"2025-09-14T23:12:00.778Z","avatar_url":"https://github.com/ableinc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Scramblr\nA password scrambling algorithm that will take unsanitized user passwords then sanitize them with various alphanumeric and special characters.\n\n# Idea\nA developer would take a user's password, scramble it, then save the scrambled phrase in one database, while saving the decoder file to another database. The reason for this is to have a defense against database breaches. Even if the hacker got access to the passwords in your database, and they were able to unhash it, they would receive a phrase that is still not the user's password. Though, if the decoder file is compromised, you are back to the original issue.\n\n# Reason To Use\nSecurity is a feature and like all features, they can enhance or hinder an application's performance for users. While maintaining your application server's security, you could apply enhanced security methodologies to your dedicated decoder database. For example, you could whitelist certain IPs to access the decoder database, limiting traffic. Be sure not to create API endpoints on your application server to return the decoder file, from your decoder database, to your client-side application. That would defeat the purpose of seperating the databases. Be careful to hide or manipulate the HTTP trace header, this could give the user the direct IP address associated with your decoder database.\n\n# Decoder File\nThe decode file is saved as a hidden .pwd file in the root of the project folder. As of now it is hardcoded that way, but future updates will allow you to rename this file via environment variables.\n\n# Notes\nYou should NEVER store passwords in plain text, and this library should not replace such practice. This is a security feature, not a secure password storage replacement.\n\nIf this library is to be used with your application, do NOT store this decoder file in the same database or server (as mentioned in the Reason to Use section).\n\n# How To Use/How To Install\n\n## CLI\n```bash\nusage: cli.py [-h] [--scramble SCRAMBLE] [--unscramble UNSCRAMBLE]\n              [reverse [reverse ...]] [specialchars [specialchars ...]]\n\nEncryption tool\n\npositional arguments:\n  reverse               Use the scramblr in reverse. Unscramble with original\n                        phrase, against the scrambled phrase\n  specialchars          Whether or not to use special characters\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --scramble SCRAMBLE   The phrase to be scrambled\n  --unscramble UNSCRAMBLE\n                        The phrase to be unscrambled\n```\nRun the CLI locally:\n```bash\ngit clone https://github.com/ableinc/Scramblr.git\ncd scramblr\npython3 scramblr/cli.py --help\n```\n\n## Example\nPlease run the example.py file.\n```bash\ngit clone https://github.com/ableinc/Scramblr.git\ncd scramblr\npython3 example.py\n```\nOutput:\n```bash\nEnter phrase: hello\nOriginal Phrase:  hello\nScrambled:  SQJSB\n-------------\nUnscrambled:  hello # using SQJSB  (new scrambled phrase)\nUnscrambled Reverse:  SQJSB # using hello (original phrase)\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fableinc%2Fscramblr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fableinc%2Fscramblr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fableinc%2Fscramblr/lists"}