密钥可变的加密系统的制作方法

文档序号:7567392阅读:199来源:国知局
专利名称:密钥可变的加密系统的制作方法
背景技术
本发明涉及加密技术,尤其涉及一种用一个或多个等权的可变长关键字对数字数据加密和解密的系统。
加密可用来安全地交流或存储数字数据,例如声音、传真(FAX)、电子邮件、信用卡信息和电视等。本领域的专业人员已经开发了诸如数据加密标准(DES)等加密算法。这些算法要求用户输入一个关键字,以对数据加密或解密。用一给定的关键字加密的数据只能用相同的关键字解密。DES要求关键字正好是长度为6的字母数字符号。DES算法实质上是一个复杂的判决树,它不仅根据密钥而且根据它对数据位组进行逻辑运算的结果改变数据位的状态。由于这些计算要花费大量的时间并且必须连续进行,所以加密或解密过程非常缓慢。
模拟加密系统用来在微波链路和电缆电视线路上进行安全的视频传输。这些系统必须在高速下运行,以适应视频带宽。
希望提供一加密系统,该系统不限制用户对密钥长度的选择,并且运行速度足够快,能在实时的视频和声频环境中使用。这些问题和缺陷在本领域中是明显的,而本发明将用下述方式解决这些问题。

发明内容
本发明包括一种对数字数据加密和解密的方法和设备。该方法包括下列步骤处理用户密钥和基本密钥,对被处理的密钥进行异或操作以产生最终密钥,以及对最终密钥和被加密或解密的数据进行异或操作。
用户密钥和基本密钥是具有任何适当位数的二进制序列。密钥的最大长度只受到实施本发明的系统软件和/或硬件之物理能力的限制。基本密钥可用允许检索的方式存储,而不需要用允许更改的方式存储。尽管基本密钥保持可存取的形式,但用户密钥在被输入后不再保持其原始的形式。用户密钥可直接用二进制形式或本发明可解释为二进制的任何其他适当的形式,譬如ASCII编码字符串,输入至使用本发明的硬件中。若干字符或成百页文本构成的ASCII编码字符串可作为用户密钥或基本密钥,只要系统硬件和/或软件适于处理这些密钥。如下所述,可用多个用户密钥对数据加密或解密,以提供附加的安全性。
使用本发明的硬件可与诸如计算机系统、电话网或无线通信网等任何适当的设备交流被加密或解密的数据。由于处理密钥以形成最终密钥的步骤可以在发生数据通信之前的任何时候进行,因此唯一必须在数据通信期间实时进行的步骤是在最终密钥和数据之间进行异或操作。这使实时操作最少而加密和解密速度最大。
处理用户密钥包括下列步骤置换用户密钥,将被置换的用户密钥循环移位,以及用一个或多个被置换或经移位密钥的复制件填充一个存储位置,使其长度与基本密钥的长度相等。
置换步骤根据用户密钥段的值和位置,以伪随机的方式重新组合密钥段。循环移位步骤是将二进制序列循环或移位,移位的位数是根据被置换用户密钥段的值和位置而确定的。在一适于处理由ASCII字符串构成的用户密钥的实施例中,每段可由一个字节组成。由此,每段的值是字符的ASCII值。如果基本密钥比用户密钥长,那么通过一次或多次将被置换并经移位的用户密钥复制到某个位置中并相互添加复制件,使得在填充步骤中将被置换并经移位的用户密钥的长度扩展到与基本密钥一样长。
处理基本密钥包括下列步骤依照用户密钥段的值和位置而确定的位数将基本密钥循环移位。
用异或操作合并被处理的用户密钥和基本密钥。用异或操纵再将该结果与根据用户密钥段的值和位置而确定的数合并。后一异或操作的结果即是最终密钥。
本发明在最终密钥和将被加密或解密的数据之间进行异或操作。如果数据流比最终密钥长,那么最终密钥可以循环使用。
如果使用多个用户密钥,则置换每个用户密钥,并用异或操作使其与所有其他的被置换用户密钥合并。应当注意,由于异或操作的有关特性其结果与用户密钥的输入和合并次序无关。如果使用多个用户密钥,那么上述将用户密钥循环移位的步骤对合并后的用户密钥进行。
本发明不限制用户对密钥长度的选择。另外,在完成初始的密钥处理后,加密和解密速度只受到异或操作进行速度的限制。该操作可通过相当简单的硬件或软件来进行。本发明并且不传播任何可能产生的数据差错。如果被加密或解密的数据中有一位或多位有错,那么异或操作不会增加出错位的数目。另外,通过提供不同基本密钥可以创建不同系统。经具有某个基本密钥的系统加密的信息不可能由具有不同基本密钥的系统来解密,即使输入用户密钥的两个系统是一样的。
参阅以下说明书、权利要求书和附图,将更清楚本发明的上述及其他特征和优点。
附图概述为了更全面地理解本发明,现结合附图参阅以下对实施例的详细描述,其中

图1是对数字数据加密和解密的电路的方框图;和图2是对数字数据加密和解密的算法的流程图。
本发明的最佳实施例如图1所示,异或电路10用异或操作把将被加密或解密的数据与一最终密钥合并。电路10从连接诸如计算机等外部设备13的接口电路12接收数据。电路10从地址计数器16编址的屏蔽存储器14接收最终密钥。具有程序存储器20的处理器18在存储于存储器20中的程序的控制下,以下述方式计算最终密钥。接口12、电路10、地址计数器16和处理器18通过控制逻辑22互连。
当希望对数据加密或解密时,处理器18通过接口12接收一用户密钥。例如,用户可在与外部设备13相连的键盘(未示出)上输入用户密钥。处理器18在存储于存储器20中的程序控制下,以下述方式将实际的用户密钥与预先存储在处理器存储器20中的一基本密钥合并。处理器18将最终密钥存储在屏蔽存储器14中。当异或电路10通过接口12接收将被加密或解密的数据时,地址计数器16计数增加,以从屏蔽存储器10逐段取出最终密钥。例如,如果接口12与一次读写一个字节的计算机相连,那么每当计算机对接口12进行一次写操作,地址计数器16就增加一次,以便从存储器14中检索出最终密钥的下一个字节。计算机可以立即对接口12进行读操作,以索取被加密或解密的字节。由此,最终密钥的每个字节都与输入数据的一个字节进行了异或操作。如果输入数据所含字节数比最终密钥多,那么该异或过程以循环的方式从最终密钥的第一字节开始重复进行。
当用户希望对数据加密或解密时,处理器18执行图2所示的算法。在步骤24,处理器18通过置零使表示输入用户密钥和实际用户密钥的变量初始化。在步骤26,如上所述,处理器18通过接口12从相连的计算机键盘或其他设备读取一输入用户密钥。输入用户密钥是一长度大于或等于预定最小值并小于预定最大值的数字字。如下所述,最大用户密钥的长度等于基本密钥的长度。用户记住一个由字母数字字符串表示的密钥要比记住一个由二进制数字或十六进制数字串表示密钥更容易。因此,在一实施例中,密钥用ASCII编码的字符串表示。每个字符是一个字节,并且处理器18在一个字节的字长的基础上进行所有的数学运算。但在其他实施例中,可用任何能最终表示为二进制数的格式接收用户密钥,并可根据其他合适的字长进行数学运算。
例如,最小用户密钥的长度可以为五个字节,即五个字符。由此,用户可以输入字符串“IBAInc”。在ASCII中,这六个在还可用下列十六进制数字表示“49 42 41 49 6E 63”。
在步骤28,处理器18对输入用户密钥进行压缩。用户密钥最好具有不同的位,因为这种用户密钥可提供更安全的加密。在使用一个字节字长的所述实施例中,处理器18通过除去任何十六进制值等于“00”或“FF”的字节,来压缩输入的用户密钥。余下的字节从较低有效字节向较高有效字节移位(图中向左),以填满被除去的字节先前所占据的空间。
在步骤30,处理器18测试被压缩的输入用户密钥的长度是否大于预定的最小值。例如,压缩步骤可能不改变输入用户密钥“IBAInc”,并且长度保持为6,仍比预定的最小值5大。但是,如果处理器18判定压缩用户密钥的长度小于最小值,那么处理器18返回步骤26,要求用户重新输入用户密钥。
在步骤32,处理器18确定被压缩的输入用户密钥中的不同字节个数。不同字节是与每个其他字节不同的字节。由于表示字符“I”的字节出现了两次,压缩密钥“IBAInc”中的不同字节个数是5。在步骤34,处理器18测试不同字节个数是否大于预定的最小值。例如,最小值可以为5,从而处理器18进至步骤36。但是,如果处理器18判定被压缩的输入用户密钥中的不同字节个数小于最小值,那么处理器18返回步骤26,要求用户重新输入用户密钥。
在步骤36,处理器18置换被压缩的输入用户密钥。对用户密钥的置换是根据字节的值和位置加权以伪随机的方式重新组合字节。每个字节可与另一个字节交换。置换步骤可表示如下,其中变量KEY表示被压缩的输入用户密钥,KEYi表示KEY的第i个字节,N是KEY的字节长度L=((KEYi-1+KEYi+KEYi+1+i)模N)+1。
对于i=2,3,4,…,N-1,将KEYi与KEYL交换。
例如,为了置换输入用户密钥“IBAInc”,处理器18进行四次交换首先,当i等于2时,L为206模6加1,等于3。处理器18交换“IBAInc”的第二和第三字节,产生“IABInc”。数字206是KEY1、KEY2、KEY3和i的和,其中KEY1用十进制数字73表示,KEY2用十进制数字66表示,KEY3用十进制数字65表示,i为2。其次,当i等于3时,L为207模6加1,等于4。处理器18交换“IABInc”的第三和第四字节,产生“IAIBnc”。数字207是KEY2、KEY3、KEY4和i的和,其中KEY2用十进制数字65表示,KEY3用十进制数字66表示,KEY4用十进制数字73表示,i为3。第三,当i等于4时,L为253模6加1,等于2。处理器18交换“IAIBnc”的第四和第二字节,产生“IBIAnc”。数字253是KEY3、KEY4、KEY5和i的和,其中KEY3用十进制数字73表示,KEY4用十进制数字66表示,KEY5用十进制数字110表示,i为4。第四,当i等于5时,L为279模6加1,等于4。处理器18交换“IBIAnc”的第五和第四字节,产生“IBInAc”。数字279是KEY4、KEY5、KEY6和i的和,其中KEY4用十进制数字65表示,KEY5用十进制数字110表示,KEY6用十进制数字99表示,i为5。
在步骤38,处理器18对压缩和置换后的输入用户密钥进行异或操作,成为实际用户密钥。一个实际用户密钥可以包括多个用异或操作合并的输入用户密钥。例如,在步骤24,将实际用户密钥设置为零,并在将实际用户密钥与压缩和置换后的输入用户密钥“IBInAc”进行异或操作后,实际用户密钥变为“IBInAc”。
在步骤40,处理器18测试是否将输入另一个用户密钥。处理器18可以通过接口12接收一适当的表示这一点的命令。如果处理器18接收到将输入另一用户密钥的指示,则处理器18进至步骤26,接收下一个输入用户密钥。如果处理器18接收到不再输入附加用户密钥的指示,则处理器18进至步骤40。在本例中,“IBAInc”是唯一的用户密钥。因此,“IBInAc”是实际用户密钥。
在步骤42,处理器18用上述步骤28的相同方式压缩实际用户密钥。在步骤44,处理器18测试压缩后的实际用户密钥的长度是否大于预定的最小值,该最小值最好与最好与上述步骤30所述的预定值相等。例如,压缩步骤将不改变实际用户密钥“IBInAc”,并且长度保持为6,大于预定最小值5。由此,处理器18进至步骤46。但是,如果处理器18断定压缩后的用户密钥的长度小于最小值,那么处理器18返回步骤24,要求用户重新输入所有的输入用户密钥。
在步骤46,处理器18用上述步骤32的相同方式确定压缩后实际用户密钥中的不同字节个数,并在步骤48,测试不同字节数是否大于一预定最小值,该预定最小值最好与上述步骤34所述的最小值相等。例如,由于没有附加的输入用户密钥与初始输入用户密钥“IBAInc”合并,所以,不同字节数保持为5。因此,处理器18行进至步骤50。但是,如果处理器18判定压缩后的实际用户密钥中的不同字节个数小于最小值,则处理器18返回步骤24,要求用户重新输入所有的输入用户密钥。
在步骤50,处理器18用上述步骤36的相同方式置换压缩后的实际用户密钥。例如,为了置换实际用户密钥“IBInAc”,处理器18进行四次交换首先,当i等于2时,L为214模6加1,等于5。处理器18交换“IBInAc”的第二和第五字节,产生“IAInBc”。数字214是KEY1、KEY2、KEY3和i的和,其中KEY1用十进制数字73表示,KEY2用十进制数字66表示,KEY3用十进制数字73表示,i为2。其次,当i等于3时,L为251模6加1,等于6。处理器18交换“IAInBc”的第三和第六字节,产生“IAcnBI”。数字251是KEY2、KEY3、KEY4和i的和,其中KEY2用十进制数字65表示,KEY3用十进制数字73表示,KEY4用十进制数字110表示,i为3。第三,当i等于4时,L为279模6加1,等于4。处理器18将“IAcnBI”的第四字节与其自身交换,产生“IAcnBI”。数字279是KEY3、KEY4、KEY5和i的和,其中KEY3用十进制数字99表示,KEY4用十进制数字110表示,KEY5用十进制数字66表示,i为4。第四,当i等于5时,L为254模6加1,等于3。处理器18交换“IAcnBI”的第五和第三字节,产生“IABncI”。数字254是KEY4、KEY5、KEY6和i的和,其中KEY4用十进制数字110表示,KEY5用十进制数字66表示,KEY6用十进制数字73表示,i为5。
在步骤52,处理器18根据字节的值和位置加权确定移位因子。移位因子S可以表示如下,其中变量KEY表示置换后的实际用户密钥,KEYi表示KEY的第i个字节,而N是KEY的字节长度初始化S=0。
对于i=1,2,3,…N,用(255+i)×KEYi累加S。
例如,如果置换后的实际用户密钥为“IABncI”,处理器18求出值18688、16705、17028、28490、25740和19053的和,其中值18688为(255+1)×73,值16705为(255+2)×65,值17028为(255+3)×66,值28490为(255+4)×110,值25740为(255+5)×99,而值19053为(255+6)×73。和等于125704,即是移位因子S。
在步骤54,处理器18从较低有效位向较高有效位(图中向左)将置换后的实际用户密钥的位循环移位。(由于将最高有效位置的位移至最低有效位置,所以移位是循环的。)置换后实际用户密钥的移位数等于移位因子对以位为单位的置换后实际用户密钥长度取模,再加1。例如,移位因子对“IABncI”的位数48取模,再加1,等于41。由此,第41位,变成第一或最高有效位。在移位之前,置换后的实际用户密钥“IABncI”可用二进制表示为“0100 1001 0100 0001 0100 0010 0110 1110 0110 01110100 1001”,其中,第41位用下划线强调。将41个位置左移后,密钥变成“0100 1001 0100 1001 0100 0001 0100 0010 0110 1110 0110 0111”。
在步骤56,处理器18从较低有效位向较高有效位(图中向左)将基本密钥循环移位。基本密钥的移位数等于移位因子对以位为单位的基本密钥长度取模,再加1。
基本密钥可以是任何适当长度的数字字。最好,处理器能访问基本密钥,但用户不能读取或变更。最好用类似序列号的方式使用基本密钥,并将其设定为一个固定值。可以硬接线至系统中作为软件或固件常数。如同以上对用户密钥所述的,不需要用ASCII或任何其他的编码方案对基本密钥编码,而只求编码方便。例如,如果需要用户或其他个人经常改变基本密钥,那么将ASCII编码的字母数字字符串用作基本密钥是方便的。
例如,可用ASCII编码的字符串“ImportantInformation”表示一基本密钥。该基本密钥的长度为20字节或160位。尽管该基本密钥的长度已足以进行说明,但最好使用长度至少为256字节的基本密钥。移位因子125704模160后再加1等于105。因此,第105位变成第一或最高有效位。在移位之前,基本密钥“ImportantInformation”用十六进制可表示为“49 6D 70 6F 72 74 61 6E 74 49 6E 66 6F 72 6D 61 7469 6F 6E”或用二进制可表示为“0100 1001 0110 1101 0111 0000 0110 1111 0111 0010 01110100 0110 0001 0110 1110 0111 0100 0100 1001 0110 11100110 0110 0110 1111 0111 0010 0110 1101 0110 0001 01110100 0110 1001 0110 1111 0110 1110”,其中第105位用下划线强调。向左移105个位置后,密钥变成“0111 0010 0110 1101 0110 0001 0111 0100 0110 1001 01101111 0110 1110 0100 1001 0110 1101 0111 0000 0110 11110111 0010 0111 0100 0110 0001 0110 1110 0111 0100 01001001 0110 1110 0110 0110 0110 1111”。
在步骤58,处理器18循环填充置换后并经移位的实际用户密钥。如果基本密钥比实际用户密钥长,那么该填充步骤就扩展实际用户密钥的长度,使其等于基本密钥的长度。(如果基本密钥比用户密钥长,将复制用户密钥并相互添加复制件,填充是循环的。)如果基本密钥的长度不正好是用户密钥长度的整倍数,那么可以舍去用户密钥中的较低有效位。例如,如果基本密钥的长度为160位,那么长度为48位的用户密钥必须复制三次。将三次复制件和原始件添加在一起,并将结果舍至160位。使用上例中置换后并经移位的实际用户密钥,填充后的用户密钥变成“0100 1001 0100 1001 0100 0001 0100 0010 0110 1110 01100111 0100 1001 0100 1001 0100 0001 0100 0010 0110 11100110 0111 0100 1001 0100 1001 0100 0001 0100 0010 01101110 0110 0111 0100 1001 0100 1001”。
在步骤60,处理器18形成该密钥和移位后基本密钥的异或操作结果。用上例中的密钥,异或操作的结果()为
“0100 1001 0100 1001 0100 0001 0100 0010 0110 1110 0110 “0100 1001 0110 1101 0111 0000 0110 1111 0111 0010 0111 0000 0000 0010 0100 0011 0001 0010 1101 0001 1100 00010111 0100 1001 0100 1001 0100 0001 0100 0010 0110 11100100 0110 0001 0110 1110 0111 0100 0100 1001 0110 1110 0011 0010 1000 0010 0111 0011 0101 0000 1011 0000 00000110 0111 0100 1001 0100 1001 0100 0001 0100 0010 01100110 0110 0110 1111 0111 0010 0110 1101 0110 0001 0111 0000 0001 0010 0110 0011 1011 0010 1100 0010 0011 00011110 0110 0111 0100 1001 0100 1001”(用户密钥)0100 0110 1001 0110 1111 0110 1110”(基本密钥) 1010 0000 1110 0010 0110 0010 0111(合成密钥)但是,合成密钥最好不是用来对数据加密或解密的最终密钥。而宁可在步骤62进行附加的随机化。在步骤62,处理器18通过将该半最终密钥与上述在步骤52计算得的移位因子S合并,形成最终密钥。为了将半最终密钥与移位因子S合并,处理器18进行四字节字表示的移位因子S与半最终密钥的循环异或计算。(如果移位因子的长度小于半最终密钥的长度,那么会复制移位因子并相互添加复制件,以扩展移位因子的长度,使其等于半最终密钥的长度,异或操作是循环的。)上例中的移位因子用二进制表示为“0000 0000 0000 0001 1110 1011 0000 1000”。该循环扩展至160位的移位因子与半最终密钥之间的异或操作结果为“0000 0000 0010 0100 0011 0001 0010 1101 0001 1100 0001 “0000 0000 0000 0001 1110 1011 0000 1000 0000 0000 0000 0000 0000 0010 0101 1101 1010 0010 0101 0001 1100 0001
0011 0010 1000 0010 0111 0011 0101 0000 1011 0000 0000 0001 1110 1011 0000 1000 0000 0000 0000 0001 1110 1011 0010 1100 0011 0010 1111 0011 0101 0000 1010 1110 10110000 0001 0010 0110 0011 1011 0010 1100 0010 0011 0001 0000 1000 0000 0000 0000 0001 1110 1011 0000 1000 0000 0000 1001 0010 0110 0011 1010 1100 1111 0010 1011 00011010 0000 1110 0010 0110 0010 0111”(半最终密钥) 0000 0000 0001 1110 1011 0000 1000"(移位因子) 1010 0000 1111 1100 1101 0010 1111(最终密钥)在处理器18执行步骤62后,基本完成了密钥操作。但是,如果用长度小于一个字节的字表示被加密或解密的数据更方便,那么处理器18可以屏蔽掉最终密钥中每个字节的一个或多个位。处理器18将最终密钥装入屏蔽存储器14中。
在步骤64,异或电路10通过接口12从外部设备13接收被加密或解密之数据的一个字节。控制逻辑22接收数据字节已传输的指示。如果与接口12相接的外部设备13是一台计算机,那么该指示可以触发计算机的“写”线。根据地址计数器16输出端上的地址最终密钥的第一字节出现在屏蔽存储器14的输出端。在步骤66,异或电路10对数据字节和屏蔽存储器14输出端上出现的最终密钥的字节进行异或操作。外部设备13可以通过接口12接收该操作的结果,即被加密或解密的数据字节。如果与接口12相连的外部设备13是一计算机,那么地址计数器16的地址随着计算机“读”线的触发而增大。如果处理器18在步骤68通过接口12接收到不再有数据字节要加密或解密的指示,那么进程结束,并且处理器18等待使步骤24重新开始处理的指示。如果处理器18没有接收到这类指示,那么异或电路10在步骤64等待接收另一个将被加密或解密的数据字节。由于地址计数器16在最终密钥最末字节之地址后立即返回到屏蔽存储器14中最终密钥第一字节的地址处,所以异或操作是循环的。
例如,将被加密的数据可用ASCII编码的字符串“Secret Message”表示。该数据用十六进制可表示为
“53 65 63 72 65 74 20 4D 65 73 73 61 67 65”或用二进制可表示为“0101 0011 0110 0101 0110 0011 0111 0010 0110 01010111 0100 0010 0000 0100 1101 0110 0101 0111 00110111 0011 0110 0001 0110 0111 0110 0101”。
在步骤66,处理器18形成该数据和最终密钥的循环异或操作结果。利用上例的最终密钥,该异或操作()的结果为“0101 0011 0110 0101 0110 0011 0111 0010 0110 0101 0111 “0000 0000 0010 0101 1101 1010 0010 0101 0001 1100 0001 0101 0011 0100 0000 1011 1001 0101 0111 0111 1001 01100100 0010 0000 0100 1101 0110 0101 0111 0011 0111 00110010 1100 0011 0010 1111 0011 0101 0000 1010 1110 1011 0110 1110 0011 0110 0010 0101 0000 0111 1001 1001 10000110 0001 0110 0111 0110 0101”(数据)1010 0000 1111 1100 1101 0010”(最终密钥) 1100 0001 1001 1011 1011 0111(加密数据)尽管异或操作是循环的,但是由于被加密的数据的长度小于最终密钥的长度,所以在该例中不复制最终密钥。加密后的数据用十六进制可表示为“52 40 B9 57 79 66 E3 62 50 79 98 C1 9B B7”或表示为ASCII编码的字符串“R@9WyfSbPy<CAN>A<ESC>7”。
无论使用二进制或其他表示法表示加密后的字符串和原始字符串,加密后的字符串不仅不与原始串“Secret Messag”相似,而且与原始数据差别很大。更重要的是,如果上述实施例中所用的用户密钥或基本密钥被改变的只是一位,那么加密后的数据将与上述加密后的数据有很大不同。相反,如果用一个与用户密钥“IBAInc”非常相似而仅有单个位不同的用户密钥对该串解密,则无论是否将数据作为ASCII字符或位串比较,解密后的数据不会与原始数据相似。
尽管上述图1和图2所述的硬件和软件特别适于对从计算机接收到的文本字符串加密和解密,但是应当注意到,被加密或解密的数据可以是任何数字数据。数据不必表示为文本字符串,例如可以表示成数字声音、传真(FAX)、静态图像、或电视信号。
总之,处理器18处理一个或多个输入用户密钥和一个基本密钥,以形成用来对数据加密或解密的最终密钥。处理器18在步骤24-40,处理输入用户密钥,形成一实际用户密钥,并在步骤42-54和步骤58完成对实际用户密钥进一步处理。处理器18在步骤56处理基本密钥,并在步骤60将经处理的基本密钥和用户密钥合并,以形成一个半最终密钥。然后,在步骤62,处理器18可以将半最终密钥与一个从实际用户密钥导出的值,例如移位因子,合并,以形成最终密钥。在步骤64-68,将最终密钥与被加密或解密的数据合并。应当注意,上述方法可用来加密或者解密。处理器18只可用来处理密钥,并且不必区分加密和解密。
显然,通过这些技术阐述,本领域的普通技术人员将想到本发明的其他实施例和变化。因此,本发明只受以下权利要求书的限制,权利要求书包括所有这类其他的实施例和结合上述说明书和附图时的变化。
权利要求
1.一种对数字数据加密和解密的方法,其特征在于,包括下列步骤形成一实际用户密钥,形成实际用户密钥的所述步骤包括下列步骤接收包含一个位序列的输入用户密钥;置换所述输入用户密钥,以形成一置换后的用户密钥;使所述置换后的用户密钥循环移位,以形成一经移位的用户密钥;并且用所述经移位的用户密钥填充长度等于所述基本密钥长度的位置,以形成所述实际用户密钥;形成一实际基本密钥,形成实际基本密钥的所述步骤包括下列步骤使包含一个位序列的预定基本密钥循环移位;形成一最终密钥,形成最终密钥的所述步骤包括下列步骤对所述实际基本密钥和所述实际用户密钥进行异或计算;并且对所述最终密钥和所述数字数据进行异或计算。
2.如权利要求1所述的方法,其特征在于,置换所述输入用户密钥的所述步骤包括下列步骤从所述输入用户密钥中选择两个被选中的部分,每个所述被选中的部分包括一个位序列,每个所述被选中的部分是根据所述输入用户密钥中多个预定部分的每一个在所述输入用户密钥内的值和位置来确定的;并且交换所述输入用户密钥的所述被选中的部分。
3.如权利要求2所述的方法,其特征在于,每个所述部分由一个字节组成。
4.如权利要求3所述的方法,其特征在于,所述预定部分由所述输入用户密钥的多个连续字节组成。
5.如权利要求4所述的方法,其特征在于,所述预定部分由所述输入用户密钥的三个连续的字节组成。
6.如权利要求5所述的方法,其特征在于,从所述输入用户密钥中选择两个被选中部分的所述步骤包括下列步骤从所述输入用户密钥中选择标号等于i的字节KEYi;从所述输入用户密钥中选择标号等于L的字节KEYL;并且置换所述输入用户密钥的所述步骤包括对i自2至N-1的值重复选择一个字节的所述步骤,其中所述输入用户密钥的每个字节有一标号,N是所述输入用户密钥的字节数,并且L=((KEYi-1+KEYi+KEYi+1+i)模N)+1。
7.如权利要求1所述的方法,其特征在于,对所述置换后的用户密钥循环移位的所述步骤包括下列步骤所述置换后的用户密钥循环移位一定的位数,其位数根据所述置换后用户密钥多个部分之每个部分的值和位置加权确定,每个部分包括一个位序列。
8.如权利要求7所述的方法,其特征在于,每个所述部分由一个字节组成。
9.如权利要求8所述的方法,其特征在于,所述部分由所述置换后用户密钥的所有字节组成。
10.如权利要求9所述的方法,其特征在于,使所述置换后用户密钥循环移位一定位数的所述步骤包括下列步骤形成一移位因子S,该移位因子等于值(255+i)×KYEi对i自1至N求和,其中KEY是所述用户密钥的一个字节,所述用户密钥的每个所述字节具有一个标号,N是所述用户密钥的字节数;并且将所述置换后用户密钥向最高有效位位置循环移位L位,其中L=(S模(N×8))+1。
11.如权利要求1所述的方法,其特征在于,使预定基本密钥循环移位的所述步骤包括下列步骤使所述预定基本密钥循环移位一定的位数;并且根据所述置换后用户密钥多个部分之每个部分的值和位置加权确定所述的位数,每个所述部分包括一个位序列。
12.如权利要求11所述的方法,其特征在于,每个所述部分由一个字节组成。
13.如权利要求12所述的方法,其特征在于,所述部分由所述置换后用户密钥的所有字节组成。
14.如权利要求13所述的方法,其特征在于,使所述预定基本密钥循环移位一定位数的所述步骤包括下列步骤形成一移位因子S,该移位因子等于值(255+i)×KYEi对i自1至N求和,其中KEY是所述用户密钥的一个字节,所述用户密钥的每个所述字节具有一个标号,N是所述用户密钥的字节数;并且将所述预定基本密钥向最高有效位位置循环移位L位;M是所述基本密钥的字节数,其中L=(S模(M×8))+1。
15.如权利要求1所述的方法,其特征在于,形成一最终密钥的所述步骤包括下列步骤形成一移位因子S,该移位因子等于值(255+i)×KYEi对值i自1至N求和,其中KEY是所述用户密钥的一个字节,所述用户密钥的每个所述字节具有一个标号,N是所述用户密钥的字节数;对所述移位后的基本密钥和所述填充后的用户密钥进行异或计算,以形成一个半最终密钥;并且对所述半最终密钥和所述移位因子S进行异或计算,其中所述移位因子S表示为一个四字节的字。
16.如权利要求1所述的方法,其特征在于,接收输入用户密钥的所述步骤包括下列步骤从一输入设备读取所述输入用户密钥;压缩所述输入用户密钥;确定所述被压缩输入用户密钥中的不同字节个数;并且如果所述被压缩的输入用户密钥的字节数小于预定的总用户密钥字节最小值,或者如果所述被压缩的输入用户密钥的不同字节个数小于预定的不同用户密钥的字节个数最小值,则拒绝所述输入用户密钥。
17.如权利要求16所述的方法,其特征在于,压缩所述用户密钥的所述步骤包括删除所有全由“1”组成的字节和所有全由“0”组成的字节。
18.如权利要求1所述的方法,其特征在于,形成实际用户密钥的所述步骤包括下列步骤从一输入设备至少接收一个输入用户密钥,每个用户密钥包括一个位序列;置换每个所述输入用户密钥,以形成一置换后的用户密钥;对每个所述置换后的用户密钥和每个其他的所述置换后用户密钥进行异或计算,以形成一总用户密钥;置换所述总用户密钥;并且使所述总用户密钥循环移位。
19.如权利要求18所述的方法,其特征在于,形成实际用户密钥的所述步骤在置换所述总用户密钥的所述步骤之前还包括下列步骤压缩所述总用户密钥,以形成一被压缩的总用户密钥;确定所述被压缩的总用户密钥中的不同字节个数;并且如果所述被压缩的总用户密钥的字节数小于预定的总用户密钥长度最小值,或者如果所述被压缩的总用户密钥的不同字节个数小于预定的不同字节数最小值,则拒绝所有所述输入用户密钥。
20.一种对数字数据加密和解密的方法,其特征在于,包括下列步骤形成一实际用户密钥,形成实际用户密钥的所述步骤包括下列步骤接收包含一个位序列的输入用户密钥;从所述输入用户密钥中选择两个被选中的部分,每个所述被选中的部分包括一个位序列,每个所述被选中的部分是根据所述输入用户密钥中多个预定部分的每一个在所述输入用户密钥内的值和位置来确定的;交换所述输入用户密钥的所述被选中的部分,以形成一置换后的用户密钥;并且使所述置换后的用户密钥循环移位一定的位数,以形成一经移位的用户密钥,所述的位数是根据所述置换后用户密钥的多个部分中每个部分的值和位置加权来确定的,每个所述部分包括一位序列;并且用所述经移位的用户密钥填充,使其长度等于所述基本密钥长度,以形成所述实际用户密钥;形成一实际基本密钥,形成实际基本密钥的所述步骤包括下列步骤使所述预定基本密钥循环移位一定的位数,所述位数是根据所述置换后用户密钥的多个部分中每个部分的值和位置加权来确定的,每个所述部分包括一个位序列;形成一最终密钥,形成最终密钥的所述步骤包括下列步骤对所述实际基本密钥和所述实际用户密钥进行异或计算;并且对所述最终密钥和所述数字数据进行异或计算。
21.如权利要求20所述的方法,其特征在于,从所述用户密钥中选择两个被选中部分的所述步骤包括下列步骤从所述用户密钥中选择标号等于i的字节KEYi;从所述用户密钥中选择标号等于L的字节KEYL;并且形成实际用户密钥的所述步骤包括对i自2至N-1的值重复从所述用户密钥中选择一个字节的所述步骤,其中所述用户密钥的每个字节具有一标号,N是所述用户密钥的字节数,并且L=((KEYi-1+KEYi+KEYi+1+i)模N)+1。
22.如权利要求20所述的方法,其特征在于,使所述置换后用户密钥循环移位一定位数的所述步骤包括下列步骤形成一移位因子S,该移位因子等于值(255+i)×KYEi对i自1至N求和,其中KEY是所述用户密钥的一个字节,所述用户密钥的每个所述字节具有一个标号,N是所述用户密钥的字节数;并且使所述置换后用户密钥向最高有效位位置循环移位L位,其中L=(S模(N×8))+1。
23.如权利要求20所述的方法,其特征在于,使所述预定基本密钥循环移位一定位数的所述步骤包括下列步骤形成一移位因子S,该移位因子等于值(255+i)×KYEi对i自1至N求和,其中KEY是所述用户密钥的一个字节,所述用户密钥的每个所述字节具有一个标号,N是所述用户密钥的字节数;并且使所述预定基本密钥向最高有效位位置循环移位L位;M是所述基本密钥的字节数,其中L=(S模(M×8))+1。
24.如权利要求20所述的方法,其特征在于,形成一最终密钥的所述步骤包括下列步骤形成一移位因子S,该移位因子等于值(255+i)×KYEi对i自1至N求和,其中KEY是所述用户密钥的一个字节,所述用户密钥的每个所述字节具有一个标号,N是所述用户密钥的字节数;对所述移位后的基本密钥和所述填充后的用户密钥进行异或计算,以形成一个半最终密钥;并且对所述半最终密钥和所述移位因子S进行异或计算,其中所述移位因子S表示为一个四字节的字。
25.一种用于对数字数据加密和解密的设备,其特征在于,包括接口装置,用于数字数据的双向通信;处理器装置,用于根据一预定用户密钥和一预定基本密钥计算一最终密钥;存储装置,用于存储所述最终密钥;异或装置,用于接收所述最终密钥和所述数字数据,并将所述数字数据和所述最终密钥的异或操作结果提供给所述接口;并且编址装置,它按顺序为所述存储装置提供地址,所述地址与所述最终密钥的连续部分相对应。
26.如权利要求25所述的设备,其特征在于,每个所述连续部分是一个字节。
全文摘要
用最终密钥对二进制数据加密和解密。通过操作一个或多个用户密钥和一基本密钥并用异或操作合并经操作的密钥,来形成最终密钥。用循环异或操作把将被加密或解密的数据与最终密钥合并。用户密钥和基本密钥是具有任何位数的二进制序列。可直接用二进制形式或本发明可解释为二进制序列的其他适当的形式(例如ASCII编码的字母数字字符串)将用户密钥输入本发明。操作用户密钥包括下列步骤重新组合或置换用户密钥的段例如字节,使置换后的用户密钥循环移位一定的位数,并且用一个或多个置换后或经移位密钥的复制件填充一位置,致使所得长度等于基本密钥的长度。置换步骤中用户密钥各段的顺序和移位步骤中使用户密钥移位的位数根据用户密钥本身各段的值和位置确定。操作基本密钥包括使基本密钥循环移位一定位数的步骤,所述数量根据用户密钥各段的值和位置确定。
文档编号H04L9/18GK1143437SQ95191926
公开日1997年2月19日 申请日期1995年3月10日 优先权日1994年3月14日
发明者威廉·Y·肖 申请人:威廉·Y·肖
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1