Encryption.Blowfish
2.0.0
dotnet add package Encryption.Blowfish --version 2.0.0
NuGet\Install-Package Encryption.Blowfish -Version 2.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Encryption.Blowfish" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Encryption.Blowfish" Version="2.0.0" />
<PackageReference Include="Encryption.Blowfish" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Encryption.Blowfish --version 2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Encryption.Blowfish, 2.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Encryption.Blowfish@2.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Encryption.Blowfish&version=2.0.0
#tool nuget:?package=Encryption.Blowfish&version=2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Encryption.Blowfish
Efficient implementation of Blowfish cipher with minimal memory allocations in ECB, CBC and CTR block modes.<br />
CTR is also available as encryption and decryption stream.<br />
Non-stream variants work by mutating input buffer (Span<byte>).
Implemented using defaults, 16-round with pre-computed subkeys.<br /> Tested against well-known test vectors.
Quickstart
nuget package Encryption.Blowfish
dotnet add package Encryption.Blowfish [ -v 2.0.0 ]
Buffer
using Encryption.Blowfish;
using System.Security.Cryptography;
var key = "a3bd614b27864e3f854b971f9df1a802"; // cipher key
var iv = RandomNumberGenerator.GetBytes(8); // IV
byte[] buf = ...; // data you want to encrypt
buf = buf.CopyAndPadIfNotAlreadyPadded();
var cbc = new BlowfishCbc(key);
var ok = cbc.Encrypt(buf, iv);
ok = cbc.Decrypt(buf, iv);
Stream
using Encryption.Blowfish;
using System.Security.Cryptography;
var codec = new Codec(Convert.FromHexString("df83d31539c244d298ce302036f91edd"));
var iv = RandomNumberGenerator.GetBytes(8);
// encrypt
using var encrypted = new MemoryStream();
using (var bfe = new BlowfishCtrEncryptStream(encrypted, codec, iv))
{
bfe.Write(...);
bfe.Write(...);
// ...
}
// It is important to dispose or Close the stream as soon as the writing is finished.
enc.Position = 0;
// decrypt
using var decrypted = new MemoryStream();
using var bfd = new BlowfishCtrDecryptStream(encrypted, codec, iv);
bfd.CopyTo(decrypted);
Available types
| type | mode | usage | works on | thread-safe |
|---|---|---|---|---|
| BlowfishEcb | ECB | Only when forced to. Lack of diffusion. Require padded original data. | buffer | yes |
| BlowfishCbc | CBC | Recommended. Require padded original data. | buffer | yes |
| BlowfishCtr | CTR | Recommended. Works without padding. | buffer | yes |
| ParallelBlowfishEcb | EBC | Only when forced to. Parallel computation from certain data size. Require padded original data. | buffer | yes |
| ParallelBlowfishCtr | CTR | Recommended. Parallel computation from certain data size. Works without padding. | buffer | yes |
| BlowfishCtrEncryptStream | CTR | Only when you need stream-sematics; otherwise you are better off with input buffer variants. | stream | no |
| BlowfishCtrDecryptStream | CTR | dtto | stream | no |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- No dependencies.
-
net8.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.