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

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只体现了设计过程。

最新文章

  1. Membership三步曲之进阶篇 - 深入剖析Provider Model
  2. 【小白的CFD之旅】07 CFD常识
  3. HTTP请求报文格式
  4. vim的寄存器和剪贴簿操作?
  5. String对象的方法
  6. Jersey(1.19.1) - WebApplicationException and Mapping Exceptions to Responses
  7. Android开发之显示通知
  8. U3D 抛物线的方法
  9. Lowest Common Multiple Plus
  10. (017)将一棵二叉查找树重构成链表(keep it up)
  11. 聊聊 Material Design 里,阴影的那些事儿!
  12. Oracle硬解析,软解析,软软解析介绍
  13. 移动端rem适配
  14. SQL Server CTE 递归查询全解
  15. POJ 2127 Greatest Common Increasing Subsequence
  16. ubuntu 下配置 开发环境
  17. 使用netperf测试网络性能
  18. nginx 跨域解决
  19. Loading Xps from MemoryStream
  20. ZOJ3545 Rescue the Rabbit

热门文章

  1. JavaScript-原型&原型链&原型继承&组合函数
  2. 利用Metaweblog技术的API接口同步到多个博客网站(详细)
  3. Java设计模式—桥梁模式
  4. python装饰器 高阶函数 函数闭包
  5. ISO14971-2007阅读
  6. Python 生成器总结
  7. 词法分析器Lexer
  8. Exchange 2016 CU6 安装后,发生错误 出现意外错误,无法处理您的请求
  9. 用windows公文包实现不同盘符两个文件文件夹文件同步
  10. 新增检查sql脚本是否符合ANSI编码格式