Advertisement
Mitch528

Untitled

Sep 23rd, 2013
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.28 KB | None | 0 0
  1. public static class SecurityExtensions
  2.     {
  3.  
  4.         public static string ToSHA1(this string str)
  5.         {
  6.  
  7.             SHA1 sha1 = SHA1.Create();
  8.  
  9.             byte[] buffer = Encoding.ASCII.GetBytes(str);
  10.  
  11.             sha1.ComputeHash(buffer);
  12.  
  13.             return BitConverter.ToString(sha1.Hash).Replace("-", "");
  14.  
  15.         }
  16.  
  17.         public static string EncryptString(this SecureString input, byte[] entropy)
  18.         {
  19.             if (input == null)
  20.             {
  21.                 return null;
  22.             }
  23.  
  24.             var encryptedData = ProtectedData.Protect(
  25.                 Encoding.Unicode.GetBytes(input.ToInsecureString()),
  26.                 entropy,
  27.                 DataProtectionScope.CurrentUser);
  28.  
  29.             return Convert.ToBase64String(encryptedData);
  30.         }
  31.  
  32.         public static SecureString DecryptString(this string encryptedData, byte[] entropy)
  33.         {
  34.             if (encryptedData == null)
  35.             {
  36.                 return null;
  37.             }
  38.  
  39.             try
  40.             {
  41.                 var decryptedData = ProtectedData.Unprotect(
  42.                     Convert.FromBase64String(encryptedData),
  43.                     entropy,
  44.                     DataProtectionScope.CurrentUser);
  45.  
  46.                 return Encoding.Unicode.GetString(decryptedData).ToSecureString();
  47.             }
  48.             catch
  49.             {
  50.                 return new SecureString();
  51.             }
  52.         }
  53.  
  54.         public static SecureString ToSecureString(this IEnumerable<char> input)
  55.         {
  56.             if (input == null)
  57.             {
  58.                 return null;
  59.             }
  60.  
  61.             var secure = new SecureString();
  62.  
  63.             foreach (var c in input)
  64.             {
  65.                 secure.AppendChar(c);
  66.             }
  67.  
  68.             secure.MakeReadOnly();
  69.             return secure;
  70.         }
  71.  
  72.         public static string ToInsecureString(this SecureString input)
  73.         {
  74.             if (input == null)
  75.             {
  76.                 return null;
  77.             }
  78.  
  79.             var ptr = Marshal.SecureStringToBSTR(input);
  80.  
  81.             try
  82.             {
  83.                 return Marshal.PtrToStringBSTR(ptr);
  84.             }
  85.             finally
  86.             {
  87.                 Marshal.ZeroFreeBSTR(ptr);
  88.             }
  89.         }
  90.  
  91.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement