SimpleEncryption 1.1.0
dotnet add package SimpleEncryption --version 1.1.0
NuGet\Install-Package SimpleEncryption -Version 1.1.0
<PackageReference Include="SimpleEncryption" Version="1.1.0" />
paket add SimpleEncryption --version 1.1.0
#r "nuget: SimpleEncryption, 1.1.0"
// Install SimpleEncryption as a Cake Addin #addin nuget:?package=SimpleEncryption&version=1.1.0 // Install SimpleEncryption as a Cake Tool #tool nuget:?package=SimpleEncryption&version=1.1.0
SimpleEncryption
SimpleEncryption is a modular library for cryptographic operations, designed to make encryption, hashing, and key derivation simple, flexible, and efficient.
✨ Features
- 🔒 Encryption:
- AES (256-bit) with configurable cipher modes and padding.
- ChaCha20-Poly1305 for authenticated encryption.
- 🔑 Hashing:
- Secure hashing algorithms: SHA-256 and SHA-512.
- 🧬 Key Derivation:
- PBKDF2 key derivation.
- ⚙️ Salt and Nonce Generation:
- Generate secure salts and nonces dynamically.
- 💡 Thread-safe and configurable.
- ⚠️ OS Compatibility Notes:
ChaCha20
is not supported oniOS
,tvOS
, andbrowser environments
.AES
is not supported onbrowser environments
.
📚 Installation
Install SimpleEncryption via NuGet:
dotnet add package SimpleEncryption
📚 Overview
🔒 AES Encryption
Encrypt and decrypt strings and byte arrays using AES (256-bit):
using SimpleEncryption.Encryption;
byte[] key = Aes.GenerateKey("password", "salt");
byte[] iv = Aes.GenerateIv("password", "salt");
// Encrypt a string
string encrypted = Aes.Encrypt("Hello, World!", key, iv);
string decrypted = Aes.Decrypt(encrypted, key, iv);
// Encrypt a byte array
byte[] encryptedBytes = Aes.Encrypt(Encoding.UTF8.GetBytes("Hello, World!"), key, iv);
byte[] decryptedBytes = Aes.Decrypt(encryptedBytes, key, iv);
Console.WriteLine($"Decrypted: {decrypted}");
⚡ ChaCha20-Poly1305 Encryption
Lightweight and secure encryption with associated data (AAD):
using SimpleEncryption.Encryption;
byte[] key = ChaCha20.GenerateKey("password", "salt");
byte[] nonce = ChaCha20.GenerateNonce();
// Encrypt a string
string encrypted = ChaCha20.Encrypt("Hello, World!", key, nonce);
string decrypted = ChaCha20.Decrypt(encrypted, key, nonce);
// Encrypt a byte array
byte[] encryptedBytes = ChaCha20.Encrypt(Encoding.UTF8.GetBytes("Hello, World!"), key, nonce);
byte[] decryptedBytes = ChaCha20.Decrypt(encryptedBytes, key, nonce);
Console.WriteLine($"Decrypted: {decrypted}");
🔑 Hashing (SHA-256 and SHA-512)
Hash strings securely with or without salt:
using SimpleEncryption.Hashing;
// Hash a string
string sha256Hash = Sha256.Hash("password");
string sha512Hash = Sha512.Hash("password");
// Hash a string with salt
string sha256Salted = Sha256.Hash("password", "salt");
string sha512Salted = Sha512.Hash("password", "salt");
Console.WriteLine($"SHA-256 Hash: {sha256Hash}");
Console.WriteLine($"SHA-512 Hash: {sha512Hash}");
🧬 PBKDF2 Key Derivation
Derive secure keys:
using SimpleEncryption.Derivation;
byte[] salt = Encoding.UTF8.GetBytes("random_salt");
// Derive a key from a password
string derivedKey = Pbkdf2.DeriveKey("password", salt);
byte[] derivedKeyBytes = Pbkdf2.DeriveKey(Encoding.UTF8.GetBytes("password"), salt);
Console.WriteLine($"Derived Key: {derivedKey}");
🤝 Contributing
Contributions are welcome! Feel free to open an issue or submit a pull request on GitHub.
🐝 OS Compatibility
- ChaCha20-Poly1305 is not supported on:
iOS
tvOS
browser environments
- AES Encryption is not supported on:
browser environments
🐝 License
This project is licensed under the MIT License.
⚠️ Security & Disclaimer
This library has been developed with the goal of providing the highest possible security in encryption, hashing, and key derivation algorithms. However:
- There is no guarantee that the implementation is completely free of vulnerabilities.
- Use this library at your own risk.
- No warranty is provided regarding its suitability for critical security applications or highly sensitive environments.
If you intend to use this library in a security-sensitive environment, it is strongly recommended to conduct additional security audits and follow best cryptographic practices.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-android34.0 is compatible. net8.0-browser was computed. net8.0-browser1.0 is compatible. net8.0-ios was computed. net8.0-ios18.0 is compatible. net8.0-maccatalyst was computed. net8.0-maccatalyst18.0 is compatible. net8.0-macos was computed. net8.0-macos15.0 is compatible. net8.0-tvos was computed. net8.0-tvos18.0 is compatible. net8.0-windows was computed. net8.0-windows7.0 is compatible. 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. |
-
net8.0
- No dependencies.
-
net8.0-android34.0
- No dependencies.
-
net8.0-browser1.0
- No dependencies.
-
net8.0-ios18.0
- No dependencies.
-
net8.0-maccatalyst18.0
- No dependencies.
-
net8.0-macos15.0
- No dependencies.
-
net8.0-tvos18.0
- No dependencies.
-
net8.0-windows7.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on SimpleEncryption:
Package | Downloads |
---|---|
SimpleFiles
The SimpleFiles is a powerful and easy-to-use solution for handling file and folder operations in .NET. With built-in encryption and flexibility, it simplifies file management while keeping your data secure. 🔒 |
|
SimpleSecureData
SimpleSecureData is a library designed to provide enhanced security for local applications by ensuring data remains encrypted in memory at all times. It uses platform-specific secure storage mechanisms |
GitHub repositories
This package is not used by any popular GitHub repositories.
- Improved internal project structure for better maintainability and performance.
- Fixed bugs across all cryptographic classes.
- Documented OS incompatibilities:
- ChaCha20 is **not supported** on iOS, tvOS, and browsers.
- AES is **not supported** on browsers.
- Added `namespace.cs` containing an enum for each algorithm type.
- Introduced new interfaces:
- `IEncryptionAlgorithm`
- `IHashAlgorithm`
- `IKeyDerivationAlgorithm`
- Implemented corresponding concrete classes for each interface.
- Enhanced parameter classes to provide better configurability and security options.