public string Encrypt(string str) { Twofish fish = new Twofish(); fish.Mode = CipherMode.ECB; System.IO.MemoryStream ms = new System.IO.MemoryStream(); byte[] dummy = { }; //create Twofish Encryptor from this instance ICryptoTransform encrypt = fish.CreateEncryptor(key, dummy); // we use the plainText as the IV as in ECB mode the IV is not used //Create Crypto Stream that transforms file stream using twofish encryption CryptoStream cryptostream = new CryptoStream(ms, encrypt, CryptoStreamMode.Write); byte[] plainText = GetBytes(str); //write out Twofish encrypted stream cryptostream.Write(plainText, 0, plainText.Length); cryptostream.Close(); byte[] bytOut = ms.ToArray(); return(GetString(bytOut)); }
private static Stream CreateStream(Stream s, bool bEncrypt, byte[] pbKey, byte[] pbIV) { ValidateArguments(s, bEncrypt, pbKey, pbIV); Twofish f = new Twofish(); byte[] pbLocalIV = new byte[16]; Array.Copy(pbIV, pbLocalIV, 16); f.IV = pbLocalIV; byte[] pbLocalKey = new byte[32]; Array.Copy(pbKey, pbLocalKey, 32); f.KeySize = 256; f.Key = pbLocalKey; f.Mode = m_rCipherMode; f.Padding = m_rCipherPadding; ICryptoTransform iTransform = (bEncrypt ? f.CreateEncryptor() : f.CreateDecryptor()); Debug.Assert(iTransform != null); if (iTransform == null) { throw new SecurityException("Unable to create Twofish transform!"); } return(new CryptoStream(s, iTransform, bEncrypt ? CryptoStreamMode.Write : CryptoStreamMode.Read)); }
public void encrypt(byte[] plainData, byte[] destination) { tfEncryptor = tf.CreateEncryptor(tf.Key, tf.IV); for (int i = 0; i < plainData.Length / 16; i++) { tfEncryptor.TransformBlock(plainData, i * 16, 16, destination, i * 16); } }
/// <summary> /// Test the twofish cipher in ECB mode /// </summary> /// <param name="Key">The used to encrypt the data.</param> /// <param name="plainText">The plain text.</param> /// <param name="cryptText">The encrypted text to be used for comparison.</param> static void TestTwofishCBC(ref byte[] Key, ref byte[] plainText, ref byte[] iv, ref byte[] cryptText) { Twofish fish = new Twofish(); fish.Mode = CipherMode.CBC; System.IO.MemoryStream ms = new System.IO.MemoryStream(); //create Twofish Encryptor from this instance ICryptoTransform encrypt = fish.CreateEncryptor(Key, iv); // we use the plainText as the IV as in ECB mode the IV is not used //Create Crypto Stream that transforms file stream using twofish encryption CryptoStream cryptostream = new CryptoStream(ms, encrypt, CryptoStreamMode.Write); //write out Twofish encrypted stream cryptostream.Write(plainText, 0, plainText.Length); cryptostream.Close(); byte[] bytOut = ms.ToArray(); /* * // check the first block only * * for (int i=0;i<cryptText.Length;i++) * { * if (bytOut[i] != cryptText[i]) * { * Trace.Write("Cryptext match failure\n"); * break; * } * } */ //create Twofish Decryptor from our twofish instance ICryptoTransform decrypt = fish.CreateDecryptor(Key, iv); System.IO.MemoryStream msD = new System.IO.MemoryStream(); //create crypto stream set to read and do a Twofish decryption transform on incoming bytes CryptoStream cryptostreamDecr = new CryptoStream(msD, decrypt, CryptoStreamMode.Write); //write out Twofish encrypted stream cryptostreamDecr.Write(bytOut, 0, bytOut.Length); cryptostreamDecr.Close(); byte[] bytOutD = msD.GetBuffer(); // check for (int i = 0; i < plainText.Length; i++) { if (bytOutD[i] != plainText[i]) { Trace.Write("Plaintext match failure\n"); break; } } }
static void Main(string[] args) { Console.OutputEncoding = Encoding.Unicode; Twofish fish = new Twofish(); fish.Mode = CipherMode.ECB; System.IO.MemoryStream ms = new System.IO.MemoryStream(); byte[] Key = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; byte[] dummy = { }; //create Twofish Encryptor from this instance ICryptoTransform encrypt = fish.CreateEncryptor(Key, dummy); // we use the plainText as the IV as in ECB mode the IV is not used //Create Crypto Stream that transforms file stream using twofish encryption CryptoStream cryptostream = new CryptoStream(ms, encrypt, CryptoStreamMode.Write); byte[] plainText = GetBytes("Some string to encrypt"); //write out Twofish encrypted stream cryptostream.Write(plainText, 0, plainText.Length); cryptostream.Close(); byte[] bytOut = ms.ToArray(); System.Console.WriteLine("Encrypted string: " + GetString(bytOut)); //create Twofish Decryptor from our twofish instance ICryptoTransform decrypt = fish.CreateDecryptor(Key, plainText); System.IO.MemoryStream msD = new System.IO.MemoryStream(); //create crypto stream set to read and do a Twofish decryption transform on incoming bytes CryptoStream cryptostreamDecr = new CryptoStream(msD, decrypt, CryptoStreamMode.Write); //write out Twofish encrypted stream cryptostreamDecr.Write(bytOut, 0, bytOut.Length); cryptostreamDecr.Close(); byte[] bytOutD = msD.GetBuffer(); System.Console.WriteLine("Decrypted string: " + GetString(bytOutD)); Console.ReadKey(); }
public string shadow_encrypt(string plainText) { fish = new Twofish(); fish.Mode = CipherMode.ECB; ms = new System.IO.MemoryStream(); //form.log("we were guna send the IM with " + plainText); byte [] plainBytes = Utils.StringToBytes(plainText); ICryptoTransform encode = new ToBase64Transform(); ICryptoTransform encrypt = fish.CreateEncryptor(form.getKey(), plainBytes); CryptoStream cryptostream = new CryptoStream(new CryptoStream(ms, encode, CryptoStreamMode.Write), encrypt, CryptoStreamMode.Write); cryptostream.Write(plainBytes, 0, plainBytes.Length); cryptostream.Close(); byte[] bytOut = ms.ToArray(); form.log("We encrypted " + plainText + " to " + Utils.BytesToString(bytOut), Color.DarkRed); return(Utils.BytesToString(bytOut)); }
/// <summary> /// This encrypts our data using twofish and then converts to base64 and then reverses the process /// </summary> /// <param name="Key">The Key to use for the encryption stage</param> /// <param name="plainText">The plain text to encrypt and encode and then to compare when it has been decoded and decrypted</param> static void Cascade(ref byte[] Key, ref byte[] plainText) { Twofish fish = new Twofish(); fish.Mode = CipherMode.ECB; System.IO.MemoryStream ms = new System.IO.MemoryStream(); // create an encoder ICryptoTransform encode = new ToBase64Transform(); //create Twofish Encryptor from this instance ICryptoTransform encrypt = fish.CreateEncryptor(Key, plainText); // we use the plainText as the IV as in ECB mode the IV is not used // we have to work backwords defining the last link in the chain first CryptoStream cryptostreamEncode = new CryptoStream(ms, encode, CryptoStreamMode.Write); CryptoStream cryptostream = new CryptoStream(cryptostreamEncode, encrypt, CryptoStreamMode.Write); // or we could do this as we don't need to use cryptostreamEncode //CryptoStream cryptostream = new CryptoStream(new CryptoStream(ms,encode,CryptoStreamMode.Write), // encrypt,CryptoStreamMode.Write); cryptostream.Write(plainText, 0, plainText.Length); cryptostream.Close(); //long pos = ms.Position; // our stream is closed so we cannot find out what the size of the buffer is - daft byte[] bytOut = ms.ToArray(); // and now we undo what we did // create a decoder ICryptoTransform decode = new FromBase64Transform(); //create DES Decryptor from our des instance ICryptoTransform decrypt = fish.CreateDecryptor(Key, plainText); System.IO.MemoryStream msD = new System.IO.MemoryStream(); //create crypto stream set to read and do a Twofish decryption transform on incoming bytes CryptoStream cryptostreamD = new CryptoStream(msD, decrypt, CryptoStreamMode.Write); CryptoStream cryptostreamDecode = new CryptoStream(cryptostreamD, decode, CryptoStreamMode.Write); // again we could do the following //CryptoStream cryptostreamDecode = new CryptoStream(new CryptoStream(msD,decrypt,CryptoStreamMode.Write), // decode,CryptoStreamMode.Write); //write out the decrypted stream cryptostreamDecode.Write(bytOut, 0, bytOut.Length); cryptostreamDecode.Close(); byte[] bytOutD = msD.ToArray(); // we should now have our plain text back for (int i = 0; i < plainText.Length; i++) { if (bytOutD[i] != plainText[i]) { Trace.Write("Plaintext match failure"); break; } } }