SubstitutionCiphers 2.0.0

dotnet add package SubstitutionCiphers --version 2.0.0
                    
NuGet\Install-Package SubstitutionCiphers -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="SubstitutionCiphers" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SubstitutionCiphers" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="SubstitutionCiphers" />
                    
Project file
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 SubstitutionCiphers --version 2.0.0
                    
#r "nuget: SubstitutionCiphers, 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 SubstitutionCiphers@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=SubstitutionCiphers&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=SubstitutionCiphers&version=2.0.0
                    
Install as a Cake Tool

Griffinere Cipher 🔐

The Griffinere cipher is a custom encryption algorithm in C# designed for reversible, base64-normalized encryption using a repeating key. Inspired by the Vigenère cipher, it adds configurable alphabet support, input validation, and padding-based encryption length enforcement.


📦 Installation

Install from the Nuget Library:

dotnet add package SubstitutionCiphers

In your code:

using Ciphers;

✨ Features

🔐 Encrypts and decrypts alphanumeric or custom alphabet-based strings

🧩 Allows defining your own alphabet

📏 Supports minimum-length encrypted responses via padding

✅ Includes strong validation for alphabet and key integrity

🧪 Unit tested with xUnit

🧰 Usage

1.1: Creating the Cipher Using the default alphabet:

const string key = "YourSecureKey";
Griffinere cipher = new(key);

Default alphabet includes:

A-Z
a-z
0-9

1.2: Creating the Cipher Using a custom alphabet:

const string customAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ12345";
const string key = "YOURKEY";
Griffinere cipher = new(customAlphabet, key);

Alphabet Rules

  1. Must not contain . (dot character)
  2. All characters must be unique
  3. All characters in the key must exist in the alphabet

2.1: Encrypt a String

Griffinere cipher = new("nGOvtaRXyMEtCOO9");
string plainText = "Hello World 123";
string encrypted = cipher.EncryptString(plainText);
//outputs: sjnyIdM trIKZ3v 0m7m

2.2: Encrypt a String with Minimum Length

Griffinere cipher = new("nGOvtaRXyMEtCOO9");
const string plainText = "Hello World 123";
string encrypted = cipher.EncryptString(plainText, minimumResponseLength: 24);
//outputs: w5WFeRLvJ1q.sjnyIdM trIKZ3v 0m7m.c

3.1: Decrypt a String

string decrypted = cipher.DecryptString(encrypted);
// Returns the original plain text

⚠️ Exceptions and Validations

Tables

Condition Exception
Alphabet contains . ArgumentException
Alphabet has duplicate characters ArgumentException
Alphabet does not contain at least 3 unique characters ArgumentException
Key does not contain at least 3 unique characters ArgumentException
Key contains characters not in alphabet ArgumentException
Specifying minimum length < 1 ArgumentOutOfRangeException

📄 License

MIT License © 2025 Riley Griffin

Product 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 was computed.  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.
  • 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.

Version Downloads Last Updated
2.0.0 19 8/24/2025
1.1.1 438 7/21/2025
1.1.0 115 7/17/2025
1.0.1 146 6/25/2025
1.0.0 143 6/25/2025