105 lines
3.1 KiB
C#
105 lines
3.1 KiB
C#
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using Microsoft.IdentityModel.Tokens;
|
|
|
|
namespace FoodsharingSiegen.Contracts.Helper
|
|
{
|
|
public static class Cryptor
|
|
{
|
|
/// <summary>
|
|
/// The signing key
|
|
/// </summary>
|
|
private const string SigningKey = "2uasw2§$%1nd47n9s43&%Zs3529s23&/%AW";
|
|
|
|
#region Public Method TryDecrypt
|
|
|
|
/// <summary>
|
|
/// Decrypts the crypted text (a. beging, 04.04.2022)
|
|
/// </summary>
|
|
/// <param name="cryptedText">The crypted text</param>
|
|
/// <param name="plainText"></param>
|
|
/// <returns>The string</returns>
|
|
public static bool TryDecrypt(string cryptedText, out string plainText)
|
|
{
|
|
plainText = string.Empty;
|
|
|
|
try
|
|
{
|
|
CreateAlgorithm(out var tripleDes);
|
|
|
|
var toEncryptArray = Convert.FromBase64String(cryptedText);
|
|
|
|
var cTransform = tripleDes.CreateDecryptor();
|
|
var resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
|
|
|
|
tripleDes.Clear();
|
|
|
|
plainText = Encoding.UTF8.GetString(resultArray);
|
|
|
|
return true;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Public Method Encrypt
|
|
|
|
/// <summary>
|
|
/// Encrypts the plain text (a. beging, 04.04.2022)
|
|
/// </summary>
|
|
/// <param name="plainText">The plain text</param>
|
|
/// <returns>The string</returns>
|
|
public static string Encrypt(string plainText)
|
|
{
|
|
CreateAlgorithm(out var tripleDes);
|
|
|
|
var toEncryptArray = Encoding.UTF8.GetBytes(plainText );
|
|
|
|
|
|
|
|
var cTransform = tripleDes.CreateEncryptor();
|
|
|
|
var resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
|
|
|
|
tripleDes.Clear();
|
|
|
|
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Private Method GetSigningKey
|
|
|
|
/// <summary>
|
|
/// Gets the signing key (a. beging, 04.04.2022)
|
|
/// </summary>
|
|
/// <returns>The security key</returns>
|
|
public static SecurityKey GetSigningKey() => new SymmetricSecurityKey(Encoding.ASCII.GetBytes(SigningKey));
|
|
|
|
#endregion
|
|
|
|
#region Private Method CreateAlgorithm
|
|
|
|
/// <summary>
|
|
/// Creates the algorithm using the specified triple des (a. beging, 04.04.2022)
|
|
/// </summary>
|
|
/// <param name="tripleDes">The triple des</param>
|
|
private static void CreateAlgorithm(out TripleDES tripleDes)
|
|
{
|
|
var md5 = MD5.Create();
|
|
var keyArray = md5.ComputeHash(Encoding.UTF8.GetBytes(SigningKey));
|
|
md5.Clear();
|
|
|
|
tripleDes = TripleDES.Create();
|
|
tripleDes.Key = keyArray;
|
|
tripleDes.Mode = CipherMode.ECB;
|
|
tripleDes.Padding = PaddingMode.PKCS7;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |