C# TcpIp如何进行数据加密

   2024-10-06 4610
核心提示:在C#中进行TcpIp数据加密可以通过使用加密算法来对数据进行加密和解密。以下是一个简单的示例代码:using System;using System.N

在C#中进行TcpIp数据加密可以通过使用加密算法来对数据进行加密和解密。以下是一个简单的示例代码:

using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Security.Cryptography;public class TcpIpEncryption{    private static byte[] key = Encoding.UTF8.GetBytes("0123456789abcdef");    private static byte[] iv = Encoding.UTF8.GetBytes("abcdef9876543210");    public static void Main()    {        TcpListener server = null;        try        {            Int32 port = 13000;            IPAddress localAddr = IPAddress.Parse("127.0.0.1");            server = new TcpListener(localAddr, port);            server.Start();            Byte[] bytes = new Byte[256];            String data = null;            while (true)            {                Console.WriteLine("Waiting for a connection...");                TcpClient client = server.AcceptTcpClient();                Console.WriteLine("Connected!");                data = null;                NetworkStream stream = client.GetStream();                int i;                while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)                {                    data = Encoding.UTF8.GetString(bytes, 0, i);                    Console.WriteLine("Received: {0}", data);                    // Decrypt received data                    string decryptedData = DecryptStringFromBytes_Aes(Convert.FromBase64String(data), key, iv);                    Console.WriteLine("Decrypted: {0}", decryptedData);                    // Encrypt response data                    string response = "Response from server";                    byte[] encryptedResponse = EncryptStringToBytes_Aes(response, key, iv);                    // Send the encrypted response back to client                    stream.Write(encryptedResponse, 0, encryptedResponse.Length);                    Console.WriteLine("Sent: {0}", response);                }                client.Close();            }        }        catch (SocketException e)        {            Console.WriteLine("SocketException: {0}", e);        }        finally        {            server.Stop();        }        Console.WriteLine("\nHit enter to continue...");        Console.Read();    }    static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV)    {        byte[] encrypted;        using (Aes aesAlg = Aes.Create())        {            aesAlg.Key = Key;            aesAlg.IV = IV;            ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);            using (MemoryStream msEncrypt = new MemoryStream())            {                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))                {                    using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))                    {                        swEncrypt.Write(plainText);                    }                    encrypted = msEncrypt.ToArray();                }            }        }        return encrypted;    }    static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV)    {        string plaintext = null;        using (Aes aesAlg = Aes.Create())        {            aesAlg.Key = Key;            aesAlg.IV = IV;            ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);            using (MemoryStream msDecrypt = new MemoryStream(cipherText))            {                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))                {                    using (StreamReader srDecrypt = new StreamReader(csDecrypt))                    {                        plaintext = srDecrypt.ReadToEnd();                    }                }            }        }        return plaintext;    }}

在示例代码中,使用AES对称加密算法对传输的数据进行加密和解密。在EncryptStringToBytes_Aes方法中,将明文进行AES加密并返回加密后的字节数组。在DecryptStringFromBytes_Aes方法中,将密文进行AES解密并返回解密后的字符串。在接收数据后,先进行解密操作,然后对响应数据进行加密后发送给客户端。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号