Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Security.Cryptography;
- using System.Text;
- namespace Lab03_cryptoAPI_
- {
- class TripleDESManagedExample
- {
- public static void Main()
- {
- Console.WriteLine("Введите строку для шифрования:");
- var original = Console.ReadLine();
- // Create a new instance of the TripleDESCryptoServiceProvider
- // class. This generates a new key and initialization
- // vector (IV).
- try
- {
- using (var myTripleDES = new DESCryptoServiceProvider())
- {
- // Encrypt the string to an array of bytes.
- var encrypted = EncryptStringToBytes(original, myTripleDES.Key, myTripleDES.IV);
- Console.WriteLine($"Зашифрованное сообщение: {Encoding.ASCII.GetString(encrypted)}");
- // Decrypt the bytes to a string.
- var roundtrip = DecryptStringFromBytes(encrypted, myTripleDES.Key, myTripleDES.IV);
- Console.WriteLine($"Рвсшифрованное сообщение: {roundtrip}");
- //Display the original data and the decrypted data.
- // Console.WriteLine("Original: {0}", original);
- //Console.WriteLine("Round Trip: {0}", roundtrip);
- }
- }
- catch (Exception e)
- {
- Console.WriteLine("Error: {0}", e.Message);
- }
- }
- static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
- {
- // Check arguments.
- if (plainText == null || plainText.Length <= 0)
- throw new ArgumentNullException("plainText");
- if (Key == null || Key.Length <= 0)
- throw new ArgumentNullException("Key");
- if (IV == null || IV.Length <= 0)
- throw new ArgumentNullException("Key");
- byte[] encrypted;
- // Create an TripleDESCryptoServiceProvider object
- // with the specified key and IV.
- using (var tdsAlg = new DESCryptoServiceProvider())
- {
- tdsAlg.Key = Key;
- tdsAlg.IV = IV;
- // Create a decrytor to perform the stream transform.
- ICryptoTransform encryptor = tdsAlg.CreateEncryptor(tdsAlg.Key, tdsAlg.IV);
- // Create the streams used for encryption.
- using (MemoryStream msEncrypt = new MemoryStream())
- {
- using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
- {
- // var data = Encoding.ASCII.GetBytes(plainText);
- //csEncrypt.Write(data, 0,data.Length);
- using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
- {
- //Write all data to the stream.
- swEncrypt.Write(plainText);
- }
- encrypted = msEncrypt.ToArray();
- }
- }
- }
- // Return the encrypted bytes from the memory stream.
- return encrypted;
- }
- static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV)
- {
- // Check arguments.
- if (cipherText == null || cipherText.Length <= 0)
- throw new ArgumentNullException("cipherText");
- if (Key == null || Key.Length <= 0)
- throw new ArgumentNullException("Key");
- if (IV == null || IV.Length <= 0)
- throw new ArgumentNullException("Key");
- // Declare the string used to hold
- // the decrypted text.
- string plaintext = null;
- // Create an TripleDESCryptoServiceProvider object
- // with the specified key and IV.
- using (var tdsAlg = new DESCryptoServiceProvider())
- {
- tdsAlg.Key = Key;
- tdsAlg.IV = IV;
- // Create a decrytor to perform the stream transform.
- ICryptoTransform decryptor = tdsAlg.CreateDecryptor(tdsAlg.Key, tdsAlg.IV);
- // Create the streams used for decryption.
- using (MemoryStream msDecrypt = new MemoryStream(cipherText))
- {
- using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
- {
- using (StreamReader srDecrypt = new StreamReader(csDecrypt))
- {
- // Read the decrypted bytes from the decrypting stream
- // and place them in a string.
- plaintext = srDecrypt.ReadToEnd();
- }
- }
- }
- }
- return plaintext;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement