首页 > 编程 > .NET > 正文

.NET中加密和解密的实现方法2

2024-07-10 13:04:20
字体:
来源:转载
供稿:网友
使用私有密钥解密该文档,这是唯一可以解密的密钥,并且没有通过网络传递。

  不对称算法比对称算法计算的花费多、速度慢。因此我们不希望在线对话中使用不对称算法加密所有信息。相反,我们使用对称算法。下面的例子中我们使用不对称加密来加密对称密钥。接着就使用对称算法加密了。实际上安全接口层(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;



商业源码热门下载www.html.org.cn

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表