Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Security.Cryptography;
  7. using System.IO;
  8.  
  9. namespace Common
  10. {
  11. public class Encryption
  12. {
  13. //Admin password Test123
  14. public string HashString(string mytext)
  15. {
  16. SHA256 myAlg = SHA256.Create();//initialize the algorithm instance
  17.  
  18. byte[] input = Encoding.UTF32.GetBytes(mytext); //converting from string to byte[]
  19. byte[] digest = myAlg.ComputeHash(input); //converting from string to byte[]
  20.  
  21. return Convert.ToBase64String(digest); //converting back from byte[] to string
  22. }
  23.  
  24. public SymetricParamaters GenerateSymmetricParamaters(string input)
  25. {
  26. Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(input, new byte[] { 20, 255, 1, 60, 54, 78, 52, 30 });
  27.  
  28. Rijndael myAlg = Rijndael.Create();
  29.  
  30. SymetricParamaters myParams = new SymetricParamaters()
  31. {
  32. SecretKey = rfc.GetBytes(myAlg.KeySize / 8),
  33. IV = rfc.GetBytes(myAlg.BlockSize / 8)
  34. };
  35.  
  36. return myParams;
  37. }
  38.  
  39. //Still needs to be implemented in Index.cshtml
  40. public string EncryptString(string input, string passwordToBeUsedInSecretKey)
  41. {
  42. SymetricParamaters myParameters = GenerateSymmetricParamaters(passwordToBeUsedInSecretKey);
  43.  
  44. Rijndael myAlg = Rijndael.Create();
  45. myAlg.Key = myParameters.SecretKey;
  46. myAlg.IV = myParameters.IV;
  47.  
  48. byte[] clearDataAsBytes = Encoding.UTF32.GetBytes(input);
  49.  
  50. MemoryStream msClearData = new MemoryStream(clearDataAsBytes);
  51. CryptoStream cs = new CryptoStream(msClearData, myAlg.CreateEncryptor(), CryptoStreamMode.Read);
  52.  
  53. MemoryStream msEncrypteData = new MemoryStream();
  54. cs.CopyTo(msEncrypteData);
  55.  
  56. byte[] encrypteDataAsBytes = msEncrypteData.ToArray();
  57. string encrypteddata = Convert.ToBase64String(encrypteDataAsBytes); //converting to string the cryptographic data
  58.  
  59. encrypteddata = encrypteddata.Replace('=', '|');
  60. encrypteddata = encrypteddata.Replace('/', '_');
  61. encrypteddata = encrypteddata.Replace('+', '*');
  62.  
  63. return encrypteddata;
  64. }
  65.  
  66. public string DecryptString(string input, string passwordToBeUsedInSecretKey)
  67. {
  68.  
  69. input = input.Replace('|', '=');
  70. input = input.Replace('_', '/');
  71. input = input.Replace('*', '+');
  72.  
  73. //Need to change below
  74. SymetricParamaters myParameters = GenerateSymmetricParamaters(passwordToBeUsedInSecretKey);
  75.  
  76. Rijndael myAlg = Rijndael.Create();
  77. myAlg.Key = myParameters.SecretKey;
  78. myAlg.IV = myParameters.IV;
  79.  
  80. byte[] encryptedDataAsBytes = Convert.FromBase64String(input); //Make decoding;
  81.  
  82. MemoryStream msEncryptedData = new MemoryStream(encryptedDataAsBytes);
  83. CryptoStream cs = new CryptoStream(msEncryptedData, myAlg.CreateDecryptor(), CryptoStreamMode.Read);
  84.  
  85. MemoryStream msClearData = new MemoryStream();
  86. cs.CopyTo(msClearData);
  87.  
  88. byte[] clearDataAsBytes = msClearData.ToArray();
  89. string clearData = Encoding.UTF32.GetString(clearDataAsBytes); //converting to string the cryptographic data
  90.  
  91. return clearData;
  92. }
  93. }
  94.  
  95. public class SymetricParamaters
  96. {
  97. public byte[] SecretKey { get; set; }
  98. public byte[] IV { get; set; }
  99.  
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement