20231115
This commit is contained in:
parent
f61d2c2dbc
commit
fa7bb78ed4
@ -30,8 +30,12 @@ public sealed class StringEncryptor: IEncryptor
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="value">Строка, которая должна быть зашифрована</param>
|
/// <param name="value">Строка, которая должна быть зашифрована</param>
|
||||||
/// <param name="salt">Ключ</param>
|
/// <param name="salt">Ключ</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <returns>Этот метод возвращает зашифрованную строку <paramref name="value"/></returns>
|
/// <returns>Этот метод возвращает зашифрованную строку <paramref name="value"/></returns>
|
||||||
public string Encrypt (string value, string salt)
|
/// <exception cref="FormatException">Ошибка неверного формата</exception>
|
||||||
|
public string Encrypt (string value, string salt, string valueIfFail = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
// Создаю криптограф
|
// Создаю криптограф
|
||||||
using Aes aes = Aes.Create();
|
using Aes aes = Aes.Create();
|
||||||
@ -53,14 +57,23 @@ public sealed class StringEncryptor: IEncryptor
|
|||||||
// Возвращаю зашифрованный текст
|
// Возвращаю зашифрованный текст
|
||||||
return Convert.ToBase64String(ms.ToArray());
|
return Convert.ToBase64String(ms.ToArray());
|
||||||
}
|
}
|
||||||
|
catch (FormatException)
|
||||||
|
{
|
||||||
|
return valueIfFail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Метод для дешифрования строки <paramref name="encryptedValue"/>
|
/// Метод для дешифрования строки <paramref name="encryptedValue"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="encryptedValue">Строка, которая должна быть дешифрована</param>
|
/// <param name="encryptedValue">Строка, которая должна быть дешифрована</param>
|
||||||
/// <param name="salt">Ключ</param>
|
/// <param name="salt">Ключ</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <returns>Этот метод возвращает дешифрованную строку <paramref name="encryptedValue"/></returns>
|
/// <returns>Этот метод возвращает дешифрованную строку <paramref name="encryptedValue"/></returns>
|
||||||
public string Decrypt (string encryptedValue, string salt)
|
/// <exception cref="FormatException">Ошибка неверного формата</exception>
|
||||||
|
public string Decrypt (string encryptedValue, string salt, string valueIfFail = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
// Открываю поток в памяти
|
// Открываю поток в памяти
|
||||||
using MemoryStream ms = new(Convert.FromBase64String(encryptedValue));
|
using MemoryStream ms = new(Convert.FromBase64String(encryptedValue));
|
||||||
@ -92,20 +105,32 @@ public sealed class StringEncryptor: IEncryptor
|
|||||||
// Вывожу расшифрованный текст
|
// Вывожу расшифрованный текст
|
||||||
return Encoding.UTF8.GetString(output.ToArray());
|
return Encoding.UTF8.GetString(output.ToArray());
|
||||||
}
|
}
|
||||||
|
catch (FormatException)
|
||||||
|
{
|
||||||
|
return valueIfFail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Декодирует зашифрованную строку в HTML-пригодный формат
|
/// Декодирует зашифрованную строку в HTML-пригодный формат
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="text">Зашифрованная строка</param>
|
/// <param name="text">Зашифрованная строка</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <returns>Этот метод возвращает дешифрованную строку <paramref name="text"/></returns>
|
/// <returns>Этот метод возвращает дешифрованную строку <paramref name="text"/></returns>
|
||||||
public string Base64UrlEncode (string text) => text.TrimEnd('=').Replace('+', '-').Replace('/', '_');
|
/// <exception cref="FormatException">Ошибка неверного формата</exception>
|
||||||
|
public string Base64UrlEncode(string text, string valueIfFail = "") =>
|
||||||
|
text.TrimEnd('=').Replace('+', '-').Replace('/', '_');
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Раскодирует из декодированной строки в HTML-пригодный формат
|
/// Раскодирует из декодированной строки в HTML-пригодный формат
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="text">Декодированная строка</param>
|
/// <param name="text">Декодированная строка</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <returns>Этот метод возвращает шифрованную строку <paramref name="text"/></returns>
|
/// <returns>Этот метод возвращает шифрованную строку <paramref name="text"/></returns>
|
||||||
public string Base64UrlDecode (string text)
|
/// <exception cref="FormatException">Ошибка неверного формата</exception>
|
||||||
|
public string Base64UrlDecode (string text, string valueIfFail = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
// Первоначальная замена
|
// Первоначальная замена
|
||||||
string result = text.Replace('_', '/').Replace('-', '+');
|
string result = text.Replace('_', '/').Replace('-', '+');
|
||||||
@ -124,4 +149,9 @@ public sealed class StringEncryptor: IEncryptor
|
|||||||
// Возвращаю результат
|
// Возвращаю результат
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
catch (FormatException)
|
||||||
|
{
|
||||||
|
return valueIfFail;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -10,28 +10,32 @@ public interface IEncryptor
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="value">Строка, которая должна быть зашифрована</param>
|
/// <param name="value">Строка, которая должна быть зашифрована</param>
|
||||||
/// <param name="salt">Ключ шифрования</param>
|
/// <param name="salt">Ключ шифрования</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <returns>Этот метод возвращает зашифрованную строку <paramref name="value"/></returns>
|
/// <returns>Этот метод возвращает зашифрованную строку <paramref name="value"/></returns>
|
||||||
string Encrypt (string value, string salt);
|
string Encrypt (string value, string salt, string valueIfFail);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Метод для дешифрования строки <paramref name="encryptedValue"/>
|
/// Метод для дешифрования строки <paramref name="encryptedValue"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="encryptedValue">Строка, которая должна быть дешифрована</param>
|
/// <param name="encryptedValue">Строка, которая должна быть дешифрована</param>
|
||||||
/// <param name="salt">Ключ шифрования</param>
|
/// <param name="salt">Ключ шифрования</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <returns>Этот метод возвращает дешифрованную строку <paramref name="encryptedValue"/></returns>
|
/// <returns>Этот метод возвращает дешифрованную строку <paramref name="encryptedValue"/></returns>
|
||||||
string Decrypt (string encryptedValue, string salt);
|
string Decrypt (string encryptedValue, string salt, string valueIfFail);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Декодирует зашифрованную строку в HTML-пригодный формат
|
/// Декодирует зашифрованную строку в HTML-пригодный формат
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="text">Зашифрованная строка</param>
|
/// <param name="text">Зашифрованная строка</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <returns>Этот метод возвращает дешифрованную строку <paramref name="text"/></returns>
|
/// <returns>Этот метод возвращает дешифрованную строку <paramref name="text"/></returns>
|
||||||
string Base64UrlEncode (string text);
|
string Base64UrlEncode (string text, string valueIfFail);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Раскодирует из декодированной строки в HTML-пригодный формат
|
/// Раскодирует из декодированной строки в HTML-пригодный формат
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="text">Декодированная строка</param>
|
/// <param name="text">Декодированная строка</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <returns>Этот метод возвращает шифрованную строку <paramref name="text"/></returns>
|
/// <returns>Этот метод возвращает шифрованную строку <paramref name="text"/></returns>
|
||||||
string Base64UrlDecode (string text);
|
string Base64UrlDecode (string text, string valueIfFail);
|
||||||
}
|
}
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<Version>2023.1114.0</Version>
|
<Version>2023.1115.0</Version>
|
||||||
<Authors>Александр Бабаев</Authors>
|
<Authors>Александр Бабаев</Authors>
|
||||||
<Product>Набор компонентов ANB Software</Product>
|
<Product>Набор компонентов ANB Software</Product>
|
||||||
<Description>Библиотека полезных методов языка C#</Description>
|
<Description>Библиотека полезных методов языка C#</Description>
|
||||||
|
@ -16,8 +16,11 @@ public sealed class PasswordEncrypt: IEncryptor
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="password">Пароль</param>
|
/// <param name="password">Пароль</param>
|
||||||
/// <param name="salt">Хэш-код пароля</param>
|
/// <param name="salt">Хэш-код пароля</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <returns>Зашифрованный пароль</returns>
|
/// <returns>Зашифрованный пароль</returns>
|
||||||
public string Encrypt (string password, string salt)
|
public string Encrypt (string password, string salt, string valueIfFail)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
// Получаю byte-массив из хэш-кода пароля
|
// Получаю byte-массив из хэш-кода пароля
|
||||||
byte[] saltBytes = Encoding.UTF8.GetBytes(salt);
|
byte[] saltBytes = Encoding.UTF8.GetBytes(salt);
|
||||||
@ -28,6 +31,11 @@ public sealed class PasswordEncrypt: IEncryptor
|
|||||||
// Возвращаю зашифрованный пароль
|
// Возвращаю зашифрованный пароль
|
||||||
return Convert.ToBase64String(encryptedPassword);
|
return Convert.ToBase64String(encryptedPassword);
|
||||||
}
|
}
|
||||||
|
catch (FormatException)
|
||||||
|
{
|
||||||
|
return valueIfFail;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Этот метод не требует реализации в этом классе!
|
/// Этот метод не требует реализации в этом классе!
|
||||||
@ -35,22 +43,28 @@ public sealed class PasswordEncrypt: IEncryptor
|
|||||||
/// <param name="encryptedValue">НЕ РАБОТАЕТ</param>
|
/// <param name="encryptedValue">НЕ РАБОТАЕТ</param>
|
||||||
/// <param name="salt">НЕ РАБОТАЕТ</param>
|
/// <param name="salt">НЕ РАБОТАЕТ</param>
|
||||||
/// <returns>НЕ РАБОТАЕТ</returns>
|
/// <returns>НЕ РАБОТАЕТ</returns>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <exception cref="NotImplementedException">Этот метод не требует реализации в этом классе!</exception>
|
/// <exception cref="NotImplementedException">Этот метод не требует реализации в этом классе!</exception>
|
||||||
public string Decrypt (string encryptedValue, string salt) => throw new NotImplementedException("Этот метод не требует реализации в этом классе!");
|
public string Decrypt (string encryptedValue, string salt, string valueIfFail) =>
|
||||||
|
throw new NotImplementedException("Этот метод не требует реализации в этом классе!");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Этот метод не требует реализации в этом классе!
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="text">НЕ РАБОТАЕТ</param>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
|
/// <returns>НЕ РАБОТАЕТ</returns>
|
||||||
|
/// <exception cref="NotImplementedException">Этот метод не требует реализации в этом классе!</exception>
|
||||||
|
public string Base64UrlEncode (string text, string valueIfFail) =>
|
||||||
|
throw new NotImplementedException("Этот метод не требует реализации в этом классе!");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Этот метод не требует реализации в этом классе!
|
/// Этот метод не требует реализации в этом классе!
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="text">НЕ РАБОТАЕТ</param>
|
/// <param name="text">НЕ РАБОТАЕТ</param>
|
||||||
/// <returns>НЕ РАБОТАЕТ</returns>
|
/// <returns>НЕ РАБОТАЕТ</returns>
|
||||||
|
/// <param name="valueIfFail">Значение, если неудача</param>
|
||||||
/// <exception cref="NotImplementedException">Этот метод не требует реализации в этом классе!</exception>
|
/// <exception cref="NotImplementedException">Этот метод не требует реализации в этом классе!</exception>
|
||||||
public string Base64UrlEncode (string text) => throw new NotImplementedException("Этот метод не требует реализации в этом классе!");
|
public string Base64UrlDecode (string text, string valueIfFail) =>
|
||||||
|
throw new NotImplementedException("Этот метод не требует реализации в этом классе!");
|
||||||
/// <summary>
|
|
||||||
/// Этот метод не требует реализации в этом классе!
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="text">НЕ РАБОТАЕТ</param>
|
|
||||||
/// <returns>НЕ РАБОТАЕТ</returns>
|
|
||||||
/// <exception cref="NotImplementedException">Этот метод не требует реализации в этом классе!</exception>
|
|
||||||
public string Base64UrlDecode (string text) => throw new NotImplementedException("Этот метод не требует реализации в этом классе!");
|
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
|
||||||
<PackageId>ANBSoftware.ComponentsPackForNet</PackageId>
|
<PackageId>ANBSoftware.ComponentsPackForNet</PackageId>
|
||||||
<Version>2023.11.14.0</Version>
|
<Version>2023.11.15.0</Version>
|
||||||
<Authors>Александр Бабаев</Authors>
|
<Authors>Александр Бабаев</Authors>
|
||||||
<Product>Набор компонентов ANB Software для ASP.NET Core</Product>
|
<Product>Набор компонентов ANB Software для ASP.NET Core</Product>
|
||||||
<Description>Библиотека полезных методов языка C# для ASP.NET Core</Description>
|
<Description>Библиотека полезных методов языка C# для ASP.NET Core</Description>
|
||||||
|
@ -37,6 +37,10 @@ Global
|
|||||||
{80E1FEA9-EEDA-4411-8EBA-11991432E98E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{80E1FEA9-EEDA-4411-8EBA-11991432E98E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{80E1FEA9-EEDA-4411-8EBA-11991432E98E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{80E1FEA9-EEDA-4411-8EBA-11991432E98E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{80E1FEA9-EEDA-4411-8EBA-11991432E98E}.Release|Any CPU.Build.0 = Release|Any CPU
|
{80E1FEA9-EEDA-4411-8EBA-11991432E98E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{3796862F-F181-4A27-92D8-8BF13C4FD711}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{3796862F-F181-4A27-92D8-8BF13C4FD711}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{3796862F-F181-4A27-92D8-8BF13C4FD711}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{3796862F-F181-4A27-92D8-8BF13C4FD711}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user