{"id":25406484,"url":"https://github.com/lostincompilation/hashme","last_synced_at":"2025-04-12T22:56:51.058Z","repository":{"id":246124791,"uuid":"820167033","full_name":"LostInCompilation/HashMe","owner":"LostInCompilation","description":"Hardware accelerated hash library for C++ (SIMD intrinsics for ARM and x86)","archived":false,"fork":false,"pushed_at":"2024-07-23T08:30:42.000Z","size":304,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-12T22:56:48.542Z","etag":null,"topics":["arm64","crypto","hash","hashing","md5","md5-hash","sha-hashes","sha1","sha2","sha256","sha256-hash","sha256sum","sha3","sha512","simd","simd-intrinsics"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"zlib","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LostInCompilation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2024-06-26T00:05:04.000Z","updated_at":"2025-03-24T16:27:06.000Z","dependencies_parsed_at":"2024-07-19T12:02:04.008Z","dependency_job_id":null,"html_url":"https://github.com/LostInCompilation/HashMe","commit_stats":null,"previous_names":["lostincompilation/hashme"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LostInCompilation%2FHashMe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LostInCompilation%2FHashMe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LostInCompilation%2FHashMe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LostInCompilation%2FHashMe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LostInCompilation","download_url":"https://codeload.github.com/LostInCompilation/HashMe/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248643049,"owners_count":21138353,"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":["arm64","crypto","hash","hashing","md5","md5-hash","sha-hashes","sha1","sha2","sha256","sha256-hash","sha256sum","sha3","sha512","simd","simd-intrinsics"],"created_at":"2025-02-16T05:32:44.582Z","updated_at":"2025-04-12T22:56:51.026Z","avatar_url":"https://github.com/LostInCompilation.png","language":"C++","readme":"# HashMe - Hardware accelerated hash library for C++ (SIMD intrinsics)\n\n![Version](https://img.shields.io/badge/Version-V0.1-brightgreen?style=flat\u0026\u0026logo=framework) ![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS%20-blue?style=flat\u0026\u0026logo=buffer) ![CPU](https://img.shields.io/badge/CPU-x86%20%7C%20ARMv8-red?style=flat\u0026\u0026logo=qmk) ![CPP](https://img.shields.io/badge/Language-C++20-orange?style=flat\u0026\u0026logo=C%2b%2b)\n\n\u003ch3 align=\"center\"\u003eHardware acceleration for\u003c/h3\u003e\n\u003cp align=\"center\" width=\"100%\"\u003e\n\u003cimg src=\"/img/intel_logo.svg\" alt=\"Intel logo\"/\u003e\n\u003cimg src=\"/img/arm_logo.svg\" alt=\"ARM logo\"/\u003e\n\u003c/p\u003e\n\n## Contents\n- [Description](#description)\n    - [Supported hash algorithms](#supported-hash-algorithms)\n    - [Additional algorithms](#additional-algorithms)\n    - [Performance and Benchmarks](#performance-and-benchmarks)\n        - [ARMv8 (M1 Pro AppleSilicon)](#armv8-m1-pro-applesilicon)\n        - [x86_64 (Intel)](#x86-64-intel)\n- [Getting the library](#getting-the-library)\n- [Compiling](#compiling)\n    - [CMake](#cmake)\n    - [Visual Studio](#visual-studio)\n    - [Xcode](#xcode)\n- [How to use it](#how-to-use-it)\n    - [Hardware acceleration](#hardware-acceleration)\n- [Included examples](#included-examples)\n\n*See also: [License (zlib)](LICENSE.md)*\n\n## Description\n**Library is currently WIP! Will be updated frequently.**\n\nA simple to use, fast and modern C++20 Hash library which supports **hardware accelerated** algorithms (SIMD intrinsics) for **x86 and ARMv8 (like AppleSilicon)**. See [Performance and Benchmarks](#performance-and-benchmarks) for speeds. The static library provides very easy integration in your projects and ultra high speeds for the most common hash algorithms like **MD5, MD6, SHA0, SHA1, SHA2 (SHA224, SHA256, SHA384, SHA512), SHA3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), CRC16, CRC32, CRC64, CRC128** and others. See [Supported hash algorithms](#supported-hash-algorithms) for details.\nCMake build environment is supported, as well as generating projects for VisualStudio or Xcode.\n\nTODO WRITE: STREAMING FOR LARGE FILES\n\n### Supported hash algorithms\n#### CRC\nAlgorithm | Supported | Hardware acceleration (SIMD) |\n| -- | --------- | --------- |\n| CRC16 | ✅ Yes | ❌ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n| CRC32 | ✅ Yes | ✅ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n| CRC64 (ECMA) | ✅ Yes | ❌ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n\n#### MD\nAlgorithm | Supported | Hardware acceleration (SIMD) |\n| -- | --------- | --------- |\n| MD5 | ✅ Yes | ❌ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n| MD6 | ❌ WIP | ❌ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n\n#### SHA\nAlgorithm | Supported | Hardware acceleration (SIMD) |\n| -- | --------- | --------- |\n| SHA1 | ❌ WIP | ❌ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n| SHA224 | ✅ Yes | ✅ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;⚠️ x86 |\n| SHA256 | ✅ Yes | ✅ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;⚠️ x86 |\n| SHA384 | ✅ Yes | ✅ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n| SHA512 | ✅ Yes | ✅ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n| SHA512/224 | ❌ WIP | ❌ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n| SHA512/256 | ❌ WIP | ❌ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n| SHA3-512 | ❌ WIP | ❌ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n\n*⚠️ = Work in progress*\n*❌ = Not yet supported*\n\n---\n\n### Additional algorithms\nAlgorithm | Supported | Hardware acceleration |\n| -- | --------- | --------- |\n| Base64 | ❌ WIP | ❌ ARM\u0026nbsp;\u0026nbsp;\\|\u0026nbsp;\u0026nbsp;❌ x86 |\n\n*⚠️ = Work in progress*\n*❌ = Not yet supported*\n\n---\n\n### Performance and Benchmarks\n\n#### ARMv8 (M1 Pro AppleSilicon)\n*Apple Clang, Release build, -O3 optimization*\n\n#### CRC\nAlgorithm      |   Speed (MB/s)\r\n---------------|--------:\nCRC16 Software | 375.54 MB/s\nCRC16 Hardware (SIMD) | xxx MB/s\nCRC32 Software | 376.49 MB/s\nCRC32 Hardware (SIMD) | 8031.77 MB/s\nCRC64 Software | 378.56 MB/s\nCRC64 Hardware (SIMD) | xxx MB/s\n\n#### MD\nAlgorithm      |   Speed (MB/s)\r\n---------------|--------:\nMD5 Software | 538.12 MB/s\nMD5 Hardware (SIMD) | xxx MB/s\n\n#### SHA\nAlgorithm      |   Speed (MB/s)\r\n---------------|--------:\nSHA224 Software | 218.50 MB/s\nSHA224 Hardware (SIMD) | 1944.76 MB/s\r\nSHA256 Software | 217.76 MB/s\nSHA256 Hardware (SIMD) | 1944.79 MB/s\nSHA384 Software | 317.07 MB/s\nSHA384 Hardware (SIMD) | xxx MB/s\nSHA512 Software | 317.10 MB/s\nSHA512 Hardware (SIMD) | 1337.49 MB/s\n\n\n#### x86_64 (Intel)\n**TODO**\n\n## Getting the library\nTo download the library simply clone the repository:\n~~~\ngit clone https://github.com/LostInCompilation/HashMe\n~~~\n\n## Compiling\nCompilation of the library and examples can be done using CMake and make. Additionally projects for VisualStudio and Xcode can be generated. Small Shell scripts for compiling and generating projects are included.\n\n### CMake\nTODO\n\n### Visual Studio\nTODO\n\n### Xcode\nTODO\n\n## How to use it\nInclude the main header file of the library in your project:\n```cpp\n#include \"HashMe.hpp\"\n```\n\nLINKING\n\nIf you prefer, directly use the namespace for the library:\n```cpp\nusing namespace HashMe;\n```\nA shorter namespace alias ```HM```is also available:\n```cpp\nusing namespace HM;\n```\n\nTODO\n\n### Hardware acceleration\nTODO\n\n## Included Examples\nTODO\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flostincompilation%2Fhashme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flostincompilation%2Fhashme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flostincompilation%2Fhashme/lists"}