Bushman.Secrets
3.0.0
dotnet add package Bushman.Secrets --version 3.0.0
NuGet\Install-Package Bushman.Secrets -Version 3.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="Bushman.Secrets" Version="3.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Bushman.Secrets --version 3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Bushman.Secrets, 3.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.
// Install Bushman.Secrets as a Cake Addin #addin nuget:?package=Bushman.Secrets&version=3.0.0 // Install Bushman.Secrets as a Cake Tool #tool nuget:?package=Bushman.Secrets&version=3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Bushman.Secrets
О пакете
Работа с секретами в составе текста.
Реализация уровня абстракции, определённого в пакете Bushman.Secrets.Abstractions.
Пример использования
Предварительно подключите к своему проекту следующие пакеты:
using Bushman.Secrets.Abstractions.Services;
using Bushman.Secrets.Services;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography;
using Bushman.Secrets.Abstractions.Models;
namespace ConsoleApp1 {
internal class Program {
static void Main(string[] args) {
// 01. СОЗДАЁМ ПРОВАЙДЕР ФАБРИКИ СЕКРЕТОВ.
ISecretFactoryProvider secretFactoryProvider = new SecretFactoryProvider();
// 02. СОЗДАЁМ ФАБРИКУ СЕКРЕТОВ.
string secretFactoryAssemblyName = "Bushman.Secrets";
string secretFactoryClassName = "Bushman.Secrets.Services.SecretFactory";
ISecretFactory secretFactory = secretFactoryProvider.CreateSecretFactory(
secretFactoryAssemblyName, secretFactoryClassName);
// 03. СОЗДАЁМ МЕХАНИЗМ ШИФРОВАНИЯ/РАСШИФРОВКИ.
IEncryptor encryptor = secretFactory.CreateEncryptor();
// 04. ВЫБИРАЕМ СЕРТИФИКАТ, КОТОРЫЙ БУДЕМ ИСПОЛЬЗОВАТЬ ДЛЯ ШИФРОВАНИЯ И РАСШИФРОВКИ.
StoreLocation storeLocation = StoreLocation.CurrentUser; // Хранилище сертификатов.
string thumbprint = null; // Отпечаток интересующего нас сертификата.
using (X509Store store = new X509Store(storeLocation)) {
store.Open(OpenFlags.ReadOnly);
// Для нашего примера берём первый попавшийся сертификат.
X509Certificate2 certificate = store.Certificates[0];
store.Close();
using (certificate) {
thumbprint = certificate.Thumbprint;
}
}
// 05. ФОРМИРУЕМ НАСТРОЙКИ ДЛЯ РАБОТЫ С СЕКРЕТАМИ.
ISecretOptions secretOptions = secretFactory.CreateSecretOptions(storeLocation,
HashAlgorithmName.SHA1, thumbprint);
// ПРИМЕРЫ БАЗОВЫХ ОПЕРАЦИЙ С СЕКРЕТАМИ.
// ----------------------------------------------------------------------------------
// Строка, представляющая собой конфиденциальную информацию.
string value = "Hello, World!";
// Создаём незашифрованный секрет.
ISecret decryptedSecret = secretFactory.CreateDecryptedSecret(secretOptions, value);
// Шифруем секрет.
ISecret encryptedSecret = encryptor.Encrypt(decryptedSecret);
// Расшифровываем секрет.
ISecret decryptedSecret2 = encryptor.Decrypt(decryptedSecret);
// Распаковываем секрет.
string expandedValue = encryptor.Expand(encryptedSecret);
// Получаем строковое представление секрета.
string encryptedSecretString = encryptedSecret.ToString();
// Выполняем парсинг строкового представления секрета.
ISecret parsedSecret = encryptor.ParseSecret(encryptedSecretString);
bool isSecret = encryptor.IsSecret(encryptedSecretString); // true
bool isEncryptedSecret = encryptor.IsEncryptedSecret(encryptedSecretString); // true
bool isDecryptedSecret = encryptor.IsDecryptedSecret(encryptedSecretString); // false
// ПРИМЕРЫ БАЗОВЫХ ОПЕРАЦИЙ С СЕКРЕТАМИ, НАХОДЯЩИМИСЯ В СОСТАВЕ ПРОИЗВОЛЬНОГО ТЕКСТА.
// ----------------------------------------------------------------------------------
// Тестовая строка, содержащая распакованное значение, а так же расшифрованный и
// зашифрованный секреты с этим же значением.
string text = $@"{{
""prop1"": ""{value}"",
""prop2"": ""{decryptedSecret}"",
""prop3"": ""{encryptedSecret}""
}}";
string encryptedText = encryptor.Encrypt(text); // Зашифровываем все секреты в тексте.
string decryptedText = encryptor.Decrypt(text); // Расшифровываем все секреты в тексте.
string expandedText = encryptor.Expand(text); // Распаковываем все секреты в тексте.
// Парсим строку с секретами в коллекцию узлов.
INodeCollection nodes = encryptor.ParseToNodes(text);
string text2 = nodes.ToString(); // На основе коллекции узлов формируем итоговую строку.
}
}
}
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 is compatible. |
.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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Bushman.Secrets.Abstractions (>= 3.0.0)
-
.NETStandard 2.1
- Bushman.Secrets.Abstractions (>= 3.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Bushman.Secrets:
Package | Downloads |
---|---|
Bushman.Extensions.Configuration.Secrets
Расширение для распаковки секретов в объекте Microsoft.Extensions.Configuration.IConfiguration. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Изменена объектная модель настроек секретов в соответствии с обновлённой логикой шифрования/расшифровки.