{"id":41491919,"url":"https://github.com/kechako/scramble","last_synced_at":"2026-01-23T18:23:44.906Z","repository":{"id":57510827,"uuid":"137208100","full_name":"kechako/scramble","owner":"kechako","description":"scramble is a Go library that performs format-preserving scrambling and unscrambling of numeric values using the FF1 FPE algorithm.","archived":false,"fork":false,"pushed_at":"2025-12-11T09:31:39.000Z","size":17,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-11T11:33:17.905Z","etag":null,"topics":["ff1","fpe","go","golang","scramble"],"latest_commit_sha":null,"homepage":"","language":"Go","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/kechako.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":"2018-06-13T11:45:58.000Z","updated_at":"2025-12-11T08:59:37.000Z","dependencies_parsed_at":"2022-09-26T17:51:00.483Z","dependency_job_id":null,"html_url":"https://github.com/kechako/scramble","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/kechako/scramble","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kechako%2Fscramble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kechako%2Fscramble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kechako%2Fscramble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kechako%2Fscramble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kechako","download_url":"https://codeload.github.com/kechako/scramble/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kechako%2Fscramble/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28697428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T17:25:48.045Z","status":"ssl_error","status_checked_at":"2026-01-23T17:25:47.153Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ff1","fpe","go","golang","scramble"],"created_at":"2026-01-23T18:23:40.683Z","updated_at":"2026-01-23T18:23:44.897Z","avatar_url":"https://github.com/kechako.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scramble\n\n[![GoDoc](https://godoc.org/github.com/kechako/scramble/v2?status.svg)](https://godoc.org/github.com/kechako/scramble/v2)\n\nscramble is a Go library that performs format-preserving scrambling and unscrambling of numeric values using the FF1 FPE algorithm.\nIt provides simple APIs that take and return uint32 or uint64, enabling reversible obfuscation while preserving the original numeric format.\nThis makes it well suited for anonymization, tokenization, and other use cases where fixed-size numeric identifiers must remain valid.\n\n## Installation\n\n```console\ngo get github.com/kechako/scramble/v2\n```\n\n## Usage\n\n```golang\npackage main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\n\tscramble \"github.com/kechako/scramble/v2\"\n)\n\nfunc main() {\n\t// Generate a random key\n\tkey, err := scramble.GenerateKey(16)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\t// Create a scrambler for uint32 using the generated key\n\ts, err := scramble.NewScrambler[uint32](key)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tscrambled, err := s.Scramble(1234)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(scrambled)\n\t// e.g. 4085920800\n\n\tunscrambled, err := s.Unscramble(scrambled)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println(unscrambled)\n\t// 1234\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkechako%2Fscramble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkechako%2Fscramble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkechako%2Fscramble/lists"}