{"id":17308903,"url":"https://github.com/tekki/digest-quickxor","last_synced_at":"2025-08-05T16:05:01.764Z","repository":{"id":56835476,"uuid":"225396464","full_name":"Tekki/digest-quickxor","owner":"Tekki","description":"QuickXorHash, Perl Implementation","archived":false,"fork":false,"pushed_at":"2019-12-06T18:07:19.000Z","size":92,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-01T05:41:12.352Z","etag":null,"topics":["digest","onedrive-for-business","perl"],"latest_commit_sha":null,"homepage":"","language":"Perl","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/Tekki.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-02T14:39:53.000Z","updated_at":"2019-12-14T08:49:08.000Z","dependencies_parsed_at":"2022-09-09T18:00:48.303Z","dependency_job_id":null,"html_url":"https://github.com/Tekki/digest-quickxor","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tekki%2Fdigest-quickxor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tekki%2Fdigest-quickxor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tekki%2Fdigest-quickxor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tekki%2Fdigest-quickxor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tekki","download_url":"https://codeload.github.com/Tekki/digest-quickxor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245755680,"owners_count":20667027,"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":["digest","onedrive-for-business","perl"],"created_at":"2024-10-15T12:06:18.516Z","updated_at":"2025-03-27T00:15:41.641Z","avatar_url":"https://github.com/Tekki.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAME\n\nDigest::QuickXor - The QuickXorHash\n\n# SYNOPSIS\n\n    use Digest::QuickXor;\n\n    my $qx = Digest::QuickXor-\u003enew;\n\n    $qx-\u003eadd(@data);\n    $qx-\u003eb64digest;\n\n    $qx-\u003eaddfile($filehandle);\n    $qx-\u003eb64digest;\n\n    $qx-\u003eadd($wrong_data);\n    $qx-\u003ereset;\n    $qx-\u003eadd($correct_data);\n\n    # use as function\n    use Digest::QuickXor 'quickxorhash';\n\n    my $hash = quickxorhash(@data);\n\n# DESCRIPTION\n\n[Digest::QuickXor](https://metacpan.org/pod/Digest%3A%3AQuickXor) implements the QuickXorHash.\n\nThe QuickXorHash is the digest used by Microsoft on Office 365 OneDrive for Business and Sharepoint.\nIt was published by Microsoft in 2016 in form of a C# script. The explanation describes it as a\n\"quick, simple non-cryptographic hash algorithm that works by XORing the bytes in a circular-shifting fashion\".\n\n## FUNCTIONS\n\nNone of the functions is exported by default.\n\n## quickxorhash\n\n    use Digest::QuickXor 'quickxorhash';\n\n    my $hash = quickxorhash(@data);\n\nReturns the digest for the provided data.\n\n# CONSTRUCTOR\n\n## new\n\n    $qx = Digest::QuickXor-\u003enew;\n\n# METHODS\n\n## add\n\n    $qx = $qx-\u003eadd($data);\n    $qx = $qx-\u003eadd(@data);\n\nAdds new blocks of data.\n\n## addfile\n\n    $qx = $qx-\u003eaddfile($filehandle);\n\nAdds data from a file handle.\n\n## b64digest\n\n    $string = $qx-\u003eb64digest;\n\nReturns the digest and resets the object.\n\n## reset\n\n    $qx = $qx-\u003ereset;\n\nResets the object so it is ready to accept new data.\n\n# AUTHOR \u0026 COPYRIGHT\n\n© 2019 by Tekki (Rolf Stöckli).\n\n© for the original algorithm 2016 by Microsoft.\n\nThis program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.\n\n# SEE ALSO\n\nExplanation of the\n[QuickXorHash Algorithm](https://docs.microsoft.com/en-us/onedrive/developer/code-snippets/quickxorhash?view=odsp-graph-online)\nin the OneDrive Dev Center.\n\n[QuickXorHash.cs](https://gist.github.com/rgregg/c07a91964300315c6c3e77f7b5b861e4)\nby Ryan Gregg.\n\n[quickxor-c](https://github.com/Tekki/quickxor-c), C implementation of the hash, base code for this module.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftekki%2Fdigest-quickxor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftekki%2Fdigest-quickxor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftekki%2Fdigest-quickxor/lists"}