using System.Security.Cryptography;
using System.Text;
using Microsoft.IdentityModel.Tokens;
namespace FoodsharingSiegen.Contracts.Helper
{
public static class Cryptor
{
///
/// The signing key
///
private const string SigningKey = "2uasw2§$%1nd47n9s43&%Zs3529s23&/%AW";
#region Public Method TryDecrypt
///
/// Decrypts the crypted text (a. beging, 04.04.2022)
///
/// The crypted text
///
/// The string
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
///
/// Encrypts the plain text (a. beging, 04.04.2022)
///
/// The plain text
/// The string
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
///
/// Gets the signing key (a. beging, 04.04.2022)
///
/// The security key
public static SecurityKey GetSigningKey() => new SymmetricSecurityKey(Encoding.ASCII.GetBytes(SigningKey));
#endregion
#region Private Method CreateAlgorithm
///
/// Creates the algorithm using the specified triple des (a. beging, 04.04.2022)
///
/// The triple des
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
}
}