クライアント-サーバデータの暗号化プロトコルの設計
-
20-09-2019 - |
質問
書いクライアント-サーバ利用するアプリケーションコンピュータの研究の方法としてサービスな走行としてのサービスです。私はコンソール-アプリケーションを呼び出してネイティブ機能"ShowWindow"/SW_HIDEのコンソールのHWNDオブジェクト--これも思います。サーバ/クライアントは、私はメッセージを送信したメンバー"Hello world!"クライアントからサーバにくいただけると嬉しいです。(私が使っているUDPのソケットプロトコルがどのように対応すればよいかが欲しいと思connectionlessます。)
私の質問にあるa'コンコミュニケーションの場とクライアント-サーバーです。
の目標の背後にサーバーに、以下を含む:
- してアクセスを提供するには,プログラムにより、一定の能力が当社のIT部門をブロックセキュリティ("net.exe")
- アクセスできるように私のプログラムモニターで学ぶ学生は聴くことができます。
かいものは簡単な質問に送られるため:
- コマンドの"REQUSER"を返しユーザー名とfullname(しかしながら、"当期純ユーザー"として)
- コマンドの"REQPROCS"というリストを返しのプロセスは、現在走って現在のユーザのユーザ名です。
みなさんにとっては、ることができるようにな関係ではないかと思います。その中で私がlearyのですが、データの安全性です。いくつかの"ハッカー"がここで学者からのパケットsniffことができる再送パケットを予定しているサーバーからな悪意のあるものは情報を取得するた敵はwhatnot.
私のだと思っていたものを提供する暗号化スキームに送信されるすべてのデータおよびデコードします。
友人と話していましたとしても高い評価を得ていを使用する必要がありますビットパッカーに進みました移植彼BitPackerクラスC++から、javascriptの名前空間にC#んかやってきたかStackoverflowた。
namespace Atlantis.Net.Sockets
{
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
public class UdpServer : System.Net.Sockets.UdpClient
{
#region Constructor(s)
public UdpServer(Int32 port)
: base(port)
{
}
public UdpServer(IPEndPoint endPoint)
: base(endPoint)
{
}
#endregion
#region Properties
private Int32 m_Backlog = 32;
/// <summary>
/// Sets how many active connections the socket can support
/// </summary>
public Int32 Backlog
{
private get
{
return m_Backlog;
}
set
{
m_Backlog = value;
}
}
private Boolean m_IsInitialized = false;
/// <summary>
/// Gets a value indicating whether the server has been initialized
/// </summary>
public Boolean IsInitialized
{
get
{
return m_IsInitialized;
}
private set
{
m_IsInitialized = value;
}
}
private Int32 m_Port = 1337;
/// <summary>
/// Sets the port number for listening for incoming connections
/// </summary>
public Int32 Port
{
private get
{
return m_Port;
}
set
{
m_Port = value;
}
}
private Encoding m_Encoding = Encoding.ASCII;
/// <summary>
/// Gets or sets the text encoding for data being transferred to/from the server
/// </summary>
public Encoding Encoding
{
get
{
return m_Encoding;
}
set
{
m_Encoding = value;
}
}
#endregion
#region Events
public event EventHandler<UdpReceiveEventArgs> DataReceive;
#endregion
#region Methods
protected virtual void OnDataRecieve(String data, object state)
{
if (DataReceive != null)
{
DataReceive(this, new UdpReceiveEventArgs(data, ((UdpState)state)));
}
}
private void DataReceiveCallback(IAsyncResult ar)
{
UdpClient u = (UdpClient)((UdpState)ar.AsyncState).host;
IPEndPoint e = (IPEndPoint)((UdpState)ar.AsyncState).endPoint;
Byte[] data = u.EndReceive(ar, ref e);
OnDataRecieve(Encoding.GetString(data), ((UdpState)ar.AsyncState));
UdpState state = new UdpState();
state.endPoint = new IPEndPoint(IPAddress.Any, Port);
state.host = u;
u.BeginReceive(new AsyncCallback(DataReceiveCallback), ((UdpState)ar.AsyncState));
}
/// <summary>
/// .
/// </summary>
public void Initialize()
{
if (IsInitialized)
{
return;
}
//Debug.WriteLine(String.Format("Local address and port : {0}", Client.RemoteEndPoint.ToString()));
UdpState state = new UdpState();
state.endPoint = new IPEndPoint(IPAddress.Any, Port);
state.host = this;
BeginReceive(new AsyncCallback(DataReceiveCallback), state);
IsInitialized = true;
}
#endregion
}
}
P.S.私の質問です。にのっても私の質問をしたのは明らかではない。:/
解決
SslStreamクラスからシステム。います。安全保障がいに必要なもの
(SslStream)を提供するのに使うストリームのための クライアント-サーバー通信を使用する の技術であるSSL(Secure Socket Layer)セキュリティ プロトコルを認証サーバー オプションとしてのクライアント
...
SSLプロトコルの供給を行う 機密性と完全性のチェック メッセージを送信を使用 SslStream.SSL接続など できるようになっておりSslStreamき 使用時の通信感度 情報とクライアントと サーバーです。使用SslStreamす 防どなたでも、どこからでも読み 改ざんの情報で 輸送中のネットワーク
より詳しい情報や事例はこちら SslStreamクラス