Kuznyechik 1.1.2
dotnet add package Kuznyechik --version 1.1.2
NuGet\Install-Package Kuznyechik -Version 1.1.2
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="Kuznyechik" Version="1.1.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Kuznyechik" Version="1.1.2" />
<PackageReference Include="Kuznyechik" />
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 Kuznyechik --version 1.1.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Kuznyechik, 1.1.2"
#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 Kuznyechik@1.1.2
#: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=Kuznyechik&version=1.1.2
#tool nuget:?package=Kuznyechik&version=1.1.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Kuznyechik (Кузнечик)
Библиотека для шифрования данных с помощью алгоритма "Кузнечик" (ГОСТ Р 34.12-2015 / ГОСТ 34.12-2018), реализующая российский стандарт блочного шифрования. Алгоритм работает с блоками размером 128 бит и использует ключи длиной 256 бит.
Особенности
- Реализация алгоритма "Кузнечик" в полном соответствии с ГОСТ 34.12-2015/2018
- Работа с блоками 128 бит и ключами 256 бит
- Поддержка синхронного и асинхронного шифрования
- Работа с массивами байтов и потоками (Stream)
- Автоматическое дополнение данных до кратности блока
- Отслеживание прогресса операций
- Поддержка отмены операций через CancellationToken
Установка
Установка через NuGet
Install-Package Kuznyechik
Сборка из исходников
git clone https://github.com/Integeris/Kuznyechik.git
cd Kuznyechik
cd Kuznyechik
dotnet build
Быстрый старт
Базовое шифрование и расшифрование массива байтов
using Kuznyechik;
using System.Text;
string text = "Привет, мир!";
byte[] key = new byte[32]; // 256 бит
byte[] message = Encoding.UTF8.GetBytes(text);
// Генерация случайного ключа
Random random = new Random();
random.NextBytes(key);
// Создание шифровальщика
Scrambler scrambler = new Scrambler(key);
// Шифрование
scrambler.Encrypt(ref message);
Console.WriteLine($"Зашифровано: {Convert.ToBase64String(message)}");
// Расшифрование
scrambler.Decrypt(ref message);
string decryptedText = Encoding.UTF8.GetString(message);
Console.WriteLine($"Расшифровано: {decryptedText}");
Работа с файлами через потоки
using Kuznyechik;
using System.IO;
// Генерация ключа
byte[] key = new byte[32];
Random random = new Random();
random.NextBytes(key);
// Создание шифровальщика
Scrambler scrambler = new Scrambler(key);
// Шифрование файла
using (var inputFile = File.OpenRead("document.docx"))
using (var outputFile = File.Create("document.encrypted"))
{
scrambler.Encrypt(inputFile, outputFile);
}
// Расшифрование файла
using (var inputFile = File.OpenRead("document.encrypted"))
using (var outputFile = File.Create("document_decrypted.docx"))
{
scrambler.Decrypt(inputFile, outputFile);
}
Асинхронное шифрование с отслеживанием прогресса
using Kuznyechik;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
byte[] key = new byte[32];
Random random = new Random();
random.NextBytes(key);
Progress<CryptoStatus> progress = new Progress<CryptoStatus>(status =>
{
Console.WriteLine($"Обработано: {status.DataPosition} из {status.DataLength} байт");
});
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
Scrambler scrambler = new Scrambler(key);
try
{
// Асинхронное шифрование
var largeData = await File.ReadAllBytesAsync("largefile.bin");
var encryptedData = await scrambler.EncryptAsync(
largeData,
progress,
cancellationTokenSource.Token
);
// Асинхронное расшифрование
var decryptedData = await scrambler.DecryptAsync(
encryptedData,
progress,
cancellationTokenSource.Token
);
await File.WriteAllBytesAsync("largefile_decrypted.bin", decryptedData);
}
catch (OperationCanceledException)
{
Console.WriteLine("Операция отменена.");
}
Особенности реализации
- Использует структуры для минимального выделения памяти
- Применяет unsafe-код для повышения производительности
- Потокобезопасный при использовании отдельных экземпляров Scrambler
| 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. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- System.Collections.Immutable (>= 10.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.