· 9 years ago · Dec 21, 2016, 03:12 PM
1using (RijndaelManaged rijndaelCipher = new RijndaelManaged())
2 {
3 PasswordDeriveBytes secretKey = new PasswordDeriveBytes(Encoding.ASCII.GetBytes(key), Encoding.ASCII.GetBytes(salt));
4 using (ICryptoTransform encryptor = rijndaelCipher.CreateEncryptor(secretKey.GetBytes(32), secretKey.GetBytes(16)))
5 {
6 using (MemoryStream memoryStream = new MemoryStream())
7 {
8 using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
9 {
10 cryptoStream.Write(plainText, 0, plainText.Length);
11 cryptoStream.FlushFinalBlock();
12 string base64 = Convert.ToBase64String(memoryStream.ToArray());
13
14 // Generate a string that won't get screwed up when passed as a query string.
15 string urlEncoded = HttpUtility.UrlEncode(base64);
16 return urlEncoded;
17 }
18 }
19 }
20 }
21 }
22
23public string DecryptQueryString(string inputText, string key, string salt)
24 {
25 byte[] encryptedData = Convert.FromBase64String(inputText);
26 PasswordDeriveBytes secretKey = new PasswordDeriveBytes(Encoding.ASCII.GetBytes(key), Encoding.ASCII.GetBytes(salt));
27
28 using (RijndaelManaged rijndaelCipher = new RijndaelManaged())
29 {
30 using (ICryptoTransform decryptor = rijndaelCipher.CreateDecryptor(secretKey.GetBytes(32), secretKey.GetBytes(16)))
31 {
32 using (MemoryStream memoryStream = new MemoryStream(encryptedData))
33 {
34 using (CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read))
35 {
36 byte[] plainText = new byte[encryptedData.Length];
37 cryptoStream.Read(plainText, 0, plainText.Length);
38 string utf8 = Encoding.UTF8.GetString(plainText);
39 return utf8;
40 }
41 }
42 }
43 }
44 }