0

我正在用 C# 实现一个网站,并且我需要执行一个客户端服务器通信。客户端将发送(POST)加密数据,服务器将读取数据并使用加密响应进行响应。我们使用的加密是 AES-128 ECB 密码。

设备正在发送以下格式的加密数据(这是一段数据):

3721 b1cc 1759 3067 f993 7c3d bda9 4f04 547c ea1b 3974 2bd1 f213 74a5 2036 7927 e679 bab5 7bbc 3fbf 6a30 85e9 38a8 b877 594a d3289 74bb 38a 5d929 cc

我无法在 page_load 方法的 .aspx 页面中接收它。谁能告诉我这是什么数据?

另外,如何将纯文本转换为这种数据?

我已经有了解密和加密功能。

当我将上述数据从文件读取到字节数组中后,在解密函数中使用上述数据时,我可以获得计划文本。我必须使用 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”或其他一些奇怪的字符。

4

0 回答 0