CN105162595A - 安全传输非压缩文件的加密以及解密方法 - Google Patents
安全传输非压缩文件的加密以及解密方法 Download PDFInfo
- Publication number
- CN105162595A CN105162595A CN201510467555.1A CN201510467555A CN105162595A CN 105162595 A CN105162595 A CN 105162595A CN 201510467555 A CN201510467555 A CN 201510467555A CN 105162595 A CN105162595 A CN 105162595A
- Authority
- CN
- China
- Prior art keywords
- file
- encryption
- thread
- task
- content
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明提供了一种安全传输非压缩文件的加密以及解密方法,属于数据安全领域,通过AES或者DES加密算法执行加密过程,生成加密文件头结构及文件项序列,然后以多线程多任务方式读取待加密文件内容。本发明的有益效果如下:1.有快速加密多个文件目录和单个文件的能力;2.具有快速解密并释放出加密文件中指定文件的能力;3.具有全部文件格式支持的能力;4基于DSA签名算法和AES加密算法,安全性更高。
Description
技术领域
本发明属于数据安全领域,具体涉及一种安全传输非压缩文件的加密以及解密方法。
背景技术
目前市面上的带文件加密功能的软件基本都存在以下局限性:
1.压缩软件:主要针对存储介质容量不足,主要提供压缩功能,加密只是附加功能,若要加密必须先压缩,造成时间上的浪费。
2.网络软件:提供基于网络的文件加密服务,必须要网络环境支持,且不适用于大文件,网络传输太耗时。
3.其他软件:提供各种专有格式的加密功能,仅针对部分文件格式,如图片、文档等,一般于服务器端。
现在存储介质容量越来越大也越来越廉价,网络速度也越来越快,用户为了文件传输的安全,有必要将待传输的文件进行加密,通常情况下会使用压缩软件压缩的同时进行加密,时间过多消耗在了数据压缩上,数据越大压缩时间越长,所以迫切的需要一种更快速且安全的加密解密方法。
发明内容
本发明针对现有技术的不足,提供了一种安全传输非压缩文件的加密以及解密方法,能够有效解决现有技术加密文件效率低下且安全性较低等问题。
为解决以上问题,本发明采用的技术方案如下:一种安全传输非压缩文件的加密以及解密方法,包括以下步骤:
通过AES或者DES加密算法执行加密过程,生成加密文件头结构及文件项序列,然后以多线程多任务方式读取待加密文件内容。
作为优选,AES加密算法加密后的文件长度计算公式为:
IntFileSize=((原文件长度/n)+Int(原文件长度%n>0))*n,其中n=16或者n=24或者n=32。
作为优选,所述的加密文件头结构共有3个段,分别为:<文件头>[目录结构序列]<文件总数>,其中方括号内容为可选择的,即根据实际情况而变化,尖括号内容则是必填的。
作为优选,加密文件的目录结构序列为:由无0结尾的字符串组成,每级目录以目录名+回车换行符组成,子目录紧跟上级目录项后面,且目录名前多一个制表符,所有文件都在同级目录下时,则该序列为空。
作为优选,以多线程多任务方式读取待加密文件内容具体如下:
a)数据读取线程每次从文件中读取1K到1M字节到缓冲区,需要锁保护;
b)工作线程将从任务中取到1个数据即16个字节或者24个字节或者32个字节及其地址位置,将数据处理后写到指定位置;
c)当剩余文件个数大于最大任务数时,每个任务最多从工作线程池中领取2个工作线程;
d)当剩余文件个数小于最大任务数时,运行中的任务从工作线程池中再次领取1个工作线程;
其中,最大任务个数可选用4*CPU核心数,最大工作线程数可选用8*CPU核心数,每个任务可以处理1个文件加密或解密工作,一个工作任务包含1个文件数据读取线程和2个或以上的工作线程。
作为优选,生成加密文件头结构时会保存密码的签名,签名通过固定DSA算法中的K随机数,生成非随机的签名,用于验证解密时的密码正确性。
作为优选,文件项序列包括目录编号、固定长度文件名、加密后的文件原始长度和文件最后编辑时间;文件项序列后跟接着是文件加密内容;每个加密文件中至少有一个文件项序列和文件加密内容项,个数由加密文件头结构中的文件总数决定。
作为优选,读取待解密文件头结构,获取目录结构序列,再遍历文件内容取得文件项指针列表,执行解密过程,以多线程多任务方式读取待解密文件内容,并解密输出待解密的文件。
本发明的有益效果如下:
1.有快速加密多个文件目录和单个文件的能力;
2.具有快速解密并释放出加密文件中指定文件的能力;
3.具有全部文件格式支持的能力;
4.基于DSA签名算法和AES加密算法,安全性更高。
附图说明
图1为本发明实施例1加密的主流程图;
图2为本发明实施例2解密的主流程图;
图3为目录结构示意图;
图4为目录结构生成的序列示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
一种安全传输非压缩文件的加密以及解密方法,步骤如下:
执行加密过程,生成加密文件头结构和文件项序列,其中会保存密码的签名(通过固定DSA或者RSA算法中的K随机数,可以生成非随机的签名,用于验证解密时的密码正确性),然后以多线程多任务方式读取待加密文件内容,加密后写入结果文件,由于每个文件加密后长度是确定的,所以可以进行多线程多任务分段加密。
具体介绍如下:
1.AES加密算法有128位(16个字节)、192位(24个字节)、256位(32个字节)方式,每种方式都是取固定字节进行加密,所以对原文件加密时可以直接计算出加密后文件的长度,例如128位方式每次取16字节进行加密计算,所以加密后的文件长度为:
IntFileSize=((原文件长度/16)+int(原文件长度%16>0))*16
2.加密文件头结构共有3个段,分别为:<文件头>[目录结构序列]<文件总数>(其中方括号内容为可选择的,即根据实际情况而变化,尖括号内容则是必填的),下面分别描述了这3段结构的定义和生成方法:
a.文件头定义:
typedefstruct{
charCompanyLogo[3];//公司LOGO
wordVersion;//文件版本
charSignature[39];//密码签名(DSA签名算法)
wordCheckCode;//校验码,从文件头之后一直到文件尾
intStructSize;//目录结构序列长度
}FILE_HEADER;
b.目录结构序列定义:该序列由无0结尾的字符串组成,每级目录以目录名+回车换行符组成,子目录紧跟上级目录项后面,且目录名前多一个制表符,所有文件都在同级目录下时,该序列为空。如图3中的目录情况,则生成序列为图4所示。
c.文件总数:intFileCount;
3.文件项序列:
文件项序列后跟接着是文件加密内容;
<文件项序列>[文件加密内容][<文件项序列>[文件加密内容]][…]
每个加密文件中至少有一个文件项序列和文件加密内容项,个数由加密文件头结构中的文件总数决定。
4.数据缓冲区定义:
typedefstruct{
int64FilePos;//64位整数的文件位置
charCache[ENCRYPT_BYTES];//缓冲区
}FILE_CACHE;
//ENCRYPT_BYTES取决了加密位数,128位时ENCRYPT_BYTES=16;
5.基于以上条件可以得出文件加密解密时可以使用多任务多线程分段的方式来加快处理速度,以下为加密解密多任务多线程分段方法技术细节:
a)工作项:加密时以文件为单位,解密时以文件项为单位
b)最大任务数取值4*CPU核心数
c)线程池中工作线程数取值8*CPU核心数
d)每个任务只能处理一个文件的加密或解密工作
e)每个任务中有1个数据读取线程,和2个以上的工作线程
f)每个任务创建时可以从工作线程池中取得2个工作线程
g)数据读取线程要保证始终有足够待处理的缓冲数据,直到工作项内容读取结束(缓冲区个数取值范围:2到1K个缓冲区)
h)工作线程每次从缓冲区取得一个数据进行处理,并根据缓冲区描述将处理结果写到输出文件的相应位置
i)当一个任务完成后将返还工作线程到线程池,且任务销毁
j)有剩余未处理的工作项且当前任务数小于最大任务数时,可以创建新的任务继续处理未完成的文件
k)当一个任务完成且无剩余未处理的工作项时,可以将工作线程池中的线程平均分配给还在执行的任务
实施例一:加密(如图1)
101-可以通过拖拽方式批量添加文件,也可单独添加文件夹或文件,打勾确认最终参与加密的文件。
102-输入本次加密文件的密码,需要两次确认。
103-执行加密过程,生成加密文件头结构,其中会保存密码的签名(通过固定DSA算法中的K随机数,可以生成非随机的签名,用于验证解密时的密码正确性),然后以多线程多任务方式读取待加密文件内容,加密后写入结果文件,由于每个文件加密后长度是确定的,所以可以进行多线程多任务分段加密。
实施例二:解密(如图2)
201-可以通过拖拽方式批量添加文件,也可单独添加文件夹或文件,打勾确认最终需要解密的文件。
202-选择解密后的输出路径
203-依次对需要解密的文件进行操作,首次要求输入该文件的解密密码,通过弹框提示待解密文件名,并要求输入该文件的密码。
204-验证解密密码(对输入的密码执行DSA签名,使用与加密过程相同的K,与待解密文件头结构中密码签名进行对比验证),错误时允许重新输入密码,或放弃解密流程。
205-读取待解密文件头结构,分析取得目录结构信息,再遍历文件内容取得文件项指针列表
206-执行解密过程,以多线程多任务方式读取待解密文件内容,并解密输出待释放的文件。
Claims (8)
1.一种安全传输非压缩文件的加密方法,其特征在于,方法如下:通过AES或者DES加密算法执行加密过程,生成加密文件头结构及文件项序列,然后以多线程多任务方式读取待加密文件内容。
2.根据权利要求1所述的一种安全传输非压缩文件的加密方法,其特征在于,AES加密算法加密后的文件长度计算公式为:
IntFileSize=((原文件长度/n)+Int(原文件长度%n>0))*n,其中n=16或者n=24或者n=32。
3.根据权利要求1或者2所述的一种安全传输非压缩文件的加密方法,其特征在于,所述的加密文件头结构共有3个段,分别为:<文件头>[目录结构序列]<文件总数>,其中方括号内容为可选择的,即根据实际情况而变化,尖括号内容则是必填的。
4.根据权利要求3所述的一种安全传输非压缩文件的加密方法,其特征在于,加密文件的目录结构序列为:由无0结尾的字符串组成,每级目录以目录名+回车换行符组成,子目录紧跟上级目录项后面,且目录名前多一个制表符,所有文件都在同级目录下时,则该序列为空。
5.根据权利要求1所述的一种安全传输非压缩文件的加密方法,其特征在于,以多线程多任务方式读取待加密文件内容具体如下:
a)数据读取线程每次从文件中读取1K到1M字节到缓冲区,需要锁保护;
b)工作线程将从任务中取到1个数据即16个字节或者24个字节或者32个字节及其地址位置,将数据处理后写到指定位置;
c)当剩余文件个数大于最大任务数时,每个任务最多从工作线程池中领取2个工作线程;
d)当剩余文件个数小于最大任务数时,运行中的任务从工作线程池中再次领取1个工作线程;
其中,最大任务个数可选用4*CPU核心数,最大工作线程数可选用8*CPU核心数,每个任务可以处理1个文件加密或解密工作,一个工作任务包含1个文件数据读取线程和2个或以上的工作线程。
6.根据权利要求1或2或4或5所述的一种安全传输非压缩文件的加密方法,其特征在于,生成加密文件头结构时会保存密码的签名,签名通过固定DSA算法中的K随机数,生成非随机的签名,用于验证解密时的密码正确性。
7.根据权利要求1所述的一种安全传输非压缩文件的加密方法,其特征在于,文件项序列包括目录编号、固定长度文件名、加密后的文件原始长度和文件最后编辑时间;文件项序列后跟接着是文件加密内容;每个加密文件中至少有一个文件项序列和文件加密内容项,个数由加密文件头结构中的文件总数决定。
8.根据权利要求1所述的一种安全传输非压缩文件的解密方法,其特征在于,读取待解密文件头结构,获取目录结构序列,再遍历文件内容取得文件项指针列表,执行解密过程,以多线程多任务方式读取待解密文件内容,并解密输出待解密的文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510467555.1A CN105162595B (zh) | 2015-08-03 | 2015-08-03 | 安全传输非压缩文件的加密以及解密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510467555.1A CN105162595B (zh) | 2015-08-03 | 2015-08-03 | 安全传输非压缩文件的加密以及解密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105162595A true CN105162595A (zh) | 2015-12-16 |
CN105162595B CN105162595B (zh) | 2019-07-09 |
Family
ID=54803360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510467555.1A Active CN105162595B (zh) | 2015-08-03 | 2015-08-03 | 安全传输非压缩文件的加密以及解密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105162595B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254358A (zh) * | 2016-08-09 | 2016-12-21 | 广东小天才科技有限公司 | 一种文件的快速加解密方法及装置 |
CN106941620A (zh) * | 2017-03-31 | 2017-07-11 | 武汉斗鱼网络科技有限公司 | 一种Flash资源加载方法及装置 |
CN108875408A (zh) * | 2018-06-22 | 2018-11-23 | 南京擎天科技有限公司 | 一种Android平台的文件快速加密以及解密方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120089829A1 (en) * | 2010-10-07 | 2012-04-12 | King Saud University | Accelerating stream cipher operations using single and grid systems |
CN103034701A (zh) * | 2012-12-05 | 2013-04-10 | 曙光信息产业(北京)有限公司 | 元数据文件格式转换方法 |
CN103841196A (zh) * | 2014-03-07 | 2014-06-04 | 长沙裕邦软件开发有限公司 | 一种基于多线程的文件上传系统及方法 |
-
2015
- 2015-08-03 CN CN201510467555.1A patent/CN105162595B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120089829A1 (en) * | 2010-10-07 | 2012-04-12 | King Saud University | Accelerating stream cipher operations using single and grid systems |
CN103034701A (zh) * | 2012-12-05 | 2013-04-10 | 曙光信息产业(北京)有限公司 | 元数据文件格式转换方法 |
CN103841196A (zh) * | 2014-03-07 | 2014-06-04 | 长沙裕邦软件开发有限公司 | 一种基于多线程的文件上传系统及方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254358A (zh) * | 2016-08-09 | 2016-12-21 | 广东小天才科技有限公司 | 一种文件的快速加解密方法及装置 |
CN106254358B (zh) * | 2016-08-09 | 2019-11-29 | 广东小天才科技有限公司 | 一种文件的快速加解密方法及装置 |
CN106941620A (zh) * | 2017-03-31 | 2017-07-11 | 武汉斗鱼网络科技有限公司 | 一种Flash资源加载方法及装置 |
CN106941620B (zh) * | 2017-03-31 | 2019-11-12 | 武汉斗鱼网络科技有限公司 | 一种Flash资源加载方法及装置 |
CN108875408A (zh) * | 2018-06-22 | 2018-11-23 | 南京擎天科技有限公司 | 一种Android平台的文件快速加密以及解密方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105162595B (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102051288B1 (ko) | 분산형 해시 테이블과 피어투피어 분산 원장을 사용하여 디지털 자산의 무결성을 검증하기 위한 방법 및 시스템 | |
WO2019218717A1 (zh) | 一种分布式存储方法、装置、计算机设备及存储介质 | |
US8661259B2 (en) | Deduplicated and encrypted backups | |
US20190132120A1 (en) | Data Encrypting System with Encryption Service Module and Supporting Infrastructure for Transparently Providing Encryption Services to Encryption Service Consumer Processes Across Encryption Service State Changes | |
KR20180114942A (ko) | 분산형 해시 테이블 및 블록체인을 사용하여 컴퓨터 소프트웨어를 보호하기 위한 방법 및 시스템 | |
US20080172562A1 (en) | Encryption and authentication of data and for decryption and verification of authenticity of data | |
CN113378236B (zh) | 一种证据数据在线保全公证平台及保全方法 | |
CN103400064B (zh) | 用于文件加密和解密的方法和设备 | |
CN105897406B (zh) | 一种明密文等长的aes加解密的装置 | |
CN103259762A (zh) | 一种基于云存储的文件加密、解密方法及系统 | |
KR101989813B1 (ko) | 특정 포맷을 가지는 대체 데이터의 생성 및 검증 | |
JP2008103936A (ja) | 秘密情報管理装置および秘密情報管理システム | |
JP2006197540A (ja) | 改竄検出用データ生成方法、および改竄検出方法及び装置 | |
CN108777685B (zh) | 用于处理信息的方法和装置 | |
CN107733904A (zh) | 一种虚拟机数据加密和解密的方法、装置及平台 | |
CN105162595A (zh) | 安全传输非压缩文件的加密以及解密方法 | |
CN1941694A (zh) | 生成用于检测在处理期间加密数据的虚假改造的数据的设备及方法 | |
CN115048664A (zh) | 基于固态硬盘的数据安全存储方法、装置、设备及介质 | |
CN108431819A (zh) | 保护客户端访问视频播放器的drm代理的服务的方法和系统 | |
CN101707521A (zh) | 一种基于des的加密方法 | |
CN112532379A (zh) | 一种文件保护方法及装置 | |
US9571271B2 (en) | Sending messages by oblivious transfer | |
CN108563396B (zh) | 一种安全的云端对象存储方法 | |
CN110113151A (zh) | 一种对elf格式程序的非侵入式实时加解密方法 | |
CN106789836B (zh) | 电子资源保护方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: No. 183 Songshan Road, Neijiang, Sichuan, Sichuan Applicant after: SICHUAN XLY INFORMATION SAFETY TECHNOLOGY CO., LTD. Address before: No. 183 Songshan Road, Neijiang, Sichuan, Sichuan Applicant before: Sichuan SalvationData Information Safety Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |