Нужны исходники программы шифрования и дешифрования файлов на базе алгоритма ГОСТ 28147-89 - C#

Узнай цену своей работы

Формулировка задачи:

у кого есть исходники программы шифрования и дешифрования файлов на базе алгоритма ГОСТ 28147-89 в режиме простой замены и выработки имитовставки?

Решение задачи: «Нужны исходники программы шифрования и дешифрования файлов на базе алгоритма ГОСТ 28147-89»

textual
Листинг программы
using System;
using System.Security.Cryptography;
using System.IO;
using GOST;
 
class TestGostSymmetric
{
    [STAThread]
    static void Main(string[] args)
    {
        //byte[] plain_text = new byte[]{0,1,2,3,4,5,6,7,8,9,10};
        byte[] plain_text = new Byte[512];
        System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
        byte[] strbytes = enc.GetBytes("Novodachnaja.  50 years anniversary 7890");
        Array.Copy(strbytes, 0, plain_text, 0, strbytes.Length);
 
        byte[] key = new Byte[32]{0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0};
        byte[] iv = new Byte[8] {0,1,2,3,4,5,6,7};
 
        Console.WriteLine("Plain text to encrypt:");
        PrintByteArray(plain_text);
 
        GOSTsymmManaged gost = new GOSTsymmManaged();
        gost.LoadTestSBoxes(2);
        gost.Key = key;
        gost.IV = iv;
        gost.Mode = CipherMode.CBC;
 
 
        GOSTsymmTransform ct_e = (GOSTsymmTransform)gost.CreateEncryptor();
        ct_e.UseExpandedSBoxes = false;
        GOSTsymmTransform ct_d = (GOSTsymmTransform)gost.CreateDecryptor();
 
        MemoryStream ms1 = new MemoryStream();
        MemoryStream ms2 = new MemoryStream();
 
        CryptoStream cs1 = new CryptoStream(ms1, ct_e, CryptoStreamMode.Write);
 
        cs1.Write(plain_text, 0, plain_text.Length);
        cs1.Close();
 
            byte[] cipher_text = ms1.ToArray();
 
        Console.WriteLine("Cipher text:");
        PrintByteArray(cipher_text);
 
        CryptoStream cs2 = new CryptoStream(ms2, ct_d, CryptoStreamMode.Write);
 
        cs2.Write(cipher_text, 0, cipher_text.Length);
        cs2.Close();
 
        byte[] decrypted_text = ms2.ToArray();
 
        Console.WriteLine("DecryptedText:");
        PrintByteArray(decrypted_text);
 
        Console.WriteLine("Done.");
    }
 
 
 
    static void PrintByteArray(Byte[] arr)
    {
        if (arr==null) 
        {
            Console.WriteLine("null");
            return;
        }
        int i;
        for (i=0; i<arr.Length; i++) 
        {
            Console.Write("{0:X} ", arr[i]);
            if ( (i+9)%8 == 0 ) Console.WriteLine();
        }
        if (i%8 != 0) Console.WriteLine();
    }
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы