61 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|