acryptohashnet 3.0.1
dotnet add package acryptohashnet --version 3.0.1
NuGet\Install-Package acryptohashnet -Version 3.0.1
<PackageReference Include="acryptohashnet" Version="3.0.1" />
paket add acryptohashnet --version 3.0.1
#r "nuget: acryptohashnet, 3.0.1"
// Install acryptohashnet as a Cake Addin #addin nuget:?package=acryptohashnet&version=3.0.1 // Install acryptohashnet as a Cake Tool #tool nuget:?package=acryptohashnet&version=3.0.1
Overview
A pure C# implementation of cryptographic hash functions for .Net Standard 2.0 compatible platforms (.Net Framework, .Net Core, Mono, Xamarin, UWP, Unity).
Features
- Pure managed C# implementation,
- Compatible with System.Security.Cryptography.HashAlgorithm and can be used everywhere as a simple drop replacement for the target hash algorithm,
- Extremely fast, highly optimized with low memory footprint (less GC time).
Implemented hash functions
- MD family: MD2, MD4, MD5,
- SHA family: SHA0, SHA1,
- SHA2 family: SHA224, SHA256, SHA384, SHA512,
- SHA3 family: SHA3-224, SHA3-256, SHA3-384, SHA3-512,
- RIPEMD family: RIPEMD128, RIPEMD160,
- Haval family: Haval128, Haval160, Haval192, Haval224, Haval256,
- Snefru, Snefru256,
- Tiger and Tiger2 (192 bits output)
Usage examples
MD5
using System;
using System.Linq;
using System.Text;
static class Program
{
static void Main(string[] args)
{
var message = "Lorem ipsum is placeholder text commonly used in the graphic, " +
"print, and publishing industries for previewing layouts and visual mockups.";
var hashAlgorithm = new acryptohashnet.MD5();
Console.WriteLine("MD5: {0}", hashAlgorithm.ComputeHash(message.ToUtf8Bytes()).ToHexString());
}
static byte[] ToUtf8Bytes(this string input) => Encoding.UTF8.GetBytes(input);
static string ToHexString(this byte[] input) => string.Join("", input.Select(x => x.ToString("x2")));
}
SHA256 (SHA2-256 bits)
using System;
using System.Linq;
using System.Text;
static class Program
{
static void Main(string[] args)
{
var message = "Lorem ipsum is placeholder text commonly used in the graphic, " +
"print, and publishing industries for previewing layouts and visual mockups.";
var hashAlgorithm = new acryptohashnet.Sha2_256();
Console.WriteLine("SHA256: {0}", hashAlgorithm.ComputeHash(message.ToUtf8Bytes()).ToHexString());
}
static byte[] ToUtf8Bytes(this string input) => Encoding.UTF8.GetBytes(input);
static string ToHexString(this byte[] input) => string.Join("", input.Select(x => x.ToString("x2")));
}
SHA512 (SHA2-512 bits)
using System;
using System.Linq;
using System.Text;
static class Program
{
static void Main(string[] args)
{
var message = "Lorem ipsum is placeholder text commonly used in the graphic, " +
"print, and publishing industries for previewing layouts and visual mockups.";
var hashAlgorithm = new acryptohashnet.Sha2_512();
Console.WriteLine("SHA512: {0}", hashAlgorithm.ComputeHash(message.ToUtf8Bytes()).ToHexString());
}
static byte[] ToUtf8Bytes(this string input) => Encoding.UTF8.GetBytes(input);
static string ToHexString(this byte[] input) => string.Join("", input.Select(x => x.ToString("x2")));
}
SHA3-512
using System;
using System.Linq;
using System.Text;
static class Program
{
static void Main(string[] args)
{
var message = "Lorem ipsum is placeholder text commonly used in the graphic, " +
"print, and publishing industries for previewing layouts and visual mockups.";
var hashAlgorithm = new acryptohashnet.Sha3_512();
Console.WriteLine("SHA3-512: {0}", hashAlgorithm.ComputeHash(message.ToUtf8Bytes()).ToHexString());
}
static byte[] ToUtf8Bytes(this string input) => Encoding.UTF8.GetBytes(input);
static string ToHexString(this byte[] input) => string.Join("", input.Select(x => x.ToString("x2")));
}
Snefru256
using System;
using System.Linq;
using System.Text;
static class Program
{
static void Main(string[] args)
{
var message = "Lorem ipsum is placeholder text commonly used in the graphic, " +
"print, and publishing industries for previewing layouts and visual mockups.";
var hashAlgorithm = new acryptohashnet.Snefru256();
Console.WriteLine("Snefru256: {0}", hashAlgorithm.ComputeHash(message.ToUtf8Bytes()).ToHexString());
}
static byte[] ToUtf8Bytes(this string input) => Encoding.UTF8.GetBytes(input);
static string ToHexString(this byte[] input) => string.Join("", input.Select(x => x.ToString("x2")));
}
Compute hashes with different algorithms and use of System.Security.Cryptography.HashAlgorithm
static class Program
{
static void Main(string[] args)
{
var message = "Lorem ipsum is placeholder text commonly used in the graphic, " +
"print, and publishing industries for previewing layouts and visual mockups.";
var md5 = new acryptohashnet.MD5();
var sha1 = new acryptohashnet.SHA1();
var sha2_256 = new acryptohashnet.Sha2_256();
var sha3_512 = new acryptohashnet.Sha3_512();
Console.WriteLine("message MD5: {0}", md5.ComputeHash(message.ToUtf8Bytes()).ToHexString());
Console.WriteLine("message SHA1: {0}", sha1.ComputeHash(message.ToUtf8Bytes()).ToHexString());
Console.WriteLine("message SHA256: {0}", sha2_256.ComputeHash(message.ToUtf8Bytes()).ToHexString());
Console.WriteLine("message SHA3-512: {0}", sha3_512.ComputeHash(message.ToUtf8Bytes()).ToHexString());
using (var file = File.OpenRead(@"C:\Windows\explorer.exe"))
{
Console.WriteLine("explorer.exe MD5: {0}", md5.ComputeHash(file).ToHexString());
file.Position = 0; // Rewind stream
Console.WriteLine("explorer.exe SHA1: {0}", sha1.ComputeHash(file).ToHexString());
file.Position = 0; // Rewind stream
Console.WriteLine("explorer.exe SHA256: {0}", sha2_256.ComputeHash(file).ToHexString());
file.Position = 0; // Rewind stream
Console.WriteLine("explorer.exe SHA3-512: {0}", sha3_512.ComputeHash(file).ToHexString());
}
}
static byte[] ToUtf8Bytes(this string input) => System.Text.Encoding.UTF8.GetBytes(input);
static string ToHexString(this byte[] input) => string.Join("", input.Select(x => x.ToString("x2")));
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Memory (>= 4.5.5)
-
.NETStandard 2.1
- No dependencies.
-
net6.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on acryptohashnet:
Repository | Stars |
---|---|
aura-systems/Aura-Operating-System
AuraOS, the Franco-English Operating System developed in C# using Cosmos!
|
v3.0.1
* FIX: Improper padding for specific lengths that supplements to almost block size (minus 8 byte)
v3.0.0
* FEATURE: SHA3 Implemented
v2.0.0
* Backport to .Net Standard 2.0 to support all major .Net platforms that includes Mono, Xamarin, Unity, UWP.
* .Net Standard 2.1 and .Net 6.0 also included in NuGet package now.
v1.1.0
* BlockHashAlgorithm migrated to Span/ReadOnlySpan interfaces to improve general performance,
* Set of optimizations for MD5, SHA family
v1.0.0
Library modernization: Migrate to .Net Core, Add benchmarks, tests.
Beta2
Release back from 2009 (Sourceforge)