介绍

随着3G、4G、5G的发展,使得文件传输变得轻而易举,我们可以随时随地地进行文件传输,与好友之间,与云服务器之间。文件的传输,意味着一个数据信息需要在网络上暴露,当受到恶意攻击时,导致数据泄露,造成一些不可磨灭的灾难。因此,文件的安全传输是一个值得探讨的问题。
1、加密技术,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已知的加密信息,但因不知解密的方法,仍然无法了解信息内容。进而使得数据可以在互联网上安全传输。
2、对称加密技术,采用单密钥密码系统的加密方法,同一个密钥进行加密解密,当加密者生成密钥对数据进行加密之后,如何把密钥安全的送到解密者手中,成为了一个至关重用的问题。
3、非对称加密技术,非对称加密需要两个密钥,公钥和私钥。一般使用公钥加密,私钥解密。非对称加密效率较低,但非对称加密技术的出现为对称加密密钥的安全传输提供了保障。
4、TLS技术全称为安全传输层协议,TLS结合了对称加密技术和非对称加密技术,用于在两个通信程序之间提供数据包的保密性和数据的完整性。
本文将模拟TLS协议,建立一个安全文件传输系统。

设计

整个上传协议运行在 TCP 协议之上,采用非阻塞 I/O 模型(epoll 模型,Java 中称 NIO 模型),以保证单点服务器对大量并发的支撑,客户端直接也采用非阻塞 I/O 模 型。由于非对称加密解密效率较低,本方案未全采用非对称加密算法,而是采用将非对称加 密和对称加密结合的方式,第三方生成非对称加密密钥对将公钥传递到 A 端,A 端先通过 非对称加密将对称加密的密钥进行加密,B 通过非对称解密将对称密钥进行解密。双方都得 到对称加密密钥后,双方则可通过该密钥进行安全通信。

系统模块

客户端主要模块:登录模块,加密解密模块,传输模块,协商模块
服务端主要模块:网络支持模块,密钥分配模块,缓存模块,用户登录模块

1、登录模块
客户端和服务器端都含登录模块,客户端随机随机生成一个 6 位 ID,提交到服务器端, 并通过服务器的用户缓存模块对其进行缓存。
2、用户缓存模块
用户缓存模块主要记录各个用户的 ID 和起对应的秘钥。
3、秘钥分配模块
服务器端负责对客户端进行秘钥分配,通过 RSA 秘钥分配机制对其分配公钥或者私钥, 公钥分配给发送方,私钥分配给接收方。
4、秘钥协商模块
客户端登录到服务器之后,则可项目通信,发送方选择一种对称加密算法并并告知接收 方,接收方收到发送发传递过来的加密类型,自动适配对应的解密算法。并获取发送方 通过公钥加密的对称加密的秘钥,对其解密,得到解密后的对称加密秘钥。
5、加密解密模块
加密解密模块主要负责对数据进行加密和对对称加密秘钥进行加密,如秘钥协商模块协商好对应的加密算法之后,发送方通过对称加密秘钥对数据进行加密,接收方通过对称 加密秘钥对数据进行解密。
6、发送文件模块
发送问价模块主要负责读取文件,和存储文件,并发送加密后的数据文件。

系统工作流程

服务器发放非对称加密密钥给客户端,客户端之间通过非对称加密算法保证整个传输过程是
安全的,本系统中采用 RSA 的非对称加密算法,其具体流程为:
1、服务端生成一对密钥(公钥和私钥),私钥不公开,分别发送给 A 和 B,A 自己保留
公钥,B 保留私钥。
2、A 生成对称加密密钥 p,和所选的加密类型,并用刚刚收到的公钥对其进行加密。
3、B 收到 A 的加密数据后,用服务器传递过来的非对称加密的私钥进行解密,得到密钥
和加密类型。
4、B 端根据加密类型自动适配对应的加密算法
5、A 发送文件,用 p 进行加密
6、B 端接收文件,用 p 进行解密

系统设计(代码实现)

代码结构

1、客户端代码总体结构

2、服务端代码总体结构

具体实现

具体代码实现在我的Github下:点击跳转

运行实例

1、启动服务器

2、启动两个客户端
3、选择需要发送的文件

4、输入对方ID、并选择加密算法

5、点击发送文件
6、对方接收,并验证文件是否完整

总结

本文描述了一种安全文件传输系统的设计,并且给出了其详流程和具体的代码的实现,最后给出了具体的程序运行实例。

一种安全高效的文件传输协议设计相关推荐

  1. 高效的网络传输协议设计protobuf

    文章目录 前言 1. 协议概述 2. 判断消息的完整性 3. 协议设计 3.1 协议设计范例 3.1.1 范例1-IM即时通讯 3.1.2 范例2-云平台节点服务器 3.1.3 范例3-nginx 3 ...

  2. FTP,SFTP,FTPS三个文件传输协议的区别

    FTP,SFTP,FTPS三个文件传输协议的区别 文章目录: 简要说明 FTP(File Transfer Protocol):文件传送协议是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成 ...

  3. 常见文件传输协议(ftp、tftp、scp)及其特点

    在工作中,我们经常要涉及到文件传输,windows 与windows, linux 与linux,windows 与linux 之间的文件传输,可供选择的途径有好多种. 可是常见的无非那么几种. 常见 ...

  4. Linux网络文件共享服务(一)存储类型和文件传输协议FTP

    成功不易,加倍努力! 网络文件共享服务 本章总目录 1 存储类型 1.1 DAS存储 1.2 NAS存储 1.3 SAN存储 1.4 三种存储比较 2 文件传输协议 FTP 2.1 FTP工作原理介绍 ...

  5. 文件传输协议的五种安全文件传输替代方案

    对安全文件传输协议的需求,过去,文件传输协议(FTP)是发送文件的常用协议.这是一个更简单的时期,安全性比今天要少得多. 但是随着黑客变得越来越复杂,他们发现FTP缺乏安全性.他们知道FTP可以通过有 ...

  6. FTP文件传输协议原理详解(两种工作模式)

    初始FTP     文件传输协议(File Transfer Protocol,缩写:FTP)是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议.文件传送(file transfer ...

  7. xmodem java_Xmodem XMODEM协议是一种串口通信中广泛用到的异步文件传输协议 联合开发网 - pudn.com...

    Xmodem 所属分类:串口编程 开发工具:Java 文件大小:3KB 下载次数:6 上传日期:2017-11-02 21:50:52 上 传 者:雄霸天下19 说明:  XMODEM协议是一种串口通 ...

  8. 浅谈FTP(文件传输协议)

    FTP(文件传输协议) FTP(File Transfer Protocol) ,是一种处于应用层的用于文件传输的协议.是基于TCP协议的应用层协议,用于在网络上传输文件. 该协议使用的端口号为20和 ...

  9. 文件传输协议FTP和开源FTP软件FileZilla

    一.文件传输协议FTP. 1.简介. FTP(File Transfer Protocol),是文件传输协议的简称. 1)TCP/IP协议簇,应用层协议,用于Internet上的控制文件的双向传输,采 ...

最新文章

  1. LeetCode简单题之两数之和 IV - 输入 BST
  2. Java指派问题_指派问题的匈牙利算法
  3. LTE小区选择和重选
  4. rawquery 没扎到返回什么_Flutter之踩坑的日子(RawQuery的使用)
  5. MTK 驱动(47)---使用PWM配置背光如何配置,及频率计算
  6. 95-260-050-源码-检查点-SavePoint
  7. antd tree搜索并定位_KD-Tree原理详解
  8. [CLR via C#]1.6 Framework类库~1.9与非托管代码的互操作性
  9. 在fstab中使用UUID挂载
  10. 深入浅出MySQL之优化
  11. 定时任务管理系统 gocron
  12. 数据防泄漏具备哪些特性?
  13. 高并发高负载网站系统架构
  14. ffmpeg生成hls点播
  15. JS正则表达式实现简单的表单验证(账号,密码,手机号)
  16. 【教程】ESP32连接华为云IoT平台
  17. python设置时间过期改变状态_将Python程序设置为在特定天数后过期
  18. html css js题目
  19. 将netcore发布到docker的其他端口上
  20. 宽带不能上传发文件_为啥4M的宽带为啥下载速度只有300多KB?

热门文章

  1. Python根据一个日期获得一年前的日期
  2. mate鸿蒙什么时候上市,[财经]华为鸿蒙系统什么时候上市?华为Mate40升级鸿蒙了吗?(2) - 南方财富网...
  3. 使用Python爬取多篇各类新闻文章
  4. python阶乘求和的代码_Python阶乘求和的代码详解
  5. 机器学习(4):决策树和随机森林
  6. 侯捷C++个人学习笔记面向对象Part2
  7. 抖音短视频SEO优化排名服务
  8. html延时属性css,CSS属性参考 | transition-delay
  9. Spring依赖注入的作用
  10. 这次破纪录的黑洞喷发可能会覆盖天空中的16次满月