{"id":13729314,"url":"https://github.com/ron4fun/SharpHash","last_synced_at":"2025-05-08T01:32:18.616Z","repository":{"id":144160375,"uuid":"213886064","full_name":"ron4fun/SharpHash","owner":"ron4fun","description":"SharpHash is a C# hashing library which provides an easy to use interface for computing hashes and checksums of data. It also supports state based (incremental) hashing.","archived":false,"fork":false,"pushed_at":"2022-12-18T22:26:29.000Z","size":929,"stargazers_count":35,"open_issues_count":0,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-03-27T09:04:26.474Z","etag":null,"topics":["argon2","blake2","blake3","crc","crypto","cryptography","has160","hash","haval","hmac","pbkdf2","scrypt","sha-algorithms","sha256","siphash","snefru","tiger2","whirlpool","xof"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ron4fun.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,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-10-09T10:14:49.000Z","updated_at":"2024-02-07T00:00:49.000Z","dependencies_parsed_at":"2024-01-06T14:39:52.301Z","dependency_job_id":null,"html_url":"https://github.com/ron4fun/SharpHash","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ron4fun%2FSharpHash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ron4fun%2FSharpHash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ron4fun%2FSharpHash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ron4fun%2FSharpHash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ron4fun","download_url":"https://codeload.github.com/ron4fun/SharpHash/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224688956,"owners_count":17353292,"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":["argon2","blake2","blake3","crc","crypto","cryptography","has160","hash","haval","hmac","pbkdf2","scrypt","sha-algorithms","sha256","siphash","snefru","tiger2","whirlpool","xof"],"created_at":"2024-08-03T02:00:58.430Z","updated_at":"2024-11-14T20:30:42.422Z","avatar_url":"https://github.com/ron4fun.png","language":"C#","funding_links":[],"categories":["C#"],"sub_categories":[],"readme":"SharpHash [![License](http://img.shields.io/badge/license-MPL2-blue.svg)](https://github.com/Ron4fun/HashLib4CSharp/blob/master/LICENSE) [![Build Status](https://travis-ci.org/Ron4fun/SharpHash.svg?branch=master)](https://travis-ci.org/Ron4fun/SharpHash) [![Nuget](https://img.shields.io/nuget/v/SharpHash)](https://www.nuget.org/packages/SharpHash/) [![Nuget](https://img.shields.io/nuget/dt/SharpHash)](https://www.nuget.org/packages/SharpHash/)\n====\n\nSharpHash is a C# hashing library that provides a fluent interface for computing hashes and checksums of strings, files, streams, bytearrays and untyped data to mention but a few.\n\nIt also supports **Incremental Hashing**, **Cloning**, **NullDigest** and **HashName Builder**.\n\nAvailable Algorithms\n----------------------------------------\n\n ### Hashes\n----------------------------------------\n##### Cyclic Redundancy Checks\n\n* `All CRC Variants from CRC3 to CRC64` :heavy_check_mark:\n\n##### Checksums\n\n* `Adler32` :heavy_check_mark:\n\n##### Non-Cryptographic Hash Functions \n----------------------------------------\n\n###### 32 bit hashes\n\n* `AP` `BKDR` `Bernstein` `Bernstein1` `DEK` `DJB` `ELF` `FNV` :heavy_check_mark:\n\n* `FNV1a` `JS` `Jenkins3` `Murmur2` `MurmurHash3_x86_32` `OneAtTime` :heavy_check_mark:\n\n*  `PJW` `RS` `Rotating` `SDBM` `ShiftAndXor` `SuperFast` `XXHash32` :heavy_check_mark:\n\n###### 64 bit hashes\n\n* `FNV64` `FNV1a64` `Murmur2_64` `SipHash64_2_4` `XXHash64` :heavy_check_mark:\n\n###### 128 bit hashes\n\n* `MurmurHash3_x86_128` `MurmurHash3_x64_128` `SipHash128_2_4` :heavy_check_mark:\n\n##### Cryptographic Hash Functions \n----------------------------------------\n\n * `MD2` :heavy_check_mark:\n\n * `MD4` :heavy_check_mark:\n\n * `MD5` :heavy_check_mark:\n\n * `SHA-0` :heavy_check_mark:\n\n * `SHA-1` :heavy_check_mark:\n\n * `SHA-2 (224, 256, 384, 512, 512-224, 512-256)` :heavy_check_mark:\n\n * `GOST 34.11-94` :heavy_check_mark:\n\n * `GOST R 34.11-2012 (AKA Streebog) (256, 512)` :heavy_check_mark:\n \n * `Grindahl (256, 512)` :heavy_check_mark:\n \n * `HAS160` :heavy_check_mark:\n\n * `RIPEMD (128, 256, 256, 320)` :heavy_check_mark:\n\n * `Tiger (128, 160, 192 (Rounds 3, 4, 5))` :heavy_check_mark:\n\n * `Tiger2 (128, 160, 192 (Rounds 3, 4, 5))` :heavy_check_mark:\n \n * `Snefru (128, 256)` :heavy_check_mark:\n \n * `Haval (128, 160, 192, 224, 256 (Rounds 3, 4, 5))` :heavy_check_mark:\n \n * `Panama` :heavy_check_mark:\n \n * `RadioGatun (RadioGatun32, RadioGatun64)` :heavy_check_mark:\n\n * `WhirlPool` :heavy_check_mark:\n\n * `Blake2B (160, 256, 384, 512)` :heavy_check_mark:\n \n * `Blake2S (128, 160, 224, 256)` :heavy_check_mark:\n\n * `SHA-3 (224, 256, 384, 512)` :heavy_check_mark:\n \n * `Keccak (224, 256, 288, 384, 512)` :heavy_check_mark:\n \n * `Blake2BP` :heavy_check_mark:\n\n * `Blake2SP` :heavy_check_mark:\n\n * `Blake3` :heavy_check_mark:\n\n### Key Derivation Functions\n----------------------------------------\n\n###### Password Hashing Schemes (Password Based Key Derivation Functions)\n\n----------------------------------------\n\n* `PBKDF2` :heavy_check_mark:\n \n* `Argon2 (2i, 2d and 2id variants)` :heavy_check_mark:\n\n* `Scrypt` :heavy_check_mark:\n\n### MAC\n----------------------------------------\n\n* `HMAC (all supported hashes)` :heavy_check_mark:\n\n* `KMAC (KMAC128, KMAC256)` :heavy_check_mark:\n\n* `Blake2MAC (Blake2BMAC, Blake2SMAC)` :heavy_check_mark:\n\n### XOF (Extendable Output Function)\n----------------------------------------\n\n* `Shake (Shake-128, Shake-256)` :heavy_check_mark:\n\n* `CShake (CShake-128, CShake-256)` :heavy_check_mark:\n\n* `Blake2X (Blake2XS, Blake2XB)` :heavy_check_mark:\n\n* `KMACXOF (KMAC128XOF, KMAC256XOF)` :heavy_check_mark:\n\n* `Blake3XOF` :heavy_check_mark:\n\n### Usage Examples\n----------------------------------------\n\n\n```c#\nusing SharpHash.Base;\nusing SharpHash.Interfaces;\nusing System;\nusing System.Text;\n\nnamespace Program\n{\n    public class Hello \n    {\n\tpublic static void Main() \n\t{\n\t    // Chaining mode\n\t    string result = HashFactory.Crypto.CreateMD5()\n\t    \t\t\t.ComputeString(\"Hello C#\", Encoding.UTF8).ToString();\n\n\t    // Incremental mode\n\t    IHash hash = HashFactory.Crypto.CreateMD5();\n\t    hash.Initialize();\n\t    hash.TransformString(\"Hello\", Encoding.UTF8);\n\t    hash.TransformString(\" C#\", Encoding.UTF8);\n\t    string result_2 = hash.TransformFinal().ToString();\n\n\t    bool check = result == result_2;\n\t\n\t    // Using the HashName Builder variation\n\t    IHash hash_builder = HashFactory.CreateHash(\"md5\");\n\t    string result_3 = hash_builder.ComputeString(\"Hello C#\", \n\t\t\t\tEncoding.UTF8).ToString();\n\t    bool check_2 = result == result_3;\n\t}\n    }\n}\n```\n\n\n### Other Implementations\n----------------------------------------\n\nIf you want implementations in other languages, you can check out these\n\n* [HashLib4Pascal](https://github.com/Xor-el/HashLib4Pascal) by Ugochukwu Mmaduekwe\n* [HashLibPlus](https://github.com/ron4fun/HashLibPlus) by Mbadiwe Nnaemeka Ronald\n\n\n### Tip Jar\n----------------------------------------\n\n* :dollar: **Bitcoin**: `1Mcci95WffSJnV6PsYG7KD1af1gDfUvLe6`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fron4fun%2FSharpHash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fron4fun%2FSharpHash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fron4fun%2FSharpHash/lists"}