网上已经有很多测试,我就不多说了。先说说我的测试。

1.net framework 都应该合适。

2.RSACryptoServiceProvider类在.net core 下无法调用xml导出方法(windows)。

3.居网上说RSACryptoServiceProvider在Linux上不支持,我还没有测试。

4.按照网上说的使用 RSA.Create();返回的接口只能导出参数结构RSAParameters;xml,blob都不支持。因此我将结构转成byte[]存储文件。网上都没有说明怎么操作的。都是一样的。

再来说我们一般的操作。我也是按照网上来的。当加密解密流程测试通后,就是过程了。这个细节不一样,但是原理一样。

客户端AES加密数据,AES秘钥由客户端自己确定A,然后用RSA公钥加密 AES 的秘钥为B.每次传输的数据  有A+B构成。RSA秘钥由服务端确定,私钥一直保持在服务端,公钥需要给客户端。

这里就不说web了,现成的ssl.

那么安装c/s模型怎么建立呢?我觉得大概是这样。

大概过程:

1.客户端登录(需要安装协议传递数据,主要是一个授权字符串,我demo里面是有2种,一种是写死的字符串,一致是文件,将其采用sha1进行加密)

2.服务端验证客户端传递(主要是根据设置,是否允许写死的字符串验证,是否有文件验证),验证成功就分配一个sessionid给客户端,同时把RSA的公钥发给客户端)

3.客户端保存RSA公钥和sessionid.

4.客户端发送数据给服务端时。按照前面描述,同时要加上上面分配的sessionid.

5.服务端接收数据后,先用RSA解密,解析出AES的秘钥。需要提取sessionid.先检查sessionid是否还有效,当前设计是当天有效。如果有效就继续解析数据主题,无效就返回客户端错误信息。解析主题数据后处理业务,然后再以AES加密,传输。

根据什么的过程,客户端每次登录都需要验证一次,这样服务端可以控制RSA的变换和客户端的授权文件更新。

demo已经上传git,但是不能跑流程,网络部分是伪代码(注释)。没有写网络部分,想测试需要自己添加。demo只体现了设计过程。

c#网络加密传输的更多相关文章

  1. 用RSA加密实现Web登录密码加密传输

    通常我们做一个Web应用程序的时候都需要登录,登录就要输入用户名和登录密码,并且,用户名和登录密码都是明文传输的,这样就有可能在中途被别人拦截,尤其是在网吧等场合. 这里顺带一个小插曲,我以前有家公司 ...

  2. webservice 采用SSL实现加密传输

    本文转自:http://book.51cto.com/art/200906/129770.htm http://yeweiyun868.blog.163.com/blog/static/5637844 ...

  3. socket编程之obj压缩加密传输

    因为需要序列化这个对象以便在网络上传输.所以POJO必需要实现java.io.Serializable接口.使用了 ObjectInputStream和ObjectOutputStream来接收和发送 ...

  4. [转]webservice 采用SSL实现加密传输

    本文转自:http://book.51cto.com/art/200906/129770.htm http://yeweiyun868.blog.163.com/blog/static/5637844 ...

  5. SSH加密传输

    数据传输安全的要满足的要求: (1)消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密) (2)消息的接收方可以确定消息是由谁发送的(消息的接收方可以确定消息 ...

  6. 如何为网站启用HTTPS加密传输协议

    前言 当今时代对上网的安全性要求比以前更高,chrome和firefox也都大力支持网站使用HTTPS,苹果也从2017年开始在iOS 10系统中强制app使用HTTPS来传输数据,微信小程序也是要求 ...

  7. HTTPS加密传输过程

    HTTPS加密传输过程 HTTPS全称Hyper Text Transfer Protocol over SecureSocket Layer,是以安全为目标的HTTP通道,在HTTP的基础上通过传输 ...

  8. linux下使用vsftp搭建FTP服务器:匿名登录,账号登录,SSL加密传输

    目录 一.关于FTP和VSFTP 二.ftp.sftp.vsftp.vsftpd的区别 三.项目一:搭建一台所有人都可以访问的通用FTP服务器 3.1 项目要求 3.2 项目思路分析 3.3 使用vs ...

  9. C# 网络加密与解密

    数据在网络传输过程中的保密性是网络安全中重点要考虑的问题之一.由于通过网络传递数据是在不安全的信道上进行传输的,因此通信双方要想确保任何可能正在侦听的人无法理解通信的内容,而且希望确保接收方接收的信息 ...

随机推荐

  1. Android中使用异步线程更新UI视图的几种方法

    在Android中子线程是不能更新ui的. 所以我们要通过其他方式来动态改变ui视图, 1.runOnUiThreadactivity提供的一个轻量级更新ui的方法,在Fragment需要使用的时候要 ...

  2. java将int类型的变量转化成String类型的

    第一种方法:String的valueOf方法,int i=5;String s=String.valueOf(i);第二种方法,直接在int后面加一个空的字符串,因为在java里面,默认任务int类型 ...

  3. Python 装饰器的总结

    先来了解几个定义: 1,函数 在python中,函数通过def关键字.函数名和可选的参数列表定义.通过return关键字返回值.我们举例来说明如何定义和调用一个简单的函数: #coding:UTF8 ...

  4. Java笔记-IO流的运用

    --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3877386.html "谢谢-- 1.InputStream和System ...

  5. SparkRDD函数详解

    1.RDD操作详解 启动spark-shell spark-shell --master spark://hdp-node-01:7077 1.1 基本转换 1) map map是对RDD中的每个元素 ...

  6. aspnetcore 认证相关类简要说明二

    能过<aspnetcore 认证相关类简要说明一>我们已经了解如何将AuthenticationOptions注入到我们依赖注入系统.接下来,我们将了解一下IAuthenticationS ...

  7. 如何对iPhone进行屏幕录像

    如何对iPhone进行屏幕录像 录制时候的效果: 1. 打开QuickTime Player 2. 在文件中新建影片录制 3. 然后酱紫录制

  8. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  9. Mantle 初步使用

    我写了一篇 Mantle 初步使用 的文章,欢迎访问!

  10. 小白学CMD下运行MySQL

    将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) ...