CN109951268A - 基于位置换和位变换的加密解密方法和装置 - Google Patents
基于位置换和位变换的加密解密方法和装置 Download PDFInfo
- Publication number
- CN109951268A CN109951268A CN201910119852.5A CN201910119852A CN109951268A CN 109951268 A CN109951268 A CN 109951268A CN 201910119852 A CN201910119852 A CN 201910119852A CN 109951268 A CN109951268 A CN 109951268A
- Authority
- CN
- China
- Prior art keywords
- key
- stream
- pointer
- plaintext
- file
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/001—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using chaotic signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种基于位置换和位变换的加密解密方法和装置。其中方法包括步骤:S1、开辟内存空间,为明文文件、密文文件及密钥文件准备对应的存储空间,其中初始的密钥文件来自于的已知编码序列,并且作为加密和解密的共用文件;S2、按照位运算规则以改变初始的密钥流的位值,从而得到位变换的密钥流,然后按照依赖于密钥流的位运算规则改变明文的位值;S3、在已经过位变换的明文流的基础上,按照依赖于密钥流的位置换规则,对位变换后的明文流进行位置换运算,并将其随机散布在密文流中,从而得到目标密文后储存为文件。其中装置包括存储器和处理器,以被配置为实施上述方法。本发明的技术方案具有高安全性、强适用性和广应用范围。
Description
技术领域
本发明涉及一种基于位置换和位变换的加密解密方法和装置,属于数字通信技术及信息加密领域。本发明一般可以用于网络通信信息加密,航天数字遥控指令与数据加密,无人机数字遥控通信数据加密,预警机数字通信指挥系统信息加密,GPS卫星数字通信数据加密,手机通信加密,电子邮件加密,电子金融数据传输加密等。在影像编码方面,可对各种格式影像加密,保护影像知识产权。对于军事、政治、外交文件加密后,可利用民用通信网络传输,节省文件传送成本。
背景技术
流密码(stream cipher),通常是一种对称密钥技术,因其实施简单、加密速度快,密文传输中的错误不会在明文中产生扩散等好处,而成为一类重要的密码体制。目前流密码技术在机密机构以及移动通讯领域中仍保持着优势,是当今最为通用的密码系统之一。为保障信息安全,很多流密码技术的研发和设计基本上都是在保密的状态下进行。各国常将流密码技术和产品,作为军工产品而限制出口。
现在的流密码的研究方向,主要集中在密钥流生成器的设计和对密钥流的攻击手段上,通常是以数学模型为基础的,使用复杂的代数运算、布尔运算、伪随机数、线性移位寄存器、钟控序列;组合网络序列、元胞自动机、混沌理论等,完成流密码的加密、解密以及攻击。在密钥流生成器的设计方面比较成功的方法有A5、RC4、K2等。经过多年的研究,很多学者已经掌握了攻击和破译上述方法的手段。2003年,Courtois和Meier在欧洲密码学年会上将代数攻击应用于基于线性反馈移位寄存器的流密码算法,“代数攻击”作为流密码领域研究的新热点,从新的角度来分析密码体制的安全性,将其转化到求解超定的多变元方程组的问题上,对传统的密码体系的设计产生了巨大的冲击。
1.传统的流密码技术的特点
(1)传统流密码技术的关键是通过各种各样的密钥流生成器,产生(伪)随机序列作为密钥流,因此,对流密码的攻击也都集中在对密钥流生成器的攻击。
(2)传统的流密码技术通过密钥流跟明文的异或运算,随机将1变成0,将0变成1从而得到密文;解密时通过密钥流跟明文的异或运算,还原出原始的二进制字符,从而得到明文。因此,流密码的本质是按某种规则对明文进行二进制位上的变换从而得到密文。
2.本专利申请的流密码新方法的技术要点
由Tony Hoare提出的快速排序算法被评为20世纪十大算法,其主要思想基于元素的置换。由麻省理工学院的Ron Rivest开发的流密码RC4方法,也许是世界上使用最广泛的流密码,其主要思想基于对初始密钥流的置换进而产生密钥流。
由此,我们想到为何不根据某种依赖于密钥流的规则直接对明文进行位置换和位变换,进而产生密文。而传统的流密码中出现的置换规则都是应用于密钥流的。
发明内容
本发明的方法是流密码加解密领域的一种创新方法,其与以往的传统流密码加密技术的不同点在于不依赖于异或运算,而是基于明文二进制位流上的置换与变换操作,且对密钥流的均匀度不做严格要求。本发明的方法与传统流密码技术的另一个重要区别在于,本方法采用的置换规则用于明文,而不是密钥流。
本发明的方法借助一串现有的已知编码序列作为初始密钥流(可称为真随机序列)。初始密钥流可来自于各种类型的文件,如:文档、音频、视频、图片等,也可以来自各种密钥流生成器产生的伪随机序列以及各种混沌信号等,即初始密钥流在二进制上的编码均匀性对本算法影响较小。在现在技术的前提下,当密钥长度为128比特时,用穷举法(暴力法)搜索密钥在计算机上几乎不可能实现。
本发明的技术方案第一方面为一种基于位置换和位变换的加密解密方法,所述方法包括以下步骤:
S1、开辟内存空间,为明文文件、密文文件及密钥文件准备对应的存储空间,其中初始的密钥文件来自已知编码序列,并且作为加密和解密的共用文件;
S2、按照位运算规则以改变初始的密钥流的位值,从而得到位变换的密钥流,然后按照依赖于密钥流的位运算规则改变明文的位值;
S3、在已经过位变换的明文流的基础上,按照依赖于密钥流的位置换规则,对位变换后的明文流进行位置换运算,并将其随机散布在密文流中,从而得到目标密文后储存为文件。
进一步,所述步骤S1包括:
初始化明文文件,加载需要加密的明文文件,设置密钥文件码元个数,其中密钥文件的字节长度能进行自定义设置;
用于初始的密钥文件的编码序列来自于文本文档、音频、视频、图片、图像、图形、伪随机码、混沌值中的任一者或者任意多者的组合。
进一步,所述步骤S2包括:
借助各种密钥流生成器产生的伪随机序列和各种混沌信号,或者借助任意的在二进制上码分布均匀的随机文件,以提供位变换运算规则。
进一步,在所述步骤S2中,所述的位运算规则包括以下运算规则中的任意一种或者任意多种的组合:
规则1:将满足以下布尔函数的二进制位进行取反
F(j)=(C+X×j)MOD Y==Z,
其中,C、X、Z为事先确定的整数,Y为质数,j为密钥流二进制位的编号;“MOD”表示求余运算,“==”表示判断相等运算;
规则2:根据密钥流的真值位或假值位取反。
进一步,所述步骤S3包括:
将位变换后的明文流进行一次或多次的分组位置换;和/或
将初始密文作为参数进行一次或多次的分组位置换;
以得到一次或多次加密后的密文文件。
进一步,在所述步骤S3中,所述的位置换运算步骤包括:
S311、在每个分组内设置双端指针,该两个指针的取值是由明文、密钥二进制流构成的循环队列的合法位置,并且该两个指针的初始距离被配置为明文、密钥的二进制流的长度;
S312、第一趟扫描明文、密钥,相向移动第一指针和第二指针,当第一指针和第二指针均指向密钥流的假值位时,置换明文的位值;
S313、重新设置分组内的双端指针,这两个指针相向移动,并且取值能够是明文、密钥二进制流构成的循环队列的合法位置,并且该指针的重置距离为明文、密钥的二进制流的长度;
S314、第二趟扫描明文、密钥,相向移动第一指针和第二指针,当第一指针和第二指针均指向密钥流的真值位时,置换明文的位值。
进一步,在所述步骤S3中,所述的位置换运算步骤包括:
S321、在每个分组内设置双端指针,使这两个指针进行同向或相向移动,该两个指针的取值是由明文、密钥二进制流构成的循环队列的合法位置,并且对该两个指针的初始距离不进行配置;
S322、只扫描明文、密钥一趟,移动第一指针和第二指针,当第一指针指向密钥流的假值位,第二指针指向密钥流的真值位时,置换第一指针和第二指针对应的明文的位值,当其中一个指针已经绕明文或密钥的循环队列走一圈时结束;
S323、在指针结束位置进行明文的位值置换。
进一步,上述的方法,还包括:对所述明文文件、密文文件和密钥文件分别创建对应的明文加密随机数、密文加密随机数和密钥加密随机数,根据加密随机数的值生成对应的工作指针;对明文文件、密文文件、密钥文件进行工作指针位移读取;对工作指针进行多次循环遍历,同时根据工作指针所指向的密钥流二进制位的值,对明文文件进行多次迭代,得到密文文件。
本发明的技术方案第二方面为一种计算机装置,包括存储器、处理器及储存在存储器上并能够在处理器上运行的计算机程序,所述处理器执行所述程序时实施上述的步骤。
本发明的技术方案第三方面也可以为一种计算机可读存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实施上述的步骤。
本发明的技术方案的特点在于:
1.对明文位流的置换与变换规则是本方法的核心,这也是本方法与传统的流密码方法最大的区别。
2.初始密钥流来源广泛,对初始密钥流的码均匀度要求不高,即初始密钥流的码均匀度对本算法影响较小。这是本方法与传统流密码技术的另一重要区别。
3.密钥流发生器基于位运算规则设计。初始密钥可以是任意长度的,随着密钥字节长度的增加,其加密复杂度也随之增加。
4.使用计算机算法与编程,可以很容易地在软件中实现本方法,且时间和空间复杂度不高于传统方法。
5.具有很强的随机性和不可预测性,方法简单,破译极难。
6.本加密方法中明文与密文间不是传统的一对一、一对多的关系。而是无序加密,即明文与密文间的关系是最复杂的多对多的关系。
7.密码均匀度高于传统的流密码方法加密的密码均匀度。
8.本技术遵循了Shannon提出的一次一密的密码体制。
9.可在现有的、公开的通信信道进行传输。
10.可采用明文加密、发送、接收,解密实行三分离原则,使得保密系统更加安全。
附图说明
图1是根据本发明的方法的总体流程图。
图2所示为根据本发明实施例中的初始密钥流的位变换过程。
图3所示为根据本发明实施例中的明文流的位变换过程。
图4所示为根据本发明实施例中的明文流的一趟无分组位置换过程。
图5所示为根据本发明实施例中的初始密钥流的扩展ASCII码表示。
图6所示为根据本发明实施例中的初始密钥流经位变换后得到密钥流。
图7所示为根据本发明实施例中的应用本发明的方法加密后产生的密文。
图8所示为根据本发明实施例中的应用传统的方法加密后产生的密文。
图9所示为根据本发明实施例中的密文流的一趟无分组位置换过程。
图10所示为根据本发明实施例中的伪明文流的位变换过程。
具体实施方式
以下将结合实施例和附图,分四个部分对本发明的基本思想、加密实例、解密实例和具体实施例进行清楚、完整的描述,以充分地帮助理解本发明的目的、方案和效果。
一、本发明的基本思想
区别于传统的流密码中出现的置换规则都是应用于密钥流,本发明的方法根据某种依赖于密钥流的规则直接对明文进行位置换和位变换,进而产生密文。参照图1,根据本发明的方法总体包括步骤:S1、开辟内存空间,为明文文件、密文文件及密钥文件准备对应的存储空间,其中初始的密钥文件来自于的已知编码序列,并且作为加密和解密的共用文件;S2、按照位运算规则以改变初始的密钥流的位值,从而得到位变换的密钥流,然后按照依赖于密钥流的位运算规则改变明文的位值;S3、在已经过位变换的明文流的基础上,按照依赖于密钥流的位置换规则,对位变换后的明文流进行位置换运算,并将其随机散布在密文流中,从而得到目标密文后储存为文件。其中,借助一串现有的已知编码序列(可称为真随机序列)作为初始密钥流。初始密钥流可来自于各种类型的文件,如:文档、音频、视频、图片等,也可以来自各种密钥流生成器产生的伪随机序列以及各种混沌信号等。此外还可以尝试以初始密文C为参数进行多次分组置换,得到多次加密后的密文Cn,进一步提高信息的随机性和不可预测性。
在本实施例的方案中,若仅依靠置换规则加密,在传输特殊信号,如:全0值或全1值时容易被破译,位变换规则的引入可以避免这种情况的发生。使用该方法,不但能得到离散分布的密文,而且散列函数和位运算的使用使得密文的码均匀度远远高于明文的码均匀度。通过设计不同的置换规则和位变换规则,就构成了加解密算法集,置换规则、位变换规则以及密钥的不确定性是本算法的优势。
本算法基于数据流加密技术,是一种依赖密钥而建立的一种二进制流离散的位映射的加密体系。该加密体系采用五元组(M,C,K,E,D)作为加解密的理论基础。在本文提出的五元组中,M为明文码元集合,C为密码码元集合,P为参照字节码元集合(也可称为密钥集合),E为加密算法集合,D为解密算法集合,这些集合具有如下特性:
1.M={M0,M1,…,Mlen(M)-1}={m0,m1,…,m8len(M)-2,m8×len(M)-1}。其中:len(M)为明文的字节数,8×len(M)为明文的二进制位数;Mi(i∈[0,len(M)-1])为明文的一个字节(byte);mj∈{0,1},j∈[0,8×len(M)-1]为明文的一个二进制位(bit)。
2.K={K0,K1,…,Klen(K)-1}={key0,key1,…,key8len(K)-2,key8×len(K)-1}。其中:len(K)为密钥的字节数,8×len(K)为密钥的二进制位数;Ki(i∈[0,len(K)-1])为密钥的一个字节(byte);keyj∈{0,1},j∈[0,8×len(K)-1]为密钥的一个二进制位(bit)。
3.C={C0,C1,…,Clen(C)-1}={c0,c1,…,c8len(C)-2,c8×len(C)-1}。其中:len(C)为密文的字节数,len(C)=len(M)即明文的长度与密文的长度相等,8×len(C)为密文的二进制位数;Ci(i∈[0,len(C)-1])为密文的一个字节(byte);cj∈{0,1},j∈[0,8×len(C)-1]为密文的一个二进制位(bit)。
4.M,K,C集合内的信息是由二进制码元{0,1}组成的字节符集。其中,码元{1}在各集合中的数量分别记作sum(M),sum(K),sum(C),其中sum(M)未必等于sum(C)。
5.加密算法集合E的元素为用于加密运算的位置换与位变换规则集合。
6.解密算法集合D的元素为用于解密运算的位置换与位变换规则集合,其中集合E中的规则应在集合D中存在唯一的规则与之对应,并且加密规则与解密规则是互逆的。
下面通过实施例来描述本发明的加密和解密方案。
二、加密实例
为演示根据本发明的方法的执行流程,例1、例2、例4均采用较简单的置换规则,即所有元素(明文的二进制位)为一组进行置换。例3为了演示根据本发明的方法的码均匀度而采用了分组置换。
例1:
假设文件均采用扩展的ASCII码(IBM扩展字符集)作为编码方式,根据方法1所示的加密算法,例1中的初始密钥流K通过位变换得到密钥K’,对明文M参照密钥K’进行位变换得到M’,再对变换后的明文M’按照密钥流进行位置换最终求得密文C。
K={“1234”}={0X31,0X32,0X33,0X34}16={00110001,00110010,00110011,00110100}2。
K’={0XA3,0X7B,0X17,0XA6}16={10100011,01111011,00010111,10100110}2。
M={“aaaa”}={0X61,0X61,0X61,0X61}16={01100001,01100001,01100001,01100001}2。
M’={0X3D,0XE5,0X89,0X38}16={00111101,11100101,10001001,00111000}2。
C={“→┬k■”}={0X1A,0XC2,0X6B,0XDC}16={00011010,11000010,01101011,11011100}2。
初始密钥流的位变换过程还可以参照图2。明文流的位变换过程可以参照图3。明文流的一趟无分组位置换过程可以参照图4。
说明:
1.K={“1234”}表示初始密钥。{0X31,0X32,0X33,0X34}是初始密钥“1234”的扩展ASCII码(十六进制),将其转换为二进制得到{00110001,00110010,00110011,00110100}。
2.K’表示对初始密钥K的特定位进行位变换后得到的最终的密钥,{0XA3,0X7B,0X17,0XA6}是其扩展ASCII码(十六进制)表示,将其转换为二进制得到{10100011,01111011,00010111,10100110}。
3.M={“aaaa”}表示明文,为加密输入序列。{0X61,0X61,0X61,0X61}是明文“aaaa”的扩展ASCII码(十六进制),将其转换为二进制得到{01100001,01100001,01100001,01100001}。
4.M’表示明文的部分二进制位根据密钥的特定位(“假”值二进制位)按位取反后产生的伪明文序列。{0X3D,0XE5,0X89,0X38}是M’的扩展ASCII码(十六进制),将其转换为二进制得到{00111101,11100101,10001001,00111000},如图3所示。
5.C={“→┬k■”}表示密文,为加密输出序列。{0X1A,0XC2,0X6B,0XDC}是将密文“→┬k■”的扩展ASCII码(十六进制),将其转换为二进制得到{00011010,11000010,01101011,11011100},如图4所示。
6.明文、密钥和密文均采用形如循环队列的逻辑结构,可在队列任意位置开始计算,现取位序初值i1=0、j1=0、k1=0、i2=31、j2=31、k2=31,因此,工作指针p1、p2指向明文M[0]、M[31],q1、q2指向密钥K[0]、K[31],r1、r2指向密文C[0]、C[31]。
7.本例中对初始密钥流应用的位变换规则为:将初始密钥流中满足公式(C+X×j)MOD Y=Z的二进制位取反,其中:j称为“位序”,是密钥流二进制位的编号,在本例中从0开始。C、X、Y、Z为事先确定的整数,在本例中分别为0,1,3,0。在图2中,初始密钥K的灰色底纹部分表示满足上述公式的特定位。
8.本例中对明文应用的位变换规则为:根据密钥K’的特定位按位取反,在本例中为“假”值二进制位。明文M中灰色底纹表示密钥K’的“假”值部分所对应的明文,伪明文序列M’中灰色底纹部分为明文M中灰色底纹部分按位取反后的结果。在图3中,明文M的灰色底纹部分表示满足上述公式的特定位。
9.本例中对明文应用的位置换规则为:同时双向扫描伪明文流M’、密钥流K’、密文空间C的对应位,i1和i2、j1和j2、k1和k2同时相向移动。在第一趟扫描过程中,当K’[j1]和K’[j2]均为假值时,交换M’[i1]和M’[i2]后存储在C[k1]和C[k2];在第二趟扫描过程中,当K’[j1]和K’[j2]均为真值时,交换M’[i1]和M’[i2]后存储在C[k1]和C[k2],最终得到的密文如图4所示。
例2:
假设文件均采用扩展的ASCII码(IBM扩展字符集)作为编码方式,根据例1方法1所示的加密算法,例2中的明文M在密钥K作用下进行位置环和位变换,最终求得密文C。
K={“1234”}={0X31,0X32,0X33,0X34}16={00110001,00110010,00110011,00110100}2
K’={0XA3,0X7B,0X17,0XA6}16={10100011,01111011,00010111,10100110}2。
M={“9βix”}={0X39,0XE1,0X69,0X78}16={00111001,11100001,01101001,01111000}2
M’={0X46,0X46,0X83,0X85}16={01000110,01000110,10000011,10000101}2
C={“aaaa”}={0X61,0X61,0X61,0X61}16={01100001,01100001,01100001,01100001}2
说明:例1的结果表明,同一个明文字符“OX61”,其对应的密文字符有“0X1A”,“0XC2”,“0X6B”,“0XDC”;同时,如例2所示,对于不同的明文“0X39”,“0XE1”,“0X69”,“0X78”,通过本发明的方法可能得到同样的密文“0X61”,这体现出根据本发明的方法加密的明文和密文之间是一种无序的对应关系,以扩展的ASCII码为例,即:每一个八位二进制的明文字符加密后都有256种可能的八位二进制的密文字符与之对应,同样每一个八位二进制的密文字符解密后也有256种可能的八位二进制的明文字符与之对应。
例3:
假设文件均采用扩展的ASCII码(IBM扩展字符集)作为编码方式,本例中为提高码均匀度,除了采用复合的位变换规则,还采用分组加密方式。对明文M的256个‘a’在密钥K’作用下共划分为11组加密,得到的密文有多达158个不同字符(这一数值随着算法和密钥而变化),而使用传统的流密码方法得到的不同密文字符只有16个。在本例中,应用本发明的方法加密后产生的密文如图7所示,可以对比图8所示的传统方法加密后产生的密文。
K={“我爱你中国!!!”}(共8字节128位二进制,K的扩展ASCII码表示见图5)
M={“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”}
说明:
(1)M表示明文,共计256个字节,为加密输入序列。
(2)K表示初始密钥流,共计16个字节(即128位二进制),而密钥空间大小为256字节,因此,使用初始密钥流循环填充密钥空间16次,当其表示为扩展ASCII码时,如图5所示。
(3)K’表示密钥流,获取密钥流的位变换规则为:将初始密钥流中满足公式(C1+X1×j)MOD Y1=Z1或者(C2+X2×j)MOD Y2=Z2的二进制位取反,其中:j称为“位序”,是密钥流二进制位的编号,在本例中从0开始。C1、X1、Y1、Z1、C2、X2、Y2、Z2为事先确定的整数,在本例中的取值为0,1,3,0,0,1,7,0。在本例中,由初始密钥流K经位变换后得到密钥流K’如图6所示。
(4)C表示用本发明的方法加密得到的密文,为加密输出序列,若以字节(8位二进制)为单位计算,共包含158个不同的扩展ASCII码字符。
(5)C_old表示用原始的基于异或运算的流密码方法得到的密文,若以字节(8位二进制)为单位计算,共包含16个不同的扩展ASCII码字符。
(6)使用本发明的方法得到的不同密文的二进制编码数量总体水平高于原始的基于异或运算的流密码方法,即使用根据本发明的方法得到的密文的码分布更加均匀。
计算文件中符号分布的均匀度λ的公式如下:
其中:
(a)αi表示第i个符号在文件中出现的次数;
(b)n表示文件中符号总数;
(c)扩展ASCII码的编码总量r为256;
(d)n/r表示各种符号在全部256个编码中均匀出现的期望值。
(e)λ的值越小,表明符号分布得越均匀。
经计算本例中λ的取值范围是[0,65280];密文C的均匀度λ经计算为264;密文C_old的均匀度λ经计算为6912;
上述计算结果表明使用根据本发明的方法加密后密文的码分布非常的均匀,均匀度比传统方法高30倍左右。
(8)为测试分组数量对码均匀度的影响,共进行了41个分组实验,码均匀度的对比结果如表1所示。其中:方法1与方法2的主要区别在于密钥流生成器应用的规则不同。方法1中密钥流生成器应用的规则是:将初始密钥流中满足公式(j+X)MOD Y=Z的二进制位取反,X、Y、Z在本例中分别为0,3,0。方法2中密钥流生成器的规则是:将初始密钥流中满足公式(j+X1)MOD Y1=Z1或者(j+X2)MOD Y2=Z2的二进制位取反,X1、Y1、Z1、X2、Y2、Z2在本例中的取值为0,3,0,0,7,0。j称为“位序”,是密钥流二进制位的编号,在本例中从0开始。
下面的表1展示了采用分组加密时的码均匀度对比。
统计分析发现,使用根据本发明的方法加密的密文文件的码均匀度全面优于传统方法的码均匀度、(数值越大码均匀度越低),方法1中当分组数量为1、2、3、4、8、16、32、64、128、256、512时,方法2中当分组数量为128,256,512,1024时码均匀度略低,但是仍强于传统方法。这主要由于密钥流生成器不同造成的,分组数量的取值为质数是比较稳妥的选择。
表1采用分组加密时的码均匀度对比
三、解密实例
解密为加密过程的逆运算,通过扫描密钥流和密文流,计算密文的每个二进制位在明文空间的存储地址,然后映射到明文空间求得明文M。例1求得的密文的解密的过程如图2、图9和图10所示。
K={“1234”}={0X31,0X32,0X33,0X34}16={00110001,00110010,00110011,00110100}2。
K’={0XA3,0X7B,0X17,0XA6}16={10100011,01111011,00010111,10100110}2。
C={“→┬k■”}={0X1A,0XC2,0X6B,0XDC}16={00011010,11000010,01101011,11011100}2。
M’={0X3D,0XE5,0X89,0X38}16={00111101,11100101,10001001,00111000}2。
M={“aaaa”}={0X61,0X61,0X61,0X61}16={01100001,01100001,01100001,01100001}2。
说明:
1.C={“→┬k■”}表示密文,为解密输入序列。{0X1A,0XC2,0X6B,0XDC}是将密文“→┬k■”的扩展ASCII码(十六进制),将其转换为二进制得到{00011010,11000010,01101011,11011100}2。
2.K={“1234”}表示初始密钥。{0X31,0X32,0X33,0X34}是初始密钥“1234”的扩展ASCII码,将其转换为二进制得到{00110001,00110010,00110011,00110100}2。
3.K’表示对初始密钥K的特定位进行位变换后得到的最终的密钥。{0XA3,0X7B,0X17,0XA6}是密钥的扩展ASCII码(十六进制),将其转换为二进制得到{10100011,01111011,00010111,10100110}2。
4.M’是密文C按照位置换规则得到的伪明文序列。{0X3D,0XE5,0X89,0X38}是M’的扩展ASCII码(十六进制),将其转换为二进制得到{00111101,11100101,10001001,00111000}2。
5.M={“aaaa”}表示明文,为解密输出序列。{0X61,0X61,0X61,0X61}是明文“aaaa”的扩展ASCII码(十六进制),将其转换为二进制得到{01100001,01100001,01100001,01100001}。
6.密文、密钥和明文均采用形如循环队列的逻辑结构,可在队列任意位置开始计算,现取初值i=0、j=0、k1=0、k2=31,工作指针p指向明文M[0],q指向密钥K[0],r1、r2指向密文C[0]、C[31]。解密过程如图9和图10所示。
7.本例中对初始密钥流应用的位变换规则为:将初始密钥流中满足公式(j+X)MODY=Z的二进制位取反,其中:j称为“位序”,是密钥流二进制位的编号,在本例中从0开始。X、Y、Z为事先确定的整数,在本例中分别为0,3,0。在图2中,初始密钥K的灰色底纹部分表示满足上述公式的特定位。
8.本例中对密文应用的位置换规则为:同时双向扫描密文C、密钥流K’、伪明文空间M’的对应位,i1和i2、j1和j2、k1和k2同时相向移动。在第一趟扫描过程中,当K’[j1]和K’[j2]均为假值时,交换C[k1]和C[k2]后存储在M’[i1]和M’[i2];在第二趟扫描过程中,当K’[j1]和K’[j2]均为真值时,交换C[k1]和C[k2]后存储在M’[i1]和M’[i2],最终得到的伪明文M’如图9所示。
9.本例中对伪明文M’应用的位变换规则为:根据密钥K’的特定位按位取反,在本例中为“假”值二进制位。伪明文M’中灰色底纹表示密钥K’的“假”值部分所对应的伪明文,明文M中灰色底纹部分为伪明文序列M’中灰色底纹部分按位取反后的结果。最终得到的明文M如图10所示。
四、本发明的具体详细的实施例
本专利申请的具体详细的实施例分三个部分介绍:1.位变换规则的设计、2.位置换规则的设计、3.加密和解密方法的具体实施例。
1.位变换规则的设计
位变换规则的设计可以借助数学公式,也可以借助各种密钥流生成器产生的伪随机序列以及各种混沌信号,还可以借助任意的在二进制上码分布均匀的随机文件。
位变换规则的作用:
(1)随机改变在二进制编码上的“1”和“0”的分布;
(2)对明文和密钥的部分二进制位按位取反,可以解决明文或密钥的二进制编码中0或者1过多(即类似0X00或0XFF的字节过多),从而导致加密失败或者容易被破译的问题。
规则1:将满足某公式的二进制位取反
如:例1、2的密钥流生成器是布尔函数F(j)=(C+X×j)MOD Y==Z的应用;例3的密钥流生成器是上述布尔函数的混合应用,即F(j)=F1(j)||F2(j),其效果优于例1、2。其中:“MOD”表示求余运算,“==”表示判断相等运算。“||”表示逻辑或运算;C、X、Y、Z为事先确定的整数,Y应为质数。j称为“位序”,是密钥流二进制位的编号,由于明文、密钥、密文均采用循环队列结构,因此j的起始值可以是密钥流的任意合法位置。
规则2:根据密钥流的真值位或假值位取反
如:采用双密钥流,根据另一个密钥流的真值位或假值位,对初始密钥流的对应位取反,由此构成密钥流生成器。
再如:根据密钥流的真值位或假值位,对明文的对应位进行取反。如例1、2、3中的明文的位变换部分。
2.位置换规则的设计
位置换规则的作用:按照依赖于密钥流的置换规则,随机的置换满足条件的二进制位,从而扰乱伪明文序列的二进制码的排列顺序。
规则1:两趟扫描,第一趟按照密钥流的假值位,置换明文的对应位,第二趟按照密钥流的真值位,置换明文的对应位。
如:例1、2、3中的明文的位置换部分,实现方法如下:
(1)在每个分组内设置双端指针low、high,它们的取值可以是明文、密钥二进制流构成的循环队列的任意合法位置,要求它们的初始距离为明文、密钥的二进制流的长度;
(2)第一趟扫描明文、密钥,相向移动low和high指针,当low和high均指向密钥流的假值位时,置换明文的位值。
(3)重新设置分组内的双端指针low、high,这两个指针相向移动,它们的取值可以是明文、密钥二进制流构成的循环队列的任意合法位置,要求它们的距离为明文、密钥的二进制流的长度;
(4)第二趟扫描明文、密钥,相向移动low和high指针,当low和high均指向密钥流的真值位时,置换明文的位值。
规则2:一趟扫描,按照密钥流的假值位和真值位,置换明文的对应位。
(1)在每个分组内设置双端指针low、high,这两个指针同向移动,它们的取值可以是明文、密钥二进制流构成的循环队列的任意合法位置,对它们的初始距离不做要求;
(2)只扫描明文、密钥一趟,移动low和high指针,当low指针指向密钥流的假值位,high指针指向密钥流的真值位时置换明文的位值,当其中一个指针已经绕明文或密钥的循环队列走一圈时结束。
规则3:一趟扫描,按照密钥流的真值位和假值位,置换明文的对应位。
(1)在每个分组内设置双端指针low、high,这两个指针相向移动,它们的取值可以是明文、密钥二进制流构成的循环队列的任意合法位置,对它们的初始距离不做要求;
(2)只扫描明文、密钥一趟,移动low和high指针,当low指针指向密钥流的真值位,high指针指向密钥流的假值位时置换明文的位值,当其中一个指针已经绕明文或密钥的循环队列走一圈时结束。
3.加密和解密方法的具体算法实现
加解密方法集合的设计基于位变换规则集合与位置换规则集合的组合,各集合的设计与组合方式方法灵活多样。以例3中应用的加解密方法为例,说明本方法的算法设计过程。
3.1加密算法实施过程
1.读入例3的明文文件和初始密钥文件。
明文为:{“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”}
初始密钥流为:
{“我爱你中国!!!”}
2.建立字符指针
明文字符串数组动态指针:char*M;
密钥字符串数组动态指针:char*K;
密文字符串数组动态指针:char*C;
3.打开明文文件M,统计明文文件M的字节数,并存放到M_bytes中。
4.分配存储空间
明文存储空间M=new char[M_bytes+1];
密钥存储空间K=new char[M_bytes+1];
密文存储空间C=new char[M_bytes+1];
5.将明文文件的内容,读入到指针M所指存储空间。
6.将密钥文件的内容,读入到指针K所指存储空间。其中:初始密钥流“我爱你中国!!!”的长度远小于明文流的长度,采用循环填充的方式将其存于密钥空间K。
7.建立函数int read_bit(char*p_str,int n)读取字符串的第n个二进制位
函数参数:p_str为指向字符串的指针,参数n表示下标为n的二进制位;
函数功能:查找并返回p所指的字符串中第n位(bit)的值(0,1)。
函数返回值:返回p所指的字符串第n位(bit)的值(0,1)。
8.建立函数void write_bit_1(char*p_str,int n)向字符串的第n个二进制位写1
函数参数:p_str为指向字符串的指针,参数n表示下标为n的二进制位;
函数功能:将p_str所指的字符串第n位(bit)写入1。
函数返回值:空
关键语句序列:
9.立函数void write_bit_0(char*p_str,int n)向字符串的第n个二进制位写0
函数参数:p_str为指向字符串的指针,参数n表示下标为n的二进制位;
函数功能:将p_str所指的字符串第n位(bit)写入0。
函数返回值:空
关键语句序列:
10.建立函数void en_bit_transfor()完成初始密钥流和明文流的位变换
函数参数:无
函数功能:同时完成初始密钥流和明文流的位变换,得到密钥流K’和伪明文流M’
函数返回值:无
关键语句序列:
11.建立函数void en_bit_replace(int low,int high)完成分组内的伪明文流的位置换
函数参数:low和high作为双端指针,指向一个分组的两端
函数功能:对分组内的伪明文流进行位置换,得到该分组的密文
函数返回值:无
关键语句序列:
//第一趟置换
//第二趟置换
12.建立函数void encrypt()完成加密
函数参数:无
函数功能:调用en_bit_transfor函数和en_bit_replace函数,采用分组置换方法完成加密。
函数返回值:无
关键语句序列:
13.建立函数void statisticalAnalysis()进行码均匀度分析
函数参数:无;
函数功能:统计每个字符编码(以字节为单位)的出现次数,然后计算码均匀度;
函数返回值:空。
关键语句序列:
其中:若以字节为单位计算,则不同的符号(编码)总量radix为256,lambda为本方法计算得到的密文的码均匀度,max_lam为码均匀度最大值。
14.将encrypt()函数计算得到的密文数组C写入密文文件并保存。
3.2解密算法实施过程
1.读入例3的密文文件和初始密钥文件。
密文文件C为:
密钥文件K’为:
{“我爱你中国!!!”}
2.建立字符指针
明文字符串数组动态指针:char*M_decrypt;
密钥字符串数组动态指针:char*K;
密文字符串数组动态指针:char*C;
3.打开密文文件C,统计密文文件C的字节数,并存放到C_bytes中。
4.分配存储空间
解密的明文存储空间M_decrypt=new char[C_bytes+1];
密钥存储空间K=new char[C_bytes+1];
密文存储空间C=new char[C_bytes+1];
5.将密文文件的内容,读入到指针C和指针M_decrypt所指存储空间。即:明文流的初始值为密文。
6.将密钥文件的内容,读入到指针K所指存储空间。其中:初始密钥流“我爱你中国!!!”
7.建立函数int read_bit(char*p_str,int n)读取字符串的第n个二进制位
函数参数:p_str为指向字符串的指针,参数n表示下标为n的二进制位;
函数功能:查找并返回p所指的字符串中第n位(bit)的值(0,1)。
函数返回值:返回p所指的字符串第n位(bit)的值(0,1)。
8.建立函数void write_bit_1(char*p_str,int n)向字符串的第n个二进制位写1
函数参数:p_str为指向字符串的指针,参数n表示下标为n的二进制位;
函数功能:将p_str所指的字符串第n位(bit)写入1。
函数返回值:空
关键语句序列:同加密过程的void write_bit_1函数,不再赘述。
9.建立函数void write_bit_0(char*p_str,int n)向字符串的第n个二进制位写0
函数参数:p_str为指向字符串的指针,参数n表示下标为n的二进制位;
函数功能:将p_str所指的字符串第n位(bit)写入0。
函数返回值:空
关键语句序列:同加密过程的void write_bit_0函数,不再赘述。
10.建立函数void de_bit_transfor()完成密钥流和密文流的位变换,实现过程与加密过程的位变换相同。
函数参数:无
函数功能:同时完成密钥流K’和密文流(存于M_decrypt)的位变换。
函数返回值:无
关键语句序列:
11.建立函数void de_bit_replace(int low,int high)完成分组内的密文流的位置换。
函数参数:low和high作为双端指针,指向一个分组的两端
函数功能:对分组内的密文流进行位置换,得到该分组的明文
函数返回值:无
关键语句序列:
//第一趟置换
//第二趟置换
12.建立函数void decrypt()完成解密
函数参数:无
函数功能:调用de_bit_transfor函数和de_bit_replace函数,采用分组置换方法完成解密。
函数返回值:无
关键语句序列:
13.将decrypt()函数计算得到的明文数组M_decrypt写入明文文件并保存,如下。
Plaintext of Decryption(M):
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaa
总结上面的多个实施例,本发明的方案比以往的传统流密码加密技术的不同点主要在于不依赖于异或运算,而是基于明文二进制位流上的置换与变换操作,且对密钥流的均匀度不做严格要求。本发明技术方案的主要原理总结如下。
(1)借助一串现有的已知编码序列作为初始密钥流(可称为真随机序列)。初始密钥流可来自于各种类型的文件,如:文档、音频、视频、图片等,也可以来自各种密钥流生成器产生的伪随机序列以及各种混沌信号等,即初始密钥流在二进制上的编码均匀性对本算法影响较小。在现在技术的前提下,当密钥长度为128比特时,用穷举法(暴力法)搜索密钥在计算机上几乎不可能实现。
(2)设计位运算规则集合。首先,按照位运算规则改变初始密钥流的位值,从而得到密钥流。然后,按照依赖于密钥流的位运算规则改变明文的位值。
(3)设计置换规则集合。在已经得到的经过位变换的明文流的基础上,按照依赖于密钥流的置换规则,置换变换后的明文流,将其随机散布在密文流中,从而得到密文。
本发明的方法中不存在明文集合M和密文集合C之间的字节对应关系,但是存在二进制位(bit)上的对应关系,位对应关系的依据是由密钥集K产生的置换规则,以及位变换规则,因此,要想破解使用本方法加密的文件,必须满足的四个充分必要条件是:
(1)已知密钥集合;
(2)已知用于解密的位置换规则集合;
(3)已知用于解密的位变换规则集合;
(4)已知密文文件。
而同时获得上述四个条件是不可能事件,实验结果证明本发明的方法简单易行且具有很高的安全性。
此外,本申请人以往的流密码方面的发明专利中的技术方案是基于散列函数的,存在的问题是,散列函数仅能改变明文中“0”和“1”的位置并映射到密文空间,当明文或密钥的码分布在二进制上偏向全“0”或者全“1”时(即类似0X00或0XFF的字节过多时),存在加密失败或容易被攻击的情况。而本文提出的新方法中位运算规则集合的引入能够完美解决上述情况,使得明文和密文中的“0”和“1”的数量不存在对应关系,因此应用本方法即使传输特殊的明文也不易被破译。且位置换与位变换规则的使用使得密文的码均匀度远远高于明文的码均匀度,也高于传统的流密码加密的密码均匀度。
应当认识到,本发明实施例中的方法步骤可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (10)
1.一种基于位置换和位变换的加密解密方法,其特征在于,所述方法包括以下步骤:
S1、开辟内存空间,为明文文件、密文文件及密钥文件准备对应的存储空间,其中初始的密钥文件来自已知编码序列,并且作为加密和解密的共用文件;
S2、按照位运算规则以改变初始的密钥流的位值,从而得到位变换的密钥流,然后按照依赖于密钥流的位运算规则改变明文的位值;
S3、在已经过位变换的明文流的基础上,按照依赖于密钥流的位置换规则,对位变换后的明文流进行位置换运算,并将其随机散布在密文流中,从而得到目标密文后储存为文件。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1包括:
初始化明文文件,加载需要加密的明文文件,设置密钥文件码元个数,其中密钥文件的字节长度能进行自定义设置;
用于初始的密钥文件的编码序列来自于文本文档、音频、视频、图片、图像、图形、伪随机码、混沌值中的任一者或者任意多者的组合。
3.根据权利要求1所述的方法,其特征在于,所述步骤S2包括:
借助各种密钥流生成器产生的伪随机序列和各种混沌信号,或者借助任意的在二进制上码分布均匀的随机文件,以提供位变换运算规则。
4.根据权利要求1或3所述的方法,其特征在于,在所述步骤S2中,所述的位运算规则包括以下运算规则中的任意一种或者任意多种的组合:
规则1:将满足以下布尔函数的二进制位进行取反
F(j)=(C+X×j)MOD Y==Z,
其中,C、X、Z为事先确定的整数,Y为质数,j为密钥流二进制位的编号;“MOD”表示求余运算,“==”表示判断相等运算;
规则2:根据密钥流的真值位或假值位取反。
5.根据权利要求1所述的方法,其特征在于,所述步骤S3包括:
将位变换后的明文流进行一次或多次的分组位置换;和/或
将初始密文作为参数进行一次或多次的分组位置换;
以得到一次或多次加密后的密文文件。
6.根据权利要求5所述的方法,其特征在于,在所述步骤S3中,所述的位置换运算步骤包括:
S311、在每个分组内设置双端指针,该两个指针的取值是由明文、密钥二进制流构成的循环队列的合法位置,并且该两个指针的初始距离被配置为明文、密钥的二进制流的长度;
S312、第一趟扫描明文、密钥,相向移动第一指针和第二指针,当第一指针和第二指针均指向密钥流的假值位时,置换明文的位值;
S313、重新设置分组内的双端指针,这两个指针相向移动,并且取值能够是明文、密钥二进制流构成的循环队列的合法位置,并且该指针的重置距离为明文、密钥的二进制流的长度;
S314、第二趟扫描明文、密钥,相向移动第一指针和第二指针,当第一指针和第二指针均指向密钥流的真值位时,置换明文的位值。
7.根据权利要求5所述的方法,其特征在于,在所述步骤S3中,所述的位置换运算步骤包括:
S321、在每个分组内设置双端指针,使这两个指针进行同向或相向移动,该两个指针的取值是由明文、密钥二进制流构成的循环队列的合法位置,并且对该两个指针的初始距离不进行配置;
S322、只扫描明文、密钥一趟,移动第一指针和第二指针,当第一指针指向密钥流的假值位,第二指针指向密钥流的真值位时,置换第一指针和第二指针对应的明文的位值,当其中一个指针已经绕明文或密钥的循环队列走一圈时结束;
S323、在指针结束位置进行明文的位值置换。
8.根据权利要求1所述的方法,其特征在于,还包括:
对所述明文文件、密文文件和密钥文件分别创建对应的明文加密随机数、密文加密随机数和密钥加密随机数,根据加密随机数的值生成对应的工作指针;
对明文文件、密文文件、密钥文件进行工作指针位移读取;
对工作指针进行多次循环遍历,同时根据工作指针所指向的密钥流二进制位的值,对明文文件进行多次迭代,得到密文文件。
9.一种计算机装置,包括存储器、处理器及储存在存储器上并能够在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8中任一项所述的方法。
10.一种计算机可读存储介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910119852.5A CN109951268B (zh) | 2019-02-18 | 2019-02-18 | 基于位置换和位变换的加密解密方法和装置 |
US17/428,405 US11750375B2 (en) | 2019-02-18 | 2019-04-19 | Encryption and decryption method and device based on bit permutation and bit transformation |
PCT/CN2019/083409 WO2020168629A1 (zh) | 2019-02-18 | 2019-04-19 | 基于位置换和位变换的加密解密方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910119852.5A CN109951268B (zh) | 2019-02-18 | 2019-02-18 | 基于位置换和位变换的加密解密方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109951268A true CN109951268A (zh) | 2019-06-28 |
CN109951268B CN109951268B (zh) | 2020-12-22 |
Family
ID=67006803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910119852.5A Active CN109951268B (zh) | 2019-02-18 | 2019-02-18 | 基于位置换和位变换的加密解密方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11750375B2 (zh) |
CN (1) | CN109951268B (zh) |
WO (1) | WO2020168629A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110266488A (zh) * | 2019-07-15 | 2019-09-20 | 国网江苏省电力有限公司电力科学研究院 | 基于位置组合的密钥生成方法和加密传输数据方法及系统 |
CN110489466A (zh) * | 2019-07-03 | 2019-11-22 | 平安证券股份有限公司 | 邀请码的生成方法、装置、终端设备及存储介质 |
CN110795747A (zh) * | 2019-10-18 | 2020-02-14 | 浪潮电子信息产业股份有限公司 | 一种数据加密存储方法、装置、设备及可读存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116781790B (zh) * | 2023-08-25 | 2023-12-05 | 国网江西省电力有限公司电力科学研究院 | 仪器规约规范智能转换系统、方法、可读介质和电子设备 |
CN116980232B (zh) * | 2023-09-21 | 2024-01-12 | 深圳市能数科技有限公司 | 一种数据处理方法、装置、计算机设备和可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080292100A1 (en) * | 2007-05-24 | 2008-11-27 | Kabushiki Kaisha Toshiba | Non-linear data converter, encoder and decoder |
JP2009139899A (ja) * | 2007-12-04 | 2009-06-25 | Tsutomu Tatsuzawa | Pi++ストリーム暗号の暗号方法および復号方法、並びにパイ・データに基づく暗号算法及び復号化算法 |
EP2190143A1 (en) * | 2008-11-20 | 2010-05-26 | Sony Corporation Of America | Cryptographic processing apparatus with improved resistance to power analysis |
CN203733220U (zh) * | 2013-12-20 | 2014-07-23 | 湖南三益科技有限公司 | 一种数码式电表 |
CN105281894A (zh) * | 2015-11-25 | 2016-01-27 | 深圳供电局有限公司 | 一种基于七阶幻立方的明文加密方法和系统 |
CN106953875A (zh) * | 2017-04-26 | 2017-07-14 | 吉林大学珠海学院 | 基于多密钥流密码的顺序加密方法 |
CN108429613A (zh) * | 2018-03-09 | 2018-08-21 | 国网陕西省电力公司电力科学研究院 | 一种基于en-present算法的电网信息加密方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6560338B1 (en) * | 1998-08-28 | 2003-05-06 | Qualcomm Incorporated | Limiting delays associated with the generation of encryption stream ciphers |
CN103096302B (zh) * | 2011-10-27 | 2016-03-02 | 华为技术有限公司 | 一种加密方法、解密方法和相关装置 |
CN107547194A (zh) * | 2016-06-28 | 2018-01-05 | 埃沙尔公司 | 免受侧信道分析的保护方法和设备 |
CN109194461B (zh) * | 2018-05-11 | 2022-02-22 | 吉林大学 | 基于双密钥流密码的单向链表顺序加密解密方法 |
-
2019
- 2019-02-18 CN CN201910119852.5A patent/CN109951268B/zh active Active
- 2019-04-19 US US17/428,405 patent/US11750375B2/en active Active
- 2019-04-19 WO PCT/CN2019/083409 patent/WO2020168629A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080292100A1 (en) * | 2007-05-24 | 2008-11-27 | Kabushiki Kaisha Toshiba | Non-linear data converter, encoder and decoder |
JP2009139899A (ja) * | 2007-12-04 | 2009-06-25 | Tsutomu Tatsuzawa | Pi++ストリーム暗号の暗号方法および復号方法、並びにパイ・データに基づく暗号算法及び復号化算法 |
EP2190143A1 (en) * | 2008-11-20 | 2010-05-26 | Sony Corporation Of America | Cryptographic processing apparatus with improved resistance to power analysis |
CN203733220U (zh) * | 2013-12-20 | 2014-07-23 | 湖南三益科技有限公司 | 一种数码式电表 |
CN105281894A (zh) * | 2015-11-25 | 2016-01-27 | 深圳供电局有限公司 | 一种基于七阶幻立方的明文加密方法和系统 |
CN106953875A (zh) * | 2017-04-26 | 2017-07-14 | 吉林大学珠海学院 | 基于多密钥流密码的顺序加密方法 |
CN108429613A (zh) * | 2018-03-09 | 2018-08-21 | 国网陕西省电力公司电力科学研究院 | 一种基于en-present算法的电网信息加密方法 |
Non-Patent Citations (4)
Title |
---|
MUKTA SHARMA: "《Comparative Analysis of Block Key Encryption Algorithms》", 《INTERNATIONAL JOURNAL OF COMPUTER APPLICATIONS》 * |
崔业勤: "《基于单图像局部置乱和动态反馈扩散的》", 《电信科学》 * |
张雅: "《换位密码及其前景展望》", 《北京邮电大学学报》 * |
滕广超: "《通用型语音加密器的研究与实现》", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489466A (zh) * | 2019-07-03 | 2019-11-22 | 平安证券股份有限公司 | 邀请码的生成方法、装置、终端设备及存储介质 |
CN110489466B (zh) * | 2019-07-03 | 2023-09-08 | 平安证券股份有限公司 | 邀请码的生成方法、装置、终端设备及存储介质 |
CN110266488A (zh) * | 2019-07-15 | 2019-09-20 | 国网江苏省电力有限公司电力科学研究院 | 基于位置组合的密钥生成方法和加密传输数据方法及系统 |
CN110266488B (zh) * | 2019-07-15 | 2021-08-31 | 国网江苏省电力有限公司电力科学研究院 | 基于位置组合的密钥生成方法和加密传输数据方法及系统 |
CN110795747A (zh) * | 2019-10-18 | 2020-02-14 | 浪潮电子信息产业股份有限公司 | 一种数据加密存储方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11750375B2 (en) | 2023-09-05 |
WO2020168629A1 (zh) | 2020-08-27 |
CN109951268B (zh) | 2020-12-22 |
US20220150054A1 (en) | 2022-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109951268A (zh) | 基于位置换和位变换的加密解密方法和装置 | |
CN109861820A (zh) | 基于随机散列和位运算的加密解密方法和装置 | |
CN104468090B (zh) | 基于图像像素坐标的汉字密码编码方法 | |
CN102404111B (zh) | 一种采用不确定加密算法的分段加密方法 | |
CN110313146A (zh) | 模糊度增强 | |
Omolara et al. | Developing a modified hybrid caesar cipher and vigenere cipher for secure data communication | |
CN105959118A (zh) | 基于流密码的双位单向循环链表加密解密方法 | |
US20090092251A1 (en) | Symmetric key cryptographic method and apparatus for information encryption and decryption | |
CN103414549A (zh) | 一种qr二维码二值图像分区变密钥混沌加密方法 | |
CN103595539A (zh) | 保留格式的数值型个人识别信息的加密方法 | |
CN109981249B (zh) | 基于拉链式动态散列和nlfsr的加密解密方法及装置 | |
CN106598882A (zh) | 一种安全的内存数据保护方法及装置 | |
CN107147487A (zh) | 对称密钥随机分组密码 | |
CN109194461A (zh) | 基于双密钥流密码的单向链表顺序加密解密方法 | |
CN108768617A (zh) | 一种基于传统分组密码的保持格式加密方法 | |
Kaur et al. | 3D (4 X 4 X 4)-Playfair Cipher | |
CN105095695A (zh) | 经由白箱实现的不正确功能行为实现授权 | |
CN102598575B (zh) | 用于对密码保护的有效数据单元加速解密的方法和系统 | |
CN101814985A (zh) | 应用多混沌映射多动态s盒的分组密码系统 | |
CN109426731A (zh) | 保护数据的方法 | |
CN109218013A (zh) | 掩盖明文符号边界的二进制数据通信加密法 | |
CN104125059A (zh) | 复合时变密码和时变式数据加密方法 | |
Wu et al. | Binary data encryption using the Sudoku block cipher | |
CN108777611A (zh) | 基于双密钥流密码的双向链表顺序加密解密方法 | |
CN107886463A (zh) | 一种基于Chen系统和细胞自动机的数字图像加密方法 |
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 |