Gremlin/Gremlin_BlazorServer/Data/DBClasses/Encryption.cs

61 lines
1.6 KiB
C#

using System.Security;
namespace Gremlin_BlazorServer.Data.DBClasses
{
internal class Encryption
{
// private static readonly byte[] entropy = System.Text.Encoding.Unicode.GetBytes("My super power encryption made nearly by my own");
//public static string EncryptString(SecureString input)
//{
// byte[] encryptedData = System.Security.Cryptography.ProtectedData.Protect(
// System.Text.Encoding.Unicode.GetBytes(ToInsecureString(input)),
// entropy,
// System.Security.Cryptography.DataProtectionScope.CurrentUser);
// return Convert.ToBase64String(encryptedData);
//}
//public static SecureString DecryptString(string encryptedData)
//{
// try
// {
// byte[] decryptedData = System.Security.Cryptography.ProtectedData.Unprotect(
// Convert.FromBase64String(encryptedData),
// entropy,
// System.Security.Cryptography.DataProtectionScope.CurrentUser);
// return ToSecureString(System.Text.Encoding.Unicode.GetString(decryptedData));
// }
// catch
// {
// return new SecureString();
// }
//}
public static SecureString ToSecureString(string input)
{
SecureString secure = new();
foreach (char c in input)
{
secure.AppendChar(c);
}
secure.MakeReadOnly();
return secure;
}
public static string ToInsecureString(SecureString input)
{
string returnValue;
IntPtr ptr = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(input);
try
{
returnValue = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(ptr);
}
finally
{
System.Runtime.InteropServices.Marshal.ZeroFreeBSTR(ptr);
}
return returnValue;
}
}
}