ISAACDotNet 1.0.0
dotnet add package ISAACDotNet --version 1.0.0
NuGet\Install-Package ISAACDotNet -Version 1.0.0
<PackageReference Include="ISAACDotNet" Version="1.0.0" />
paket add ISAACDotNet --version 1.0.0
#r "nuget: ISAACDotNet, 1.0.0"
// Install ISAACDotNet as a Cake Addin #addin nuget:?package=ISAACDotNet&version=1.0.0 // Install ISAACDotNet as a Cake Tool #tool nuget:?package=ISAACDotNet&version=1.0.0
ISAACDotNet
C# Implementation of the ISAAC stream cipher.
What is ISAAC cipher?
ISAAC is a cryptographically secure pseudo-random number generator (CSPRNG) and stream cipher. It was developed by Bob Jenkins from 1993 (http://burtleburtle.net/bob/rand/isaac.html) and placed in the Public Domain. ISAAC is fast - especially when optimised - and portable to most architectures in nearly all programming and scripting languages. It is also simple and succinct, using as it does just two 256-word arrays for its state.
ISAAC stands for "Indirection, Shift, Accumulate, Add, and Count" which are the principal bitwise operations employed. To date - and that's after more than 20 years of existence - ISAAC has not been broken (unless GCHQ or NSA did it, but they wouldn't be telling). ISAAC thus deserves a lot more attention than it has hitherto received and it would be salutary to see it more universally implemented.
Usecase example
//Creating a seed
int[] seed = new int[] { 2, 5, 1, 6 };
//ISAAC Ciphers for decoding/encoding bytes
var writeCipher = new ISAACCipher(seed);
var readCipher = new ISAACCipher(seed);
//Dummy byte 28
byte dummyByte = 28;
//Encoding dummyByte with ISAAC
byte isaacByte = (byte)((dummyByte + writeCipher.Value()) & 0xff);
Console.WriteLine($"ISAAC encoded byte: {isaacByte}"); // Output: ISAAC encoded byte: 110
//Decoding dummyByte with ISAAC
var decodedValue = (isaacByte - readCipher.Value()) & 0xff;
Console.WriteLine($"ISAAC decoded value: {decodedValue}"); // Output: ISAAC decoded value: 28 (same as our dummyByte)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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. |
.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 was computed. |
.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
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 194 | 8/4/2023 |