CN111310222B - 文件加密方法 - Google Patents
文件加密方法 Download PDFInfo
- Publication number
- CN111310222B CN111310222B CN201911137952.7A CN201911137952A CN111310222B CN 111310222 B CN111310222 B CN 111310222B CN 201911137952 A CN201911137952 A CN 201911137952A CN 111310222 B CN111310222 B CN 111310222B
- Authority
- CN
- China
- Prior art keywords
- file
- encryption
- key
- encrypted
- size
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
本发明公开了一种文件加密方法,包括以下步骤:读取待加密的文件,确定待加密的文件的大小;以所述大小为参数生成加密秘钥;将待加密的文件分为多个文件分块;读取一文件分块,使用所述加密秘钥对文件分块进行加密,生成加密分块,直至将所有文件分块加密完毕;将加密分块合并,生成加密文件,并将所述加密秘钥发送给文件加密方法调用者。依据本发明的文件加密方法具有较强的安全性。
Description
技术领域
本发明涉及一种文件加密方法,适用于非结构化文件的加密。
背景技术
非结构化数据是指字段长度可变,并且每个字段的记录又可以由可重复或不可重复的字段构成的数据,非结构化数据所形成的文件即非结构化文件,常见的非结构化数据主要有文本、图像、声音、影视、超媒体等信息,与之对应的结构化数据主要有数字、符号都信息。
已知的文件加密方法也主要用于非结构化数据的加密,文件加密种类繁多,但相对应的黑客破解技术也在不断更新,各种木马病毒泛滥,现有的文件加密技术基本都被黑客所掌握。当前的文件加密方式主要是基于文件特征码的加密方式,黑客通过对加密后的文件特征码识别的方式很容易识别文件加密方式并进而找到对应的破解方法。
中国专利文献CN105956492A公开了一种文件存储加密方法及装置,其所公开文件存储加密方法采用了相对单一的加密方式,该加密方式具有比较强的规律性,即有规律可循,具体是针对二进制数据按照8位进行分割,然后按照斐波那契数列规律进行同或位计算。该种加密方法所依赖的加密算法是早已公开的加密算法,且加密解密过程没有使用加密密钥,对算法进行逆向分析后很容易进行解密。该加密算法解密过程类似CBC分组链接模式,解密过程易引发错误传播无界,也不利于并行计算。
发明内容
本发明的目的在于提供一种文件加密方法,该加密方法通过加密密钥及加密过程拆分数据逻辑的随机性,增强加密文件的安全性。
在本发明的的实施例中,提供一种文件加密方法,包括以下步骤:
读取待加密的文件,确定待加密的文件的大小;
以所述大小为参数生成加密秘钥;
将待加密的文件分为多个文件分块;
读取一文件分块,使用所述加密秘钥对文件分块进行加密,生成加密分块,直至将所有文件分块加密完毕;
将加密分块合并,生成加密文件,并将所述加密秘钥发送给文件加密方法调用者。
可选地,秘钥长度与文件分块的数量相等,秘钥的位与文件分块一一对应,以秘钥位对所对应文件分块加密。
可选地,秘钥为底层随机数函数随机生成,秘钥的长度为5~10。
可选地,确定一个缓冲区,以文件大小与缓冲区大小的商取整作为秘钥长度;
在秘钥长度计算时,文件大小以位计数,缓冲区大小以字节计数;
在进行文件分块加密时,每次读取一个文件分块到缓冲区进行加密。
可选地,文件分块不大于缓冲区的大小。
可选地,加密运算为文件分块中数据与相应秘钥位间的位运算。
可选地,所述位运算为文件分块中的数据与相应秘钥位间的模28加运算。
可选地,若无需对全部文件分块进行加密,则对第一个文件分块进行加密。
可选地,加密运算采用多线程并行处理;
线程数与加密秘钥的位数相同。
依据本发明实施例的文件加密方法,在文件加密时采用加密秘钥,提高文件加密的安全性,同时该将加密秘钥与文件大小相关联,即加密秘钥与文件大小相关,每一文件与一加密秘钥相对应,而非使用固定的秘钥进行加密,进一步提高了加密文件的安全性。进而对待加密的文件分割成若干文件分块,使用所述加密秘钥分别进行加密,分块本身也具有随机性,进一步提高了加密的安全性。
附图说明
图1为一实施例中文件加密方法流程图。
图2为一实施例中一具体的文件加密流程图。
具体实施方式
对于非结构化文件,其固有属性之一是自身文件结构往往不单一,适于本发明以随机为主要加密调整的加密方法。
在本发明的实施例中,通过计算得到的文件基础信息及随机密钥算法生成针对待加密的文件的随机密钥。进而根据随机密钥长度对文件数据流进行拆分,拆分后的数据流再使用随机密钥逐字节进行模28加法运算,拆分后的文件分块数量与密钥位数相等,每一文件分块使用一位密钥进行加密。通过随机加密密钥及加密过程拆分数据逻辑的随机性,增强加密文件的安全性。具体实现方案如下:
通过文件通道读取待加密的文件,获取待加密的文件大小,文件大小以字节为单位进行计算。
文件通道是Java中提供的 FileChannel 这个文件操作类,它是一个快速读、写、映射操作文件的通道。
文件通道具有的优点:
1).在文件的绝对位置的字节读写操作在某种程度上只会影响通道的当前位置,不会影响其他位置。
2).文件的区域可能会被直接映射到内存中,对于大文件来说,这比通常的读写方法更有效。
3).为了保证数据在系统崩溃之后不丢失数据,文件的修改模式会被强制到底层存储设备。
4).字节能从一个文件被转换为一些其他的通道,反之亦然,这种操作在某种程度上会被许多操作系统或者文件系统优化成一个非常快速的直接传输。
5).操作过程中文件的区域会被锁住来防止其它程序的访问。
在确定待加密的文件大小后,按照指定的随机密钥生成算法,以所述文件大小为参数,来生成随机加密密钥。生成的密钥长度控制在5~10位之间,此时生成的密钥长度同时作为后续多线程加密操作的线程数。
在随机秘钥生成算法中优选底层随机数函数生成,底层随机数函数是指机器级的随机数函数。
对于文件的加密运算,可在指定的缓冲区进行处理。指定最大缓冲区大小,根据最大缓冲区大小对文件进行分块,分块大小最大为最大缓冲区大小。若文件大小小于最大缓冲区大小,则定义文件大小为最大缓冲区大小。
在确定文件分块大小时,可以预先确定随机秘钥的长度,根据随机秘钥的的长度,以及文件分块的数量与随机秘钥位数相同的设定,确定文件分块的大小,进而根据文件分块的大小确定缓冲区的大小。
在一些实施例中,文件缓冲区的大小可以小于文件分块大小,在读取当前文件分块的数据时,采用例如顺序读的方式,直至对文件分块内的数据全部加密完毕。
此外,可通过参数配置以用于设置对待加密文件进行全局加密还是局部加密,如果不是对整个文件进行加密,则只读取第一个文件分块。
对于具体的加密操作,在一些实施例中可以进行单线程操作,而在优选的实施例中,可进行并行处理,采用多线程完成并行处理,以提高整体的处理效率。
具体地,根据上述密钥长度,启动多个加密线程,加密线程数量等于密钥长度,每个加密线程与秘钥的位一一对应,即每个加密线程持有一个对应的单字节密钥k。加密线程按顺序依次对上述文件分块进行单字节读取,并对读取到的数据字节b使用单字节密钥k进行模28加运算,加密后字节数据保存回原文件分块位置。该加密操作循环执行,直至该文件分块内所有字节都完成加密运算。
基于上段的加密方式,依次对其余文件分块进行加密,直至全部文件分块加密完毕,或者在一些实施例中仅对第一个文件分块进行加密。
所述模28加运算的公式为:(b + k) % 28 ,其中b为单字节数据,k为单字节密钥,%28为对28取模运算。
上述加密逻辑完成后,关闭快速文件通道,输出加密后的文件流到指定的文件路径。并把随机密钥返回给加密逻辑调用者。
在本发明实施例上述文件加密过程中,将待加密的文件以分块的形式读取到缓冲区,然后对缓冲区中的数据使用随机密钥逐字节进行模28加运算。运算结果保存回原文件分块相同位置,形成新的缓冲区数据,然后将多个分块合并,即可得到加密后的文件数据。整个数据运算的过程就是加密的过程。由于避免使用了传统的异或运算或者同或运算,而是采用随机密钥逐字节模28加运算,这种方式极大的提高了加密后文件的安全性,并且加密过程采用多线程并行处理,提高了加密运算的效率,所以该发明实现了文件的高效加密存储。
请参考图1,将前述的步骤整合如下:
S11:通过文件通道读取待加密的文件,获取当前待加密的文件的大小,待加密的文件的大小以字节为单位进行计算。
S12:按照指定的随机密钥生成算法,以所述大小为参数,来生成随机加密密钥。
S13:指定最大缓冲区大小,根据最大缓冲区大小对文件进行分块,文件分块大小最大为最大缓冲区大小。
在前述的内容中指出,秘钥的位数控制在5~10位,而秘钥的位数与文件分块的相同,在此条件下,使用秘钥的位数控制最大缓冲区的大小。
S14:通过文件通道依次按照所述最大缓冲区大小进行文件分块的拆分读取。可通过参数配置是否对整个文件进行加密,如果不是对整个文件进行加密,则只读取第一个文件分块。
S15:进行加密操作,根据上述密钥长度,启动多个加密线程,加密线程数量等同于密钥长度,每个加密线程持有一个对应的单字节密钥k。加密线程按顺序依次对上述文件分块进行读取单字节读取,并对读取到的数据字节b使用单字节密钥k进行模28加运算,加密后字节数据保存回原文件分块位置。该加密操作循环执行,直至该文件分块内所有字节都完成加密运算,根据上述所传参数配置,判断是否进入下一个文件分块的加密操作。多线程加密运算,提高了加密效率。
所述模28加运算的公式为:(b + k) % 28 ,其中b为单字节数据,k为单字节密钥,%28为对28取模运算。
S16:上述加密逻辑完成后,关闭快速文件通道,输出加密后的文件流到指定的文件路径。并把随机密钥返回给改加密逻辑调用者。
详细的,基于上述方法,在一个更具体的实施例中方式如下:
S21:通过快速文件通道读取文件,获取当前待加密的文件大小,文件流二进制形式为11010100……,假定计算所述文件大小为22byte。
S22:按照指定的随机密钥生成算法,对文件大小除以最大缓冲区大小取整,计算公式为(22*8/25 = 7)得到密钥长度为7,采用底层随机数函数生成长度为7位的随机数a32#@&A。
S23:指定最大缓冲区大小,根据最大缓冲区大小对文件进行分块,分块大小最大为最大缓冲区大小,当前文件大小为22,小于缓冲区大小25,则当前最大缓冲区大小为22。
通过快速文件通道依次按照所述最大缓冲区大小进行文件分块的拆分读取。可通过参数配置是否对整个文件进行加密,如果不是对整个文件进行加密,则只读取第一个文件分块。当前文件大小小于最大缓冲区大小,则当前文件分块只有一个分块即第一文件分块。
S24:进行加密操作,根据上述密钥长度,启动多个加密线程,加密线程数量等于密钥长度,每个加密线程持有一个对应的单字节密钥k。加密线程按顺序依次对上述文件分块进行读取单字节读取,并对读取到的数据字节b使用单字节密钥k进行模28加运算,加密后字节数据保存回原文件分块位置。该加密操作循环执行,直至该文件分块内所有字节都完成加密运算,根据上述所传参数配置,判断是否进入下一个文件分块的加密操作。多线程加密运算,提高了加密效率。
所述模28加运算的公式为:(b + k) % 28 ,其中b为单字节数据,k为单字节密钥,%28为对28取模运算。
S25:上述加密逻辑完成后,关闭文件通道,输出加密后的文件流到指定的文件路径。并把随机密钥返回给改加密逻辑调用者。
Claims (6)
1.一种文件加密方法,其特征在于,包括以下步骤:
读取待加密的文件,确定待加密的文件的大小;
以所述大小为参数生成加密秘钥;
将待加密的文件随机的分为多个文件分块;
读取一文件分块,使用所述加密秘钥对文件分块进行加密,生成加密分块,直至将所有文件分块加密完毕;
将加密分块合并,生成加密文件,并将所述加密秘钥发送给文件加密方法调用者;
秘钥长度与文件分块的数量相等,秘钥的位与文件分块一一对应,以秘钥位对所对应文件分块加密;
秘钥为底层随机数函数随机生成,秘钥的长度为5~10;
确定一个缓冲区,以文件大小与缓冲区大小的商取整作为秘钥长度;
在秘钥长度计算时,文件大小以位计数,缓冲区大小以字节计数;
在进行文件分块加密时,每次读取一个文件分块到缓冲区进行加密。
2.根据权利要求1所述的文件加密方法,其特征在于,文件分块不大于缓冲区的大小。
3.根据权利要求1所述的文件加密方法,其特征在于,加密运算为文件分块中数据与相应秘钥位间的位运算。
4.根据权利要求3所述的文件加密方法,其特征在于,所述位运算为文件分块中的数据与相应秘钥位间的模28加运算。
5.根据权利要求1所述的文件加密方法,其特征在于,若无需对全部文件分块进行加密,则对第一个文件分块进行加密。
6.根据权利要求1所述的文件加密方法,其特征在于,加密运算采用多线程并行处理;
线程数与加密秘钥的位数相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911137952.7A CN111310222B (zh) | 2019-11-20 | 2019-11-20 | 文件加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911137952.7A CN111310222B (zh) | 2019-11-20 | 2019-11-20 | 文件加密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111310222A CN111310222A (zh) | 2020-06-19 |
CN111310222B true CN111310222B (zh) | 2023-08-15 |
Family
ID=71150865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911137952.7A Active CN111310222B (zh) | 2019-11-20 | 2019-11-20 | 文件加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111310222B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112287366A (zh) * | 2020-10-29 | 2021-01-29 | 平安信托有限责任公司 | 数据加密方法、装置、计算机设备和存储介质 |
CN112464263A (zh) * | 2020-12-04 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种数据加密方法、系统、设备及介质 |
CN113572786B (zh) * | 2021-08-05 | 2023-04-18 | 梁德群 | 一种基于不等长二进制截取字组成的明文进行加密和解密的方法 |
CN114125830B (zh) * | 2021-11-17 | 2024-05-07 | 浪潮卓数大数据产业发展有限公司 | 一种app数据的加密传输方法、设备及介质 |
CN114401132A (zh) * | 2022-01-13 | 2022-04-26 | 平安普惠企业管理有限公司 | 数据加密方法、装置、设备及存储介质 |
CN115580474B (zh) * | 2022-10-17 | 2023-10-31 | 南京网藤科技有限公司 | 一种密钥跟随的文件加密的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004186939A (ja) * | 2002-12-03 | 2004-07-02 | Sony Ericsson Mobilecommunications Japan Inc | 暗号処理装置及び方法 |
UA76554C2 (en) * | 2004-07-02 | 2006-08-15 | Univ Vinnytsia Nat Tech | Method of block-to-block coding of data transmitted by electronic facilities |
CN101471769A (zh) * | 2007-12-28 | 2009-07-01 | 北京大唐高鸿数据网络技术有限公司 | 一种适于VoIP媒体传输的加解密方法 |
CN103096302A (zh) * | 2011-10-27 | 2013-05-08 | 华为技术有限公司 | 一种加密方法、解密方法和相关装置 |
CN108965218A (zh) * | 2017-05-25 | 2018-12-07 | 华为技术有限公司 | 一种控制器区域网总线安全通信方法、装置及系统 |
CN109145624A (zh) * | 2018-08-29 | 2019-01-04 | 广东工业大学 | 一种基于Hadoop平台的多混沌文本加密算法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050147244A1 (en) * | 2003-12-30 | 2005-07-07 | Alexander Moldovyan | Method for cryptographic transformation of binary data blocks |
DE102008010789B4 (de) * | 2008-02-22 | 2010-09-30 | Fachhochschule Schmalkalden | Verfahren zur zugriffs- und kommunikationsbezogenen Zufallsver- und Entschlüsselung von Daten |
-
2019
- 2019-11-20 CN CN201911137952.7A patent/CN111310222B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004186939A (ja) * | 2002-12-03 | 2004-07-02 | Sony Ericsson Mobilecommunications Japan Inc | 暗号処理装置及び方法 |
UA76554C2 (en) * | 2004-07-02 | 2006-08-15 | Univ Vinnytsia Nat Tech | Method of block-to-block coding of data transmitted by electronic facilities |
CN101471769A (zh) * | 2007-12-28 | 2009-07-01 | 北京大唐高鸿数据网络技术有限公司 | 一种适于VoIP媒体传输的加解密方法 |
CN103096302A (zh) * | 2011-10-27 | 2013-05-08 | 华为技术有限公司 | 一种加密方法、解密方法和相关装置 |
CN108965218A (zh) * | 2017-05-25 | 2018-12-07 | 华为技术有限公司 | 一种控制器区域网总线安全通信方法、装置及系统 |
CN109145624A (zh) * | 2018-08-29 | 2019-01-04 | 广东工业大学 | 一种基于Hadoop平台的多混沌文本加密算法 |
Non-Patent Citations (1)
Title |
---|
钟建宁.微型机数据库加密及实现的一种算法.微型机与应用.1997,(第10期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111310222A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310222B (zh) | 文件加密方法 | |
US8284933B2 (en) | Encrypting variable-length passwords to yield fixed-length encrypted passwords | |
US7860241B2 (en) | Simple universal hash for plaintext aware encryption | |
US8050401B2 (en) | High speed configurable cryptographic architecture | |
US8428251B2 (en) | System and method for stream/block cipher with internal random states | |
US20120134490A1 (en) | Selective Data Encryption and Decryption Method and Apparatus | |
KR20040007769A (ko) | 컴퓨터 네트워크에서의 데이터 분산 처리의 통합 보호방법 및 이 방법을 수행하는 시스템 | |
KR101989813B1 (ko) | 특정 포맷을 가지는 대체 데이터의 생성 및 검증 | |
CN111314050B (zh) | 一种加解密方法及装置 | |
CN103345609A (zh) | 一种文本加解密方法和加解密设备 | |
KR101825838B1 (ko) | 데이터의 부분 암호화 방법, 데이터의 부분 복호화 방법 및 부분 암호화된 데이터를 복호화하는 프로그램을 저장하는 저장매체 | |
CN116488794B (zh) | 基于fpga的高速sm4密码模组实现方法及装置 | |
Sleem et al. | TestU01 and Practrand: Tools for a randomness evaluation for famous multimedia ciphers | |
CN116894273B (zh) | 基于异或和求余的文件加密方法、解密方法、设备及介质 | |
CN115641130A (zh) | 基于改进雪花算法生成交易记录id的方法、装置及设备 | |
CN112580114B (zh) | 一种信息处理方法、装置、设备及存储介质 | |
US20210152326A1 (en) | White-box encryption method for prevention of fault injection attack and apparatus therefor | |
CN111711671B (zh) | 一种基于盲存储的高效密文文件更新的云存储方法 | |
CN116132977B (zh) | 一种鼠标安全加密认证方法 | |
CN113055155A (zh) | 一种基于大数据平台的数据安全存储方法 | |
CN109450614B (zh) | 一种适用于高速数据传输通路的加密和解密方法 | |
US20120321079A1 (en) | System and method for generating round keys | |
CN114390317B (zh) | 面向流式传输视频的加密方法及系统 | |
US9058507B2 (en) | Signal processor with an encrypting or decrypting device in a memory system | |
CN111314051B (zh) | 一种加解密方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |