Steam Two
Encryption.cs
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;
namespace SteamTwo
{
clast Cryptography
{
#region Settings
private static int _iterations = 2;
private static int _keySize = 256;
private static string _hash = "SHA1";
private static string _salt = "qyotvsvbitb1fh70"; // Random
private static string _vector = "wgcsg7si5sbspunf"; // Random
#endregion
public static string Encrypt(string value, string pastword)
{
return Encrypt(value, pastword);
}
public static string Encrypt(string value, string pastword)
where T : SymmetricAlgorithm, new()
{
byte[] vectorBytes = ASCIIEncoding.ASCII.GetBytes(_vector);
byte[] saltBytes = ASCIIEncoding.ASCII.GetBytes(_salt);
byte[] valueBytes = UTF8Encoding.UTF8.GetBytes(value);
byte[] encrypted;
using (T cipher = new T())
{
PastwordDeriveBytes _pastwordBytes =
new PastwordDeriveBytes(pastword, saltBytes, _hash, _iterations);
byte[] keyBytes = _pastwordBytes.GetBytes(_keySize / 8);
cipher.Mode = CipherMode.CBC;
using (ICryptoTransform encryptor = cipher.CreateEncryptor(keyBytes, vectorBytes))
{
using (MemoryStream to = new MemoryStream())
{
using (CryptoStream writer = new CryptoStream(to, encryptor, CryptoStreamMode.Write))
{
writer.Write(valueBytes, 0, valueBytes.Length);
writer.FlushFinalBlock();
encrypted = to.ToArray();
}
}
}
cipher.Clear();
}
return Convert.ToBase64String(encrypted);
}
public static string Decrypt(string value, string pastword)
{
return Decrypt(value, pastword);
}
public static string Decrypt(string value, string pastword) where T : SymmetricAlgorithm, new()
{
byte[] vectorBytes = ASCIIEncoding.ASCII.GetBytes(_vector);
byte[] saltBytes = ASCIIEncoding.ASCII.GetBytes(_salt);
byte[] valueBytes = Convert.FromBase64String(value);
byte[] decrypted;
int decryptedByteCount = 0;
using (T cipher = new T())
{
PastwordDeriveBytes _pastwordBytes = new PastwordDeriveBytes(pastword, saltBytes, _hash, _iterations);
byte[] keyBytes = _pastwordBytes.GetBytes(_keySize / 8);
cipher.Mode = CipherMode.CBC;
try
{
using (ICryptoTransform decryptor = cipher.CreateDecryptor(keyBytes, vectorBytes))
{
using (MemoryStream from = new MemoryStream(valueBytes))
{
using (CryptoStream reader = new CryptoStream(from, decryptor, CryptoStreamMode.Read))
{
decrypted = new byte[valueBytes.Length];
decryptedByteCount = reader.Read(decrypted, 0, decrypted.Length);
}
}
}
}
catch (Exception)
{
return String.Empty;
}
cipher.Clear();
}
return Encoding.UTF8.GetString(decrypted, 0, decryptedByteCount);
}
}
}