.NET中加密和解密的實現方法2

來源:互聯網
上載者:User
加密|解密 使用私人密鑰解密該文檔,這是唯一可以解密的密鑰,並且沒有通過網路傳遞。

  不對稱演算法比對稱演算法計算的花費多、速度慢。因此我們不希望線上對話中使用不對稱演算法加密所有資訊。相反,我們使用對稱演算法。下面的例子中我們使用不對稱式加密來加密對稱金鑰。接著就使用對稱演算法加密了。實際上安全介面層(SSL)建立伺服器和瀏覽器之間的安全對話使用的就是這種工作方式。
樣本是一個TCP程式,分為伺服器端和用戶端。伺服器端的工作流程是:

   從用戶端接收公用密鑰。

   使用公用祕密金鑰加密未來使用的對稱金鑰。

   將加密了的對稱金鑰發送給用戶端。

   給用戶端發送使用該對稱金鑰密碼編譯的資訊。

  代碼如下:



namespace com.billdawson.crypto
{
public class CryptoServer
{
private const int RSA_KEY_SIZE_BITS = 1024;
private const int RSA_KEY_SIZE_BYTES = 252;
private const int TDES_KEY_SIZE_BITS = 192;

public static void Main(string[] args)
{
int port;
string msg;
TcpListener listener;
TcpClient client;
SymmetricAlgorithm symm;
RSACryptoServiceProvider rsa;
//擷取連接埠
try
{
port = Int32.Parse(args[0]);
msg = args[1];
}
catch
{
Console.WriteLine(USAGE);
return;
}
//建立監聽
try
{
listener = new TcpListener(port);
listener.Start();
Console.WriteLine("Listening on port {0}...",port);

client = listener.AcceptTcpClient();
Console.WriteLine("connection....");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
return;
}

try
{
rsa = new RSACryptoServiceProvider();
rsa.KeySize = RSA_KEY_SIZE_BITS;

// 擷取用戶端公用密鑰
rsa.ImportParameters(getClientPublicKey(client));

symm = new TripleDESCryptoServiceProvider();
symm.KeySize = TDES_KEY_SIZE_BITS;





相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。