Клиент-серверная связь и шифрование / дешифрование - PullRequest
0 голосов
/ 27 февраля 2019

Я внедряю веб-сайт на C #, и у меня есть связь клиент-сервер, которую я должен выполнить.Клиент отправляет (POST) зашифрованные данные, а сервер считывает данные и ответ с зашифрованным ответом.Мы используем шифрование AES-128 ECB.

Устройство отправляет зашифрованные данные в следующем формате (это фрагмент данных):

3721 b1cc 1759 3067 f993 7c3d bda9 4f04 547c ea1b 3974 2bd1 f213 74a5 2036 7927 e679bab5 7bbc 3fbf 6a30 85e9 38a8 b877 594a d329 74bb 5d24 2088 738a 9978 cecc

Я не могу получить его на странице .aspx в методе page_load.Кто-нибудь может сказать мне, что это за данные?

Кроме того, как мне преобразовать обычный текст в данные такого типа?

Я ужеиметь функцию дешифрования и шифрования.

Когда я использую вышеуказанные данные в своей функции расшифровки после считывания их из файла в байтовый массив, я могу получить текст плана.Я должен использовать функцию Encoding.UTF8.ToString (), чтобы получить простой текст из байтового массива, выведенного функцией дешифрования, чтобы получить простой текст.

Но когда я преобразовываю данные ответа в байтовый массив и отправляюэто побайтово к Response.write (), я все еще получаю исходную зашифрованную строку, а не необработанные двоичные данные, которые я показал выше.

Ниже приведены функции для шифрования и дешифрования:

    public string decryptMessage(byte[] data)
    {         
        byte[] decryptedBytes = Decrypt(data, key);
        return Encoding.UTF8.GetString(decryptedBytes);
    }

    public byte[] encryptMessage(string plainText)
    {
        byte[] encryptedBytes = Encrypt(Encoding.UTF8.GetBytes(plainText), key);             
        return encryptedBytes;
    }

    public static byte[] Encrypt(byte[] data, byte[] key)
    {
        using (AesCryptoServiceProvider csp = new AesCryptoServiceProvider())
        {
            csp.KeySize = 128;
            csp.BlockSize = 128;
            csp.Key = key;
            csp.Padding = PaddingMode.None;
            csp.Mode = CipherMode.ECB;
            ICryptoTransform encrypter = csp.CreateEncryptor();
            return encrypter.TransformFinalBlock(data, 0, data.Length);
        }
    }

    private static byte[] Decrypt(byte[] data, byte[] key)
    {
        using (AesCryptoServiceProvider csp = new AesCryptoServiceProvider())
        {
            csp.KeySize = 128;
            csp.BlockSize = 128;
            csp.Key = key;
            csp.Padding = PaddingMode.None;
            csp.Mode = CipherMode.ECB;
            ICryptoTransform decrypter = csp.CreateDecryptor();
            return decrypter.TransformFinalBlock(data, 0, data.Length);
        }
    }

Например, текст плана будет «Привет, как дела?» и зашифрованный текстбудет "Cxzx3miStNMIjP9zG1xlCme" .Мне нужно преобразовать этот зашифрованный текст в необработанные двоичные данные, как в примере, показанном выше, и отправить его обратно с помощью Response.Write ().

Я пытался использовать Response.BinaryWrite (), но он не отправляетобратно необработанные данные, которые мне нужны, когда я призываю проверить страницу в браузере.Это просто дает мне «Cxzx3miStNMIjP9zG1xlCme» или некоторые другие странные символы.

...