Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Security.Cryptography;
- using System.IO;
- namespace Common
- {
- public class Encryption
- {
- //Admin password Test123
- public string HashString(string mytext)
- {
- SHA256 myAlg = SHA256.Create();//initialize the algorithm instance
- byte[] input = Encoding.UTF32.GetBytes(mytext); //converting from string to byte[]
- byte[] digest = myAlg.ComputeHash(input); //converting from string to byte[]
- return Convert.ToBase64String(digest); //converting back from byte[] to string
- }
- public SymetricParamaters GenerateSymmetricParamaters(string input)
- {
- Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(input, new byte[] { 20, 255, 1, 60, 54, 78, 52, 30 });
- Rijndael myAlg = Rijndael.Create();
- SymetricParamaters myParams = new SymetricParamaters()
- {
- SecretKey = rfc.GetBytes(myAlg.KeySize / 8),
- IV = rfc.GetBytes(myAlg.BlockSize / 8)
- };
- return myParams;
- }
- //Still needs to be implemented in Index.cshtml
- public string EncryptString(string input, string passwordToBeUsedInSecretKey)
- {
- SymetricParamaters myParameters = GenerateSymmetricParamaters(passwordToBeUsedInSecretKey);
- Rijndael myAlg = Rijndael.Create();
- myAlg.Key = myParameters.SecretKey;
- myAlg.IV = myParameters.IV;
- byte[] clearDataAsBytes = Encoding.UTF32.GetBytes(input);
- MemoryStream msClearData = new MemoryStream(clearDataAsBytes);
- CryptoStream cs = new CryptoStream(msClearData, myAlg.CreateEncryptor(), CryptoStreamMode.Read);
- MemoryStream msEncrypteData = new MemoryStream();
- cs.CopyTo(msEncrypteData);
- byte[] encrypteDataAsBytes = msEncrypteData.ToArray();
- string encrypteddata = Convert.ToBase64String(encrypteDataAsBytes); //converting to string the cryptographic data
- encrypteddata = encrypteddata.Replace('=', '|');
- encrypteddata = encrypteddata.Replace('/', '_');
- encrypteddata = encrypteddata.Replace('+', '*');
- return encrypteddata;
- }
- public string DecryptString(string input, string passwordToBeUsedInSecretKey)
- {
- input = input.Replace('|', '=');
- input = input.Replace('_', '/');
- input = input.Replace('*', '+');
- //Need to change below
- SymetricParamaters myParameters = GenerateSymmetricParamaters(passwordToBeUsedInSecretKey);
- Rijndael myAlg = Rijndael.Create();
- myAlg.Key = myParameters.SecretKey;
- myAlg.IV = myParameters.IV;
- byte[] encryptedDataAsBytes = Convert.FromBase64String(input); //Make decoding;
- MemoryStream msEncryptedData = new MemoryStream(encryptedDataAsBytes);
- CryptoStream cs = new CryptoStream(msEncryptedData, myAlg.CreateDecryptor(), CryptoStreamMode.Read);
- MemoryStream msClearData = new MemoryStream();
- cs.CopyTo(msClearData);
- byte[] clearDataAsBytes = msClearData.ToArray();
- string clearData = Encoding.UTF32.GetString(clearDataAsBytes); //converting to string the cryptographic data
- return clearData;
- }
- }
- public class SymetricParamaters
- {
- public byte[] SecretKey { get; set; }
- public byte[] IV { get; set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement