Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// AesHelper jest klasą pomocniczą służącą do wykonywania najprostszych operacji na algorytmie AES.
- /// </summary>
- public static class AesHelper
- {
- /// <summary>
- /// Metoda Encrypt szyfruje podany łańcuch znaków podanym hasłem i zwraca wynik tego szyfrowania.
- /// </summary>
- /// <param name="what">Tekst, który ma zostać zaszyfrowany</param>
- /// <param name="key">Klucz, który jest potrzebny do rozszyfrowania tekstu</param>
- /// <returns>Zaszyfrowany łańcuch znaków typu string</returns>
- public static string Encrypt(string what, string key)
- {
- byte[] clearBytes = Encoding.Unicode.GetBytes(what);
- using (Aes encryptor = Aes.Create())
- {
- Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(key, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
- encryptor.Key = pdb.GetBytes(32);
- encryptor.IV = pdb.GetBytes(16);
- using (MemoryStream ms = new MemoryStream())
- {
- using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
- {
- cs.Write(clearBytes, 0, clearBytes.Length);
- cs.Close();
- }
- what = Convert.ToBase64String(ms.ToArray());
- }
- }
- return Convert.ToBase64String(Encoding.UTF8.GetBytes(new Random().Next(int.MinValue, int.MaxValue) + "<?>" + what + "<?>" + new Random().Next(int.MinValue, int.MaxValue)));
- }
- /// <summary>
- /// Metoda Decrypt służy do odszyfrowania podanego łańcucha znaków podanym hasłem i zwraca wynik tego szyfrowania.
- /// </summary>
- /// <param name="what">Zaszyfrowany tekst pochodzący z metody Encrypt</param>
- /// <param name="key">Klucz, który podano podczas procesu szyfrowania</param>
- /// <returns>Zwraca odszyfrowany ciąg znaków</returns>
- public static string Decrypt(string what, string key)
- {
- what = Encoding.UTF8.GetString(Convert.FromBase64String(what)).Split(new string[] { "<?>" }, StringSplitOptions.RemoveEmptyEntries)[1];
- byte[] cipherBytes = Convert.FromBase64String(what);
- using (Aes encryptor = Aes.Create())
- {
- Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(key, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
- encryptor.Key = pdb.GetBytes(32);
- encryptor.IV = pdb.GetBytes(16);
- using (MemoryStream ms = new MemoryStream())
- {
- using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
- {
- cs.Write(cipherBytes, 0, cipherBytes.Length);
- cs.Close();
- }
- what = Encoding.Unicode.GetString(ms.ToArray());
- }
- }
- return what;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement