1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82:
| static class Cryption { public enum CryptionBitMode { Bit128, Bit192, Bit256 } static public string Encrypt(string text, CryptionBitMode mode, byte[] key, byte[] iv) { int size; switch (mode) { case CryptionBitMode.Bit128: size = 128; break; case CryptionBitMode.Bit192: size = 192; break; case CryptionBitMode.Bit256: size = 256; break; default: throw new Exception("Invalid CryptionBitMode."); }
Rijndael rijndael = Rijndael.Create(); rijndael.BlockSize = size; rijndael.IV = iv; rijndael.Key = key;
MemoryStream stream = new MemoryStream(); CryptoStream crypter = new CryptoStream(stream, rijndael.CreateEncryptor(), CryptoStreamMode.Write );
byte[] buffer = Encoding.Unicode.GetBytes(text); crypter.Write(buffer, 0, buffer.Length);
buffer = new byte[stream.Length]; stream.Seek(0, SeekOrigin.Begin); stream.Read(buffer, 0, buffer.Length);
crypter.FlushFinalBlock(); crypter.Close(); stream.Close();
return Encoding.Unicode.GetString(buffer); }
static public string Decrypt(string text, CryptionBitMode mode, byte[] key, byte[] iv) { int size; switch (mode) { case CryptionBitMode.Bit128: size = 128; break; case CryptionBitMode.Bit192: size = 192; break; case CryptionBitMode.Bit256: size = 256; break; default: throw new Exception("Invalid CryptionBitMode."); }
Rijndael rijndael = Rijndael.Create(); rijndael.BlockSize = size; rijndael.IV = iv; rijndael.Key = key;
MemoryStream stream = new MemoryStream(); CryptoStream crypter = new CryptoStream(stream, rijndael.CreateDecryptor(), CryptoStreamMode.Read);
byte[] buffer = Encoding.Unicode.GetBytes(text); stream.Write(buffer, 0, buffer.Length);
buffer = new byte[stream.Length]; stream.Seek(0, SeekOrigin.Begin); crypter.Read(buffer, 0, buffer.Length); crypter.FlushFinalBlock(); crypter.Close(); stream.Close();
return Encoding.Unicode.GetString(buffer); } } |