c#网络加密传输
网上已经有很多测试,我就不多说了。先说说我的测试。
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#网络加密传输的更多相关文章
- 用RSA加密实现Web登录密码加密传输
通常我们做一个Web应用程序的时候都需要登录,登录就要输入用户名和登录密码,并且,用户名和登录密码都是明文传输的,这样就有可能在中途被别人拦截,尤其是在网吧等场合. 这里顺带一个小插曲,我以前有家公司 ...
- webservice 采用SSL实现加密传输
本文转自:http://book.51cto.com/art/200906/129770.htm http://yeweiyun868.blog.163.com/blog/static/5637844 ...
- socket编程之obj压缩加密传输
因为需要序列化这个对象以便在网络上传输.所以POJO必需要实现java.io.Serializable接口.使用了 ObjectInputStream和ObjectOutputStream来接收和发送 ...
- [转]webservice 采用SSL实现加密传输
本文转自:http://book.51cto.com/art/200906/129770.htm http://yeweiyun868.blog.163.com/blog/static/5637844 ...
- SSH加密传输
数据传输安全的要满足的要求: (1)消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密) (2)消息的接收方可以确定消息是由谁发送的(消息的接收方可以确定消息 ...
- 如何为网站启用HTTPS加密传输协议
前言 当今时代对上网的安全性要求比以前更高,chrome和firefox也都大力支持网站使用HTTPS,苹果也从2017年开始在iOS 10系统中强制app使用HTTPS来传输数据,微信小程序也是要求 ...
- HTTPS加密传输过程
HTTPS加密传输过程 HTTPS全称Hyper Text Transfer Protocol over SecureSocket Layer,是以安全为目标的HTTP通道,在HTTP的基础上通过传输 ...
- linux下使用vsftp搭建FTP服务器:匿名登录,账号登录,SSL加密传输
目录 一.关于FTP和VSFTP 二.ftp.sftp.vsftp.vsftpd的区别 三.项目一:搭建一台所有人都可以访问的通用FTP服务器 3.1 项目要求 3.2 项目思路分析 3.3 使用vs ...
- C# 网络加密与解密
数据在网络传输过程中的保密性是网络安全中重点要考虑的问题之一.由于通过网络传递数据是在不安全的信道上进行传输的,因此通信双方要想确保任何可能正在侦听的人无法理解通信的内容,而且希望确保接收方接收的信息 ...
随机推荐
- 剑指Offer-编程详解-二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- Android BitmapDrawable
功能:显示缩略图,大小为40*40 //通过openRawResource获取一个inputStream对象 InputStream inputStream = getResources().open ...
- MyBatis基本配置和实践(四)
一.Mybatis整合spring 1.整合思路 SqlSessionFactory对象应该放到spring容器中作为单例存在. 传统dao的开发方式中,应该从spring容器中获得sqlsessio ...
- Oracle spool 小结
关于SPOOL(SPOOL是SQLPLUS的命令,不是SQL语法里面的东西.) 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如: select taskindex|| ...
- 实战:Nginx如何让用户通过用户名和密码认证访问WEB站点
有时我们会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开,我们希望的是某些特定的客户端可以访问.那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那些 ...
- 适用于 Windows 的虚拟机扩展和功能
Azure 虚拟机扩展是小型应用程序,可在Azure 虚拟机上提供部署后配置和自动化任务. 例如,如果虚拟机要求安装软件.防病毒保护或进行 Docker 配置,便可以使用 VM 扩展来完成这些任务. ...
- Python 爬虫 获取标签下面的子标签
thr_msgs = soup.find_all('div',class_=re.compile('msg')) for i in thr_msgs: print(i) first = i.selec ...
- Linux入门-8 Linux系统启动详解
系统启动流程 BIOS MBR GRUB KERNEL INIT 单用户修改root密码 GRUB加密 系统启动流程 BIOS MBR: Boot Code 执行引导程序 - GRUB 加载内核 执行 ...
- 深圳云栖大会人工智能专场:探索视频+AI,玩转智能视频应用
摘要: 在人工智能时代,AI技术是如何在各行业和领域真正的发挥应用和商业价值,带来产业变革才是关键.在3月28日深圳云栖大会的人工智能专场中,阿里云视频服务技术专家邹娟将带领大家探索熟悉的视频场景中, ...
- Jmeter测试普通java类说明
概述 Apache JMeter是Apache组织开发的基于Java的压力测试工具.本文档主要描述用Jmeter工具对基于Dubbo.Zookeeper框架的Cassandra接口.区块链接口进行压力 ...