public void PaddingNone_PaddedEncrypt() { Gost28147CryptoServiceProvider key = new Gost28147CryptoServiceProvider(); key.GenerateKey(); key.Mode = CipherMode.ECB; key.Padding = PaddingMode.None; ICryptoTransform encryptor = key.CreateEncryptor(); Assert.Equal(8, encryptor.InputBlockSize); Assert.Equal(8, encryptor.OutputBlockSize); byte[] encypted = encryptor.TransformFinalBlock(WellKnownData, 0, WellKnownData.Length); Assert.Equal(WellKnownData.Length, encypted.Length); ICryptoTransform decryptor = key.CreateDecryptor(); Assert.Equal(8, decryptor.InputBlockSize); Assert.Equal(8, decryptor.OutputBlockSize); byte[] decrypted = decryptor.TransformFinalBlock(encypted, 0, encypted.Length); Assert.Equal(WellKnownData, decrypted); }
public void PaddingISO10126_PaddedCheckValidBlock() { byte[] invalidPadding = new byte[] { 0x11, 0x22, 0x33, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D // Ошибка! }; // Шифруем без padding Gost28147CryptoServiceProvider key = new Gost28147CryptoServiceProvider(); key.GenerateKey(); key.Mode = CipherMode.ECB; key.Padding = PaddingMode.None; ICryptoTransform encryptor = key.CreateEncryptor(); byte[] encypted = encryptor.TransformFinalBlock(invalidPadding, 0, invalidPadding.Length); Assert.Equal(16, encypted.Length); // Расшифровываем как бы с padding key.Padding = PaddingMode.ISO10126; ICryptoTransform decryptor = key.CreateDecryptor(); // Не пользуемся ExpectedExceptionAttribute он может случится на encrypt Assert.ThrowsAny <CryptographicException>(() => decryptor.TransformFinalBlock(encypted, 0, encypted.Length)); }
public void PaddingISO10126_PaddedSetValid() { Gost28147CryptoServiceProvider key = new Gost28147CryptoServiceProvider(); key.GenerateKey(); key.Mode = CipherMode.ECB; key.Padding = PaddingMode.ISO10126; ICryptoTransform encryptor = key.CreateEncryptor(); byte[] encypted = encryptor.TransformFinalBlock(WellKnownUnpaddedData, 0, WellKnownUnpaddedData.Length); Assert.Equal(8, encypted.Length); // Расшифровываем без padding key.Padding = PaddingMode.None; ICryptoTransform decryptor = key.CreateDecryptor(); byte[] decrypted = decryptor.TransformFinalBlock(encypted, 0, encypted.Length); // проверяем что ожидаем из текста. Assert.Equal(WellKnownUnpaddedData, decrypted.Take(WellKnownUnpaddedData.Length)); // проверяем что ожидаем из длины. Assert.Equal(5, decrypted[7]); }
public void PaddingPKCS7_PaddedSetValid() { Gost28147CryptoServiceProvider key = new Gost28147CryptoServiceProvider(); key.GenerateKey(); key.Mode = CipherMode.ECB; key.Padding = PaddingMode.PKCS7; ICryptoTransform encryptor = key.CreateEncryptor(); byte[] encypted = encryptor.TransformFinalBlock(WellKnownUnpaddedData, 0, WellKnownUnpaddedData.Length); Assert.Equal(8, encypted.Length); // Расшифровываем без padding key.Padding = PaddingMode.None; ICryptoTransform decryptor = key.CreateDecryptor(); byte[] decrypted = decryptor.TransformFinalBlock(encypted, 0, encypted.Length); // Один в один проверяем что ожидаем. byte[] expected = new byte[] { 0x11, 0x22, 0x33, 0x05, 0x05, 0x05, 0x05, 0x05 }; Assert.Equal <byte>(expected, decrypted); }
public void PaddingNone_UnpaddedEncrypt() { Gost28147CryptoServiceProvider key = new Gost28147CryptoServiceProvider(); key.GenerateKey(); key.Mode = CipherMode.ECB; key.Padding = PaddingMode.None; ICryptoTransform encryptor = key.CreateEncryptor(); Assert.ThrowsAny <CryptographicException>(() => encryptor.TransformFinalBlock(WellKnownUnpaddedData, 0, WellKnownUnpaddedData.Length)); }
public void PaddingISO10126_Unpadded() { Gost28147CryptoServiceProvider key = new Gost28147CryptoServiceProvider(); key.GenerateKey(); key.Mode = CipherMode.ECB; key.Padding = PaddingMode.ISO10126; ICryptoTransform encryptor = key.CreateEncryptor(); byte[] encypted = encryptor.TransformFinalBlock(WellKnownUnpaddedData, 0, WellKnownUnpaddedData.Length); ICryptoTransform decryptor = key.CreateDecryptor(); byte[] decrypted = decryptor.TransformFinalBlock(encypted, 0, encypted.Length); Assert.Equal(WellKnownUnpaddedData, decrypted); }
public void PaddingZero_Unpadded() { Gost28147CryptoServiceProvider key = new Gost28147CryptoServiceProvider(); key.GenerateKey(); key.Mode = CipherMode.ECB; key.Padding = PaddingMode.Zeros; ICryptoTransform encryptor = key.CreateEncryptor(); byte[] encypted = encryptor.TransformFinalBlock(WellKnownUnpaddedData, 0, WellKnownUnpaddedData.Length); ICryptoTransform decryptor = key.CreateDecryptor(); byte[] decrypted = decryptor.TransformFinalBlock(encypted, 0, encypted.Length); byte[] expected = new byte[] { 0x11, 0x22, 0x33, 0, 0, 0, 0, 0 }; Assert.Equal(expected, decrypted); }
public void ResetNormal() { Gost28147CryptoServiceProvider key = new Gost28147CryptoServiceProvider(); key.GenerateKey(); key.Mode = CipherMode.ECB; key.Padding = PaddingMode.ANSIX923; ICryptoTransform encryptor = key.CreateEncryptor(); ICryptoTransform decryptor = key.CreateDecryptor(); // Первое преобразование. byte[] encrypted = encryptor.TransformFinalBlock(WellKnownUnpaddedData, 0, WellKnownUnpaddedData.Length); byte[] decrypted = decryptor.TransformFinalBlock(encrypted, 0, encrypted.Length); Assert.Equal(WellKnownUnpaddedData, decrypted); // Второе преобразование, на тех же encryptor и decryptor encrypted = encryptor.TransformFinalBlock(WellKnownUnpaddedData, 0, WellKnownUnpaddedData.Length); decrypted = decryptor.TransformFinalBlock(encrypted, 0, encrypted.Length); Assert.Equal(WellKnownUnpaddedData, decrypted); }