CN115344875A - 文件加密、文件解密方法及装置 - Google Patents
文件加密、文件解密方法及装置 Download PDFInfo
- Publication number
- CN115344875A CN115344875A CN202210862133.4A CN202210862133A CN115344875A CN 115344875 A CN115344875 A CN 115344875A CN 202210862133 A CN202210862133 A CN 202210862133A CN 115344875 A CN115344875 A CN 115344875A
- Authority
- CN
- China
- Prior art keywords
- binary
- file
- plaintext
- ciphertext
- length
- 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.)
- Pending
Links
Images
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/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明属于信息安全技术领域,公开了一种文件加密、文件解密方法及装置。包括:获取二进制加密矩阵、明文文件的长度;根据二进制加密矩阵的阶数和明文文件的长度确定明文文件的片段数;根据片段数将明文文件划分为多个明文片段;从各个明文片段中读取多个字节的待加密数据,从中分离出对应的多个二进制数;根据二进制加密矩阵进行加密,得到多个二进制密文;对多个二进制密文进行合并,得到多个字节的密文数据;将密文数据和明文文件的长度写入密文文件。通过上述方式,通过字节分离和重组实现文件的单比特加密,使得文件加密的最小单元由字节变为比特,增加了非法用户对文件的解密难度,提升了计算机的安全性。
Description
技术领域
本发明涉及信息安全技术领域,尤其涉及一种文件加密、文件解密方法及装置。
背景技术
随着网络技术高度发展,保证信息安全对计算机用户而言越来越重要。为了保证重要信息的安全,目前最好的方式是对计算机文件进行加密。因此,对计算机文件的加密一直是科研工作者研究的热点。
到目前为止,一些经典的加密算法已经为用户所熟知。然而,现有的加密算法只能以字节为单位进行加密,使得非法用户也习惯从字节角度尝试解密密文,增大了密文泄露风险。因此,如何实现更小加密单元的加密操作,以增加非法用户对文件的解密难度,是当前亟待解决的问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种文件加密、文件解密方法及装置,旨在解决如何实现更小加密单元的加密操作,以增加非法用户对文件的解密难度的技术问题。
为实现上述目的,本发明提供了一种文件加密方法,所述方法包括以下步骤:
获取二进制加密矩阵,并获取明文文件对应的长度s;
根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p,其中,n≥8,p≥1;
根据所述片段数p将明文文件划分为p个明文片段;
从各个所述明文片段中读取f个字节的待加密数据;
从各个字节的所述待加密数据中分离出对应的m个二进制数;
根据所述二进制加密矩阵对各个所述二进制数进行加密,得到k个二进制密文;
对k个所述二进制密文进行合并,得到f个字节的密文数据;
将所述p个明文片段分别对应的f个字节的密文数据以及所述明文文件对应的长度s写入密文文件中。
可选地,所述根据所述二进制加密矩阵对各个所述二进制数进行加密,得到k个二进制密文,包括:
根据所述二进制加密矩阵和各个所述明文片段对应的k个二进制数进行计算,得到k个初始二进制密文;
求取各个所述初始二进制密文与预设数值之间的余数,得到k个二进制密文。
可选地,所述根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p之前,所述方法还包括:
判断mod(s,n/8)>0是否成立,其中,n为所述二进制加密矩阵对应的阶数,mod()为求余函数;
若否,则执行所述根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p的步骤。
可选地,所述判断mod(s,n/8)>0是否成立之后,所述方法还包括:
若是,则根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定待补零字节数;
根据所述待补零字节数对所述明文文件进行补零处理,并确定补零处理后的明文文件对应的目标长度;
根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的目标长度确定明文文件对应的片段数p。
此外,为实现上述目的,本发明还提出一种文件加密装置,所述文件加密装置包括:
获取模块,用于获取二进制加密矩阵,并获取明文文件对应的长度s;
确定模块,用于根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p,其中,n≥8,p≥1;
划分模块,用于根据所述片段数p将明文文件划分为p个明文片段;
读取模块,用于从各个所述明文片段中读取f个字节的待加密数据;
分离模块,用于从各个字节的所述待加密数据中分离出对应的m个二进制数;
加密模块,用于根据所述二进制加密矩阵对各个所述二进制数进行加密,得到k个二进制密文;
合并模块,用于对k个所述二进制密文进行合并,得到f个字节的密文数据;
写入模块,用于将所述p个明文片段分别对应的f个字节的密文数据以及所述明文文件对应的长度s写入密文文件中。
此外,为实现上述目的,本发明还提出一种文件解密方法,所述文件解密方法包括:
获取二进制解密矩阵,并从密文文件中读取明文文件的长度s;
根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p,其中,n≥8,p≥1;
根据所述片段数p将密文文件划分为p个密文片段;
从各个所述密文片段中读取f个字节的待解密数据;
从各个字节的所述待解密数据中分离出对应的m个二进制密文数;
根据所述二进制解密矩阵对各个所述二进制密文数进行解密,得到k个二进制明文;
对k个所述二进制明文进行合并,得到f个字节的明文数据;
将所述p个密文片段分别对应的f个字节的明文数据写入目标明文文件中。
可选地,所述根据所述二进制解密矩阵对各个所述二进制密文数进行解密,得到k个二进制明文,包括:
根据所述二进制解密矩阵和各个所述密文片段对应的k个二进制密文数进行计算,得到k个初始二进制明文;
求取各个所述初始二进制明文与预设数值之间的余数,得到k个二进制明文。
可选地,所述获取二进制解密矩阵,并从密文文件中读取明文文件的长度s之后,所述方法还包括:
获取所述密文文件对应的密文长度;
根据所述二进制解密矩阵对应的阶数n和所述明文文件的长度s对所述密文长度进行校验;
在校验通过后,执行所述根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p的步骤。
可选地,所述获取二进制解密矩阵,并从密文文件中读取明文文件的长度s之后,所述方法还包括:
根据所述明文文件的长度s对所述密文文件中的补零字节进行删除,得到更新后的密文文件。
此外,为实现上述目的,本发明还提出一种文件解密装置,所述文件解密装置包括:
获取模块,用于获取二进制解密矩阵,并从密文文件中读取明文文件的长度s;
确定模块,用于根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p,其中,n≥8,p≥1;
划分模块,用于根据所述片段数p将密文文件划分为p个密文片段;
读取模块,用于从各个所述密文片段中读取f个字节的待解密数据;
分离模块,用于从各个字节的所述待解密数据中分离出对应的m个二进制密文数;
解密模块,用于根据所述二进制解密矩阵对各个所述二进制密文数进行解密,得到k个二进制明文;
合并模块,用于对k个所述二进制明文进行合并,得到f个字节的明文数据;
写入模块,用于将所述p个密文片段分别对应的f个字节的明文数据写入目标明文文件中。
本发明通过获取二进制加密矩阵,并获取明文文件对应的长度s;根据二进制加密矩阵对应的阶数n和明文文件对应的长度s确定明文文件对应的片段数p;根据片段数p将明文文件划分为p个明文片段;从各个明文片段中读取f个字节的待加密数据;从各个字节的待加密数据中分离出对应的m个二进制数;根据二进制加密矩阵对各个二进制数进行加密,得到k个二进制密文;对k个二进制密文进行合并,得到f个字节的密文数据;将p个明文片段分别对应的f个字节的密文数据以及明文文件对应的长度s写入密文文件中。通过上述方式,对明文文件进行字节分离,通过二进制加密矩阵对二进制数进行加密,重组合并为密文数据,实现了文件的单比特加密,使得文件加密的最小单元由字节变为比特,增加了非法用户对文件的解密难度,提升了计算机的安全性。
附图说明
图1为本发明文件加密方法第一实施例的流程示意图;
图2为本发明文件加密方法第二实施例的流程示意图;
图3为本发明文件加密装置第一实施例的结构框图;
图4为本发明文件解密方法第一实施例的流程示意图;
图5为本发明文件解密装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例提供了一种文件加密方法,参照图1,图1为本发明文件加密方法第一实施例的流程示意图。
本实施例中,所述文件加密方法包括以下步骤:
步骤S10:获取二进制加密矩阵,并获取明文文件对应的长度s。
可以理解的是,本实施例的执行主体为文件加密设备,所述文件加密设备可以为计算机、服务器、手机、平板等设备,还可以为其他具备相同或相似功能的设备,本实施例对此不加以限制。
需要说明的是,为了便于对本实施例提出的文件加密方法进行解释说明,做出如下约定:
(1)用a(i,j)(i,j=0,1,…,n-1)存储n阶二进制加密矩阵,其中,n为二进制加密矩阵对应的阶数;
(4)用tx(i)(i=0,1,…,n-1)存储n个长度为1的二进制明文;
(5)用ty(i)(i=0,1,…,n-1)存储n个长度为1的二进制密文。
在具体实现中,统计出明文文件的大小size,记为长度s。将作为加密密钥的二进制加密矩阵导入内存a(i,j)(i,j=0,1,…,n-1)中。
步骤S20:根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p,其中,n≥8,p≥1。
公式1)中,p为片段数,s为明文文件的长度,s为二进制加密矩阵的阶数。
步骤S30:根据所述片段数p将明文文件划分为p个明文片段。
步骤S40:从各个所述明文片段中读取f个字节的待加密数据。
步骤S50:从各个字节的所述待加密数据中分离出对应的m个二进制数。
应当理解的是,从计算机文件在外存的物理存储出发,任何一个计算机文件均可看作由若干个无符号字符所组成的字符集。为实现对计算机文件进行加密或解密,需要对计算机文件进行读写操作。目前计算机的硬件寻址的最小单元是字节,导致最小读写单元是字节。因此,如果无法从文件中采集到比字节单元更小的存储单元信息,则计算机文件的最小加密单元就只能是字节。一个字节所保存的无符号数的值是0至255之间十进制数,考虑到计算机硬件需要8个比特单元存储一个字节,本实施例的m=8,将每个字节的待加密数据分离为8位的二进制数。
可选地,通过以下方式从一个明文字节x(i)分离出8个长度为1的二进制数:x(i)除以2,得到第一商数和第一余数;通过第一商数除以2,得到第二商数和第二余数;依此类推,最终计算得到第一-第八余数,将第一-第八余数倒序排列,得到8个二进制数。
需要说明的是,通过公式2)-9)从一个明文字节x(i)分离出8个长度为1的二进制数,并写入tx(i)(i=0,1,…,n-1)中。其中:
tx(8i)=mod(x(i),2)2);
步骤S60:根据所述二进制加密矩阵对各个所述二进制数进行加密,得到k个二进制密文。
需要说明的是,将上述公式2)-9)执行次,将中个字节的无符号数转化为n个长度为1的二进制数tx(i)(i=0,1,…,n-1)。在二进制加密矩阵a(i,j)(i,j=0,1,…,n-1)的作用下,将tx(i)(i=0,1,…,n-1)加密成n个长度为1的二进制数ty(i)(i=0,1,…,n-1)。
具体地,所述步骤S60,包括:根据所述二进制加密矩阵和各个所述明文片段对应的k个二进制数进行计算,得到k个初始二进制密文;求取各个所述初始二进制密文与预设数值之间的余数,得到k个二进制密文。
应当理解的是,预设数值为2。通过以下公式10)对二进制数进行加密,得到k(即n)个二进制密文:
在具体实现中,对公式10)进行改进:如果tx(j)=1,使得ty(i)=ty(i)+a(i,j);如果ty(i)=2,使得ty(i)=0。减少加密过程中的计算量。
步骤S70:对k个所述二进制密文进行合并,得到f个字节的密文数据。
在具体实现中,初始化长度为1的二进制密文计数器i=0,通过以下公式11)将8个长度为1的二进制密文合并为一个字节的密文数据:
步骤S80:将所述p个明文片段分别对应的f个字节的密文数据以及所述明文文件对应的长度s写入密文文件中。
在具体实现中,判断已加密片段k<p是否成立,若是,则使k=k+1,返回执行所述步骤S40,读取下一明文片段中的f个字节的待加密数据,进行字节分离、二进制数加密和二进制数加密,直到k≥p。
应当理解的是,通过本实施例中加密后的文件,通过以下方式进行解密:获取二进制解密矩阵,并从密文文件中读取明文文件的长度s;根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p,其中,n≥8,p≥1;根据所述片段数p将密文文件划分为p个密文片段;从各个所述密文片段中读取f个字节的待解密数据;从各个字节的所述待解密数据中分离出对应的m个二进制密文数;根据所述二进制解密矩阵对各个所述二进制密文数进行解密,得到k个二进制明文;对k个所述二进制明文进行合并,得到f个字节的明文数据;将所述p个密文片段分别对应的f个字节的明文数据写入目标明文文件中。
在具体实现中,本实施例的加密算法和解密算法所使用的密匙本质上都是模m矩阵,m=2。同时,加密密匙与解密密匙是两个互逆的二进制方阵。
本实施例通过获取二进制加密矩阵,并获取明文文件对应的长度s;根据二进制加密矩阵对应的阶数n和明文文件对应的长度s确定明文文件对应的片段数p;根据片段数p将明文文件划分为p个明文片段;从各个明文片段中读取f个字节的待加密数据;从各个字节的待加密数据中分离出对应的m个二进制数;根据二进制加密矩阵对各个二进制数进行加密,得到k个二进制密文;对k个二进制密文进行合并,得到f个字节的密文数据;将p个明文片段分别对应的f个字节的密文数据以及明文文件对应的长度s写入密文文件中。通过上述方式,对明文文件进行字节分离,通过二进制加密矩阵对二进制数进行加密,重组合并为密文数据,实现了文件的单比特加密,使得文件加密的最小单元由字节变为比特,增加了非法用户对文件的解密难度,提升了计算机的安全性。
参考图2,图2为本发明文件加密方法第二实施例的流程示意图。
基于上述第一实施例,本实施例文件加密方法在所述步骤S20之前,还包括:
步骤S201:判断mod(s,n/8)>0是否成立,其中,n为所述二进制加密矩阵对应的阶数,mod()为求余函数。
若否,则执行所述步骤S20。
进一步地,所述步骤S201之后,所述方法还包括:
步骤S202:若是,则根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定待补零字节数。
其中,o为待补零字节数,n为二进制加密矩阵的阶数,s为明文文件的长度。
步骤S203:根据所述待补零字节数对所述明文文件进行补零处理,并确定补零处理后的明文文件对应的目标长度。
在具体实现中,对明文文件补充o个0,确定补零处理后的明文文件的目标长度s+o。
步骤S204:根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的目标长度确定明文文件对应的片段数p。
在一种实现方式中,将明文文件加密成密文文件的过程如下:
(1)统计出明文文件的大小size;
(2)将作为加密密匙的二进制矩阵导入内存a(i,j)(i,j=0,1,…,n-1)中;
(5)将明文文件的大小size写入密文文件中,以便文件解密;
(6)初始化已加密片段的计数器k=0;
(8)初始化加密长度为1的二进制明文的计数器i=0;
(9)根据式2)至9)将一个明文字节x(i)分离出8个长度为1的二进制明文tx(8i+j)(j=0,1,…,7);
(10)如果i<n,则使i=i+8;
(11)重复步骤(9)和(10),直到i≥n;
(12)根据式10)将n个长度为1的二进制明文tx(i)(i=0,1,…,n-1)加密成n个长度为1的二进制密文ty(i)(i=0,1,…,n-1);
(13)初始化长度为1的二进制密文计数器i=0;
(14)根据式11)将8个长度为1的二进制密文tx(8i+j)(j=0,1,…,7)合并成一个字节密文y(i);
(15)如果i<n,则使i=i+8;
(16)重复步骤(14)和(15),直到i≥n;
(18)如果k<cn,则使k=k+1;
(19)重复步骤(6)至(18),直到k≥cn;
(20)如果r>0,则执行下列操作:
1)从明文文件中读入剩余的r个字节无符号数x(j)(j=0,1,…,r-1);
3)初始化加密长度为1的二进制明文计数器i=0;
4)根据式2)至9)将一个明文字节x(i)分离出8个长度为1的二进制明文tx(8i+j)(j=0,1,…,7);
5)如果i<n,则使i=i+8;
6)重复步骤4)和5),直到i≥n;
7)根据式10)将n个长度为1的二进制明文tx(i)(i=0,1,…,n-1)加密成n个长度为1的二进制密文ty(i)(i=0,1,…,n-1);
8)初始化长度为1的二进制密文计数器i=0;
9)根据式11)将8个长度为1的二进制密文ty(8i+j)(j=0,1,…,7)合并成一个密文字节y(i);
10)如果i<n,则使i=i+8;
11)重复步骤9)和10),直到i≥n;
(21)加密结束。
本实施例通过判断mod(s,n/8)>0是否成立,其中,n为二进制加密矩阵对应的阶数,mod()为求余函数;若否,则执行根据二进制加密矩阵对应的阶数n和明文文件对应的长度s确定明文文件对应的片段数p的步骤;若是,则根据二进制加密矩阵对应的阶数n和明文文件对应的长度s确定待补零字节数;根据待补零字节数对明文文件进行补零处理,并确定补零处理后的明文文件对应的目标长度;根据二进制加密矩阵对应的阶数n和明文文件对应的目标长度确定明文文件对应的片段数p。通过上述方式,保证了文件任意长度下能够正常加密,提升了加密稳定性,通过二进制加密矩阵对二进制数进行加密,重组合并为密文数据,实现了文件的单比特加密,使得文件加密的最小单元由字节变为比特,增加了非法用户对文件的解密难度,提升了计算机的安全性。
参照图3,图3为本发明文件加密装置第一实施例的结构框图。
如图3所示,本发明实施例提出的文件加密装置包括:
获取模块10,用于获取二进制加密矩阵,并获取明文文件对应的长度s。
确定模块20,用于根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p,其中,n≥8,p≥1。
划分模块30,用于根据所述片段数p将明文文件划分为p个明文片段。
读取模块40,用于从各个所述明文片段中读取f个字节的待加密数据。
分离模块50,用于从各个字节的所述待加密数据中分离出对应的m个二进制数。
加密模块60,用于根据所述二进制加密矩阵对各个所述二进制数进行加密,得到k个二进制密文。
合并模块70,用于对k个所述二进制密文进行合并,得到f个字节的密文数据。
写入模块80,用于将所述p个明文片段分别对应的f个字节的密文数据以及所述明文文件对应的长度s写入密文文件中。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
本实施例通过获取二进制加密矩阵,并获取明文文件对应的长度s;根据二进制加密矩阵对应的阶数n和明文文件对应的长度s确定明文文件对应的片段数p;根据片段数p将明文文件划分为p个明文片段;从各个明文片段中读取f个字节的待加密数据;从各个字节的待加密数据中分离出对应的m个二进制数;根据二进制加密矩阵对各个二进制数进行加密,得到k个二进制密文;对k个二进制密文进行合并,得到f个字节的密文数据;将p个明文片段分别对应的f个字节的密文数据以及明文文件对应的长度s写入密文文件中。通过上述方式,对明文文件进行字节分离,通过二进制加密矩阵对二进制数进行加密,重组合并为密文数据,实现了文件的单比特加密,使得文件加密的最小单元由字节变为比特,增加了非法用户对文件的解密难度,提升了计算机的安全性。
在一实施例中,所述加密模块60,还用于根据所述二进制加密矩阵和各个所述明文片段对应的k个二进制数进行计算,得到k个初始二进制密文;求取各个所述初始二进制密文与预设数值之间的余数,得到k个二进制密文。
在一实施例中,所述确定模块20,还用于判断mod(s,n/8)>0是否成立,其中,n为所述二进制加密矩阵对应的阶数,mod()为求余函数;若否,则执行所述根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p的步骤。
在一实施例中,所述确定模块20,还用于若是,则根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定待补零字节数;根据所述待补零字节数对所述明文文件进行补零处理,并确定补零处理后的明文文件对应的目标长度;根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的目标长度确定明文文件对应的片段数p。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的文件加密方法,此处不再赘述。
本发明实施例提供了一种文件解密方法,参照图4,图4为本发明文件解密方法第一实施例的流程示意图。
本实施例中,所述文件解密方法包括:
步骤S01:获取二进制解密矩阵,并从密文文件中读取明文文件的长度s。
应当理解的是,本实施例的执行主体为文件解密设备,所述文件解密设备可以为计算机、服务器、手机、平板等设备,还可以为其他具备相同或相似功能的设备,本实施例对此不加以限制。
在具体实现中,所述密文文件为通过特定的文件加密方式加密得到的,本实施例的特定的文件加密方式为:获取二进制加密矩阵,并获取明文文件对应的长度s;根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p,其中,n≥8,p≥1;根据所述片段数p将明文文件划分为p个明文片段;从各个所述明文片段中读取f个字节的待加密数据;从各个字节的所述待加密数据中分离出对应的m个二进制数;根据所述二进制加密矩阵对各个所述二进制数进行加密,得到k个二进制密文;对k个所述二进制密文进行合并,得到f个字节的密文数据;将所述p个明文片段分别对应的f个字节的密文数据以及所述明文文件对应的长度s写入密文文件中。
需要说明的是,本实施例的加密算法和解密算法所使用的密匙本质上都是模m矩阵,m=2。同时,二进制加密矩阵与二进制解密矩阵是两个互逆的二进制方阵。
应当理解的是,为了便于对本实施例提出的文件解密方法进行解释说明,做出如下约定:
(1)用a(i,j)(i,j=0,1,…,n-1)存储n阶二进制解密矩阵,其中,n为二进制解密矩阵对应的阶数;
(4)用tx(i)(i=0,1,…,n-1)存储n个长度为1的二进制密文;
(5)用ty(i)(i=0,1,…,n-1)存储n个长度为1的二进制明文。
需要说明的是,从密文文件中读取加密时写入的明文文件长度s,将作为解密密钥的二进制解密矩阵导入内存a(i,j)(i,j=0,1,…,n-1)中。
步骤S02:根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p,其中,n≥8,p≥1。
在具体实现中,判断mod(s,n/8)>0是否成立,若是,则通过上述公式1)计算密文文件对应的片段数p,若否,则p=p+1。
步骤S03:根据所述片段数p将密文文件划分为p个密文片段。
步骤S04:从各个所述密文片段中读取f个字节的待解密数据。
步骤S05:从各个字节的所述待解密数据中分离出对应的m个二进制密文数。
需要说明的是,本实施例的m=8,将每个字节的待解密数据分离为8位的二进制密文数。可选地,通过以下方式从一个密文字节x(i)分离出8个长度为1的二进制没恩数:x(i)除以2,得到第一商数和第一余数;通过第一商数除以2,得到第二商数和第二余数;依此类推,最终计算得到第一-第八余数,将第一-第八余数倒序排列,得到8个二进制密文数。
在具体实现中,初始化解密长度为1的二进制密文的计数器i=0,依次从中读取密文字节,根据上述公式2)-9)分离出8个长度为1的二进制密文数,如果i<n,则使i=i+8,并重新从中读取密文字节,直到i≥n。
步骤S06:根据所述二进制解密矩阵对各个所述二进制密文数进行解密,得到k个二进制明文。
应当理解的是,将上述公式2)-9)执行次,将中个字节的无符号数转化为n个长度为1的二进制密文数tx(i)(i=0,1,…,n-1)。在二进制解密矩阵a(i,j)(i,j=0,1,…,n-1)的作用下,将tx(i)(i=0,1,…,n-1)解密成n个长度为1的二进制明文ty(i)(i=0,1,…,n-1)。
具体地,所述步骤S06,包括:根据所述二进制解密矩阵和各个所述密文片段对应的k个二进制密文数进行计算,得到k个初始二进制明文;求取各个所述初始二进制明文与预设数值之间的余数,得到k个二进制明文。
应当理解的是,预设数值为2,通过上述公式10)对二进制密文数进行解密,得到k(即n)个二进制明文。
步骤S07:对k个所述二进制明文进行合并,得到f个字节的明文数据。
在具体实现中,初始化长度为1的二进制明文计数器i=0,通过上述公式11)将8个长度为1的二进制明文合并为一个字节的明文数据,如果8i<n,则使i=i+1,重复执行公式11),直到8i≥n。将上述公式11)执行次,从而将n个二进制明文合并为个字节的明文数据。
步骤S08:将所述p个密文片段分别对应的f个字节的明文数据写入目标明文文件中。
进一步地,为了提升文件解密准确度,所述步骤S01之后,所述方法还包括:获取所述密文文件对应的密文长度;根据所述二进制解密矩阵对应的阶数n和所述明文文件的长度s对所述密文长度进行校验;在校验通过后,执行所述根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p的步骤。
应当理解的是,通过判断以下公式13)是否成立来验证密文长度是否正确:
其中,d为密文文件长度,s为明文文件长度,n为二进制解密矩阵的阶数。
进一步地,所述步骤S01之后,所述方法还包括:根据所述明文文件的长度s对所述密文文件中的补零字节进行删除,得到更新后的密文文件。
需要说明的是,密文文件比明文文件大,一方面为解密需要在密文文件中存储有明文文件长度s,另一方面,可能存储有由于字节长度不够而额外补零的数据。将密文文件解密得到的明文文件中的补零字节进行删除,具体将前s长度的字节存储,将d-s长度的补零字节进行删除。
在一种实现方式中,将密文文件解密成明文文件的过程如下:
(1)从密文文件中读入明文文件的大小size;
(2)将作为解密密匙的二进制解密矩阵导入计算机内存a(i,j)(i,j=0,1,…,n-1)中;
(5)初始化解密片段计数器k=0;
(7)初始化解密长度为1的二进制明文计数器i=0;
(8)根据式2)至9)将一个密文字节x(i)分离出8个二进制密文tx(8i+j(i=0,1,…,7);
(9)如果i<n,则使i=i+8;
(10)重复步骤(8)和(9),直到i≥n;
(11)根据式10)将二进制密文tx(i)(i=0,1,…,n-1)解密成二进制明文ty(i)(i=0,1,…,n-1);
(12)初始化长度为1的二进制明文计数器i=0;
(13)根据式11)将8个二进制明文ty(8i+j)(j=0,1,…,7)合并成一个明文字节y(i);
(14)如果i<n,则使i=i+8;
(15)重复步骤(13)和(14),直到i≥n;
(17)如果k<cn,则使k=k+1;
(18)重复步骤(5)至(17),直到k≥cn;
(19)如果r>0,则执行下列操作:
2)初始化解密长度为1的二进制密文计数器i=0;
3)根据式2)至9)将一个密文字节x(i)分离出8个二进制密文tx(8i+j)(j=0,1,…,7);
4)如果i<n,则使i=i+8;
5)重复步骤3)和4),直到i≥n;
6)根据式(9)将二进制密文tx(i)(i=0,1,…,n-1)解密成二进制明文ty(i)(i=0,1,…,n-1);
7)初始化长度为1的二进制密文计数器i=0;
8)根据式11)将8个二进制明文ty(8i+j)(j=0,1,…,7)合并成一个明文字节y(i);
9)如果i<n,则使i=i+8;
10)重复步骤9)和10),直到i≥n;
11)将密文y(i)(i=0,1,…,r-1)写入明文文件中;
(20)密文文件解密结束。
本实施例通过获取二进制解密矩阵,并从密文文件中读取明文文件的长度s;根据二进制解密矩阵对应的阶数n和长度s确定密文文件对应的片段数p;根据片段数p将密文文件划分为p个密文片段;从各个密文片段中读取f个字节的待解密数据;从各个字节的待解密数据中分离出对应的m个二进制密文数;根据二进制解密矩阵对各个二进制密文数进行解密,得到k个二进制明文;对k个二进制明文进行合并,得到f个字节的明文数据;将p个密文片段分别对应的f个字节的明文数据写入目标明文文件中。通过上述方式,对密文文件进行字节分离,通过二进制解密矩阵对二进制密文数进行解密,重组合并为明文数据,实现了文件的单比特解密,使得文件解密的最小单元由字节变为比特,增加了非法用户对文件的解密难度,提升了计算机的安全性。
参照图5,图5为本发明文件解密装置第一实施例的结构框图。
如图5所示,本发明实施例提出的文件解密装置包括:
获取模块01,用于获取二进制解密矩阵,并从密文文件中读取明文文件的长度s。
确定模块02,用于根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p,其中,n≥8,p≥1。
划分模块03,用于根据所述片段数p将密文文件划分为p个密文片段。
读取模块04,用于从各个所述密文片段中读取f个字节的待解密数据。
分离模块05,用于从各个字节的所述待解密数据中分离出对应的m个二进制密文数。
解密模块06,用于根据所述二进制解密矩阵对各个所述二进制密文数进行解密,得到k个二进制明文。
合并模块07,用于对k个所述二进制明文进行合并,得到f个字节的明文数据。
写入模块08,用于将所述p个密文片段分别对应的f个字节的明文数据写入目标明文文件中。
本实施例通过获取二进制解密矩阵,并从密文文件中读取明文文件的长度s;根据二进制解密矩阵对应的阶数n和长度s确定密文文件对应的片段数p;根据片段数p将密文文件划分为p个密文片段;从各个密文片段中读取f个字节的待解密数据;从各个字节的待解密数据中分离出对应的m个二进制密文数;根据二进制解密矩阵对各个二进制密文数进行解密,得到k个二进制明文;对k个二进制明文进行合并,得到f个字节的明文数据;将p个密文片段分别对应的f个字节的明文数据写入目标明文文件中。通过上述方式,对密文文件进行字节分离,通过二进制解密矩阵对二进制密文数进行解密,重组合并为明文数据,实现了文件的单比特解密,使得文件解密的最小单元由字节变为比特,增加了非法用户对文件的解密难度,提升了计算机的安全性。
在一实施例中,所述解密模块06,还用于根据所述二进制解密矩阵和各个所述密文片段对应的k个二进制密文数进行计算,得到k个初始二进制明文;求取各个所述初始二进制明文与预设数值之间的余数,得到k个二进制明文。
在一实施例中,所述文件解密装置还包括校验模块;
所述校验模块,用于获取所述密文文件对应的密文长度;根据所述二进制解密矩阵对应的阶数n和所述明文文件的长度s对所述密文长度进行校验;在校验通过后,执行所述根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p的步骤。
在一实施例中,所述获取模块01,还用于根据所述明文文件的长度s对所述密文文件中的补零字节进行删除,得到更新后的密文文件。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的文件解密方法,此处不再赘述。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read OnlyMemory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种文件加密方法,其特征在于,所述文件加密方法包括:
获取二进制加密矩阵,并获取明文文件对应的长度s;
根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p,其中,n≥8,p≥1;
根据所述片段数p将明文文件划分为p个明文片段;
从各个所述明文片段中读取f个字节的待加密数据;
从各个字节的所述待加密数据中分离出对应的m个二进制数;
根据所述二进制加密矩阵对各个所述二进制数进行加密,得到k个二进制密文;
对k个所述二进制密文进行合并,得到f个字节的密文数据;
将所述p个明文片段分别对应的f个字节的密文数据以及所述明文文件对应的长度s写入密文文件中。
2.如权利要求1所述的文件加密方法,其特征在于,所述根据所述二进制加密矩阵对各个所述二进制数进行加密,得到k个二进制密文,包括:
根据所述二进制加密矩阵和各个所述明文片段对应的k个二进制数进行计算,得到k个初始二进制密文;
求取各个所述初始二进制密文与预设数值之间的余数,得到k个二进制密文。
3.如权利要求1所述的文件加密方法,其特征在于,所述根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p之前,所述方法还包括:
判断mod(s,n/8)>0是否成立,其中,n为所述二进制加密矩阵对应的阶数,mod()为求余函数;
若否,则执行所述根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p的步骤。
4.如权利要求3所述的文件加密方法,其特征在于,所述判断mod(s,n/8)>0是否成立之后,所述方法还包括:
若是,则根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定待补零字节数;
根据所述待补零字节数对所述明文文件进行补零处理,并确定补零处理后的明文文件对应的目标长度;
根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的目标长度确定明文文件对应的片段数p。
5.一种文件加密装置,其特征在于,所述文件加密装置包括:
获取模块,用于获取二进制加密矩阵,并获取明文文件对应的长度s;
确定模块,用于根据所述二进制加密矩阵对应的阶数n和所述明文文件对应的长度s确定所述明文文件对应的片段数p,其中,n≥8,p≥1;
划分模块,用于根据所述片段数p将明文文件划分为p个明文片段;
读取模块,用于从各个所述明文片段中读取f个字节的待加密数据;
分离模块,用于从各个字节的所述待加密数据中分离出对应的m个二进制数;
加密模块,用于根据所述二进制加密矩阵对各个所述二进制数进行加密,得到k个二进制密文;
合并模块,用于对k个所述二进制密文进行合并,得到f个字节的密文数据;
写入模块,用于将所述p个明文片段分别对应的f个字节的密文数据以及所述明文文件对应的长度s写入密文文件中。
6.一种文件解密方法,其特征在于,所述文件解密方法包括:
获取二进制解密矩阵,并从密文文件中读取明文文件的长度s;
根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p,其中,n≥8,p≥1;
根据所述片段数p将密文文件划分为p个密文片段;
从各个所述密文片段中读取f个字节的待解密数据;
从各个字节的所述待解密数据中分离出对应的m个二进制密文数;
根据所述二进制解密矩阵对各个所述二进制密文数进行解密,得到k个二进制明文;
对k个所述二进制明文进行合并,得到f个字节的明文数据;
将所述p个密文片段分别对应的f个字节的明文数据写入目标明文文件中。
7.如权利要求6所述的文件解密方法,其特征在于,所述根据所述二进制解密矩阵对各个所述二进制密文数进行解密,得到k个二进制明文,包括:
根据所述二进制解密矩阵和各个所述密文片段对应的k个二进制密文数进行计算,得到k个初始二进制明文;
求取各个所述初始二进制明文与预设数值之间的余数,得到k个二进制明文。
8.如权利要求6所述的文件解密方法,其特征在于,所述获取二进制解密矩阵,并从密文文件中读取明文文件的长度s之后,所述方法还包括:
获取所述密文文件对应的密文长度;
根据所述二进制解密矩阵对应的阶数n和所述明文文件的长度s对所述密文长度进行校验;
在校验通过后,执行所述根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p的步骤。
9.如权利要求8所述的文件解密方法,其特征在于,所述获取二进制解密矩阵,并从密文文件中读取明文文件的长度s之后,所述方法还包括:
根据所述明文文件的长度s对所述密文文件中的补零字节进行删除,得到更新后的密文文件。
10.一种文件解密装置,其特征在于,所述文件解密装置包括:
获取模块,用于获取二进制解密矩阵,并从密文文件中读取明文文件的长度s;
确定模块,用于根据所述二进制解密矩阵对应的阶数n和所述长度s确定所述密文文件对应的片段数p,其中,n≥8,p≥1;
划分模块,用于根据所述片段数p将密文文件划分为p个密文片段;
读取模块,用于从各个所述密文片段中读取f个字节的待解密数据;
分离模块,用于从各个字节的所述待解密数据中分离出对应的m个二进制密文数;
解密模块,用于根据所述二进制解密矩阵对各个所述二进制密文数进行解密,得到k个二进制明文;
合并模块,用于对k个所述二进制明文进行合并,得到f个字节的明文数据;
写入模块,用于将所述p个密文片段分别对应的f个字节的明文数据写入目标明文文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210862133.4A CN115344875A (zh) | 2022-07-20 | 2022-07-20 | 文件加密、文件解密方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210862133.4A CN115344875A (zh) | 2022-07-20 | 2022-07-20 | 文件加密、文件解密方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115344875A true CN115344875A (zh) | 2022-11-15 |
Family
ID=83950984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210862133.4A Pending CN115344875A (zh) | 2022-07-20 | 2022-07-20 | 文件加密、文件解密方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115344875A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795520A (zh) * | 2023-02-07 | 2023-03-14 | 济南霍兹信息科技有限公司 | 一种用于计算机系统的数据管理方法 |
-
2022
- 2022-07-20 CN CN202210862133.4A patent/CN115344875A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795520A (zh) * | 2023-02-07 | 2023-03-14 | 济南霍兹信息科技有限公司 | 一种用于计算机系统的数据管理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8284933B2 (en) | Encrypting variable-length passwords to yield fixed-length encrypted passwords | |
US9489521B2 (en) | Format preserving encryption methods for data strings with constraints | |
CN1993922B (zh) | 流密码组合系统和方法 | |
CA2162125C (en) | A repertoire of mappings for a cryptosystem | |
US8340295B2 (en) | High-speed cryptographic system using chaotic sequences | |
US8180048B2 (en) | Method and system for computational transformation | |
WO2019237550A1 (zh) | 加密方法、装置、终端设备及存储介质 | |
US8600048B1 (en) | Format-translating encryption systems | |
KR101112157B1 (ko) | 데이터 암호화 방법 | |
US20190288841A1 (en) | Method and system for securely storing data using a secret sharing scheme | |
Amalarethinam et al. | Image encryption and decryption in public key cryptography based on MR | |
CN108063760B (zh) | 一种分组加密的方法及其系统、分组解密的方法 | |
CN116894273B (zh) | 基于异或和求余的文件加密方法、解密方法、设备及介质 | |
CN106982116B (zh) | 一种基于可逆逻辑电路的aes的本地文件加密方法 | |
CN115344875A (zh) | 文件加密、文件解密方法及装置 | |
CN117708847B (zh) | 基于数据压缩与加密的3c产品租赁平台数据处理方法 | |
WO2002054664A2 (en) | R-conversion encryption method and system | |
CN115344874A (zh) | 文件加密、文件解密方法及装置 | |
CN115766244A (zh) | 车联网信息加密方法、装置、计算机设备和存储介质 | |
CN113541942B (zh) | 基于arx白盒分组密码的数字内容加解密方法 | |
KR101790325B1 (ko) | 암호화 및 복호화 시스템 | |
KR101757768B1 (ko) | 데이터 암호화 방법과 이를 수행하기 위한 장치 및 시스템 | |
KR100308893B1 (ko) | 엘.에프.에스.알을 이용한 확장 알.씨.4 암호화 방법 | |
CN116484443B (zh) | 一种基于鸿蒙系统的可信安全存储方法及装置 | |
CN111342951B (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 |