一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种MCU单片机操作系统的数据加密方法与流程

2023-01-17 12:38:12 来源:中国专利 TAG:

一种mcu单片机操作系统的数据加密方法
技术领域
1.本发明涉及数据处理技术领域,具体涉及一种mcu单片机操作系统的数据加密方法。


背景技术:

2.对程序代码进行密码加密,使程序变成密文是一种常用的mcu加密方式,现有的大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。但这样的保护措施较为脆弱,容易被破解,单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。
3.基于此,本发明提出了一种mcu单片机操作系统的数据加密方法,结合明文中的字母概率对加密过程中的字母数字映射表进行自适应设置,一方面加密方法简单,计算量小,另一方面加密后的密文与原始明文的差异较大,使得攻击者难以从密文中得到有效信息,在不知道密钥情况下,难以破解,保证程序代码存储的安全性。


技术实现要素:

4.本发明提供一种mcu单片机操作系统的数据加密方法,以解决现有的问题。
5.本发明的一种mcu单片机操作系统的数据加密方法采用如下技术方案:本发明一个实施例提供了一种mcu单片机操作系统的数据加密方法,该方法包括以下步骤:获取字母序列中每个字母的可替换字母序列;获取字母矩阵;对字母矩阵进行分块,得到多个分块字母矩阵;获取分块字母矩阵中每种字母的频率以及字母平均频率;当每种字母的频率均小于或等于字母平均频率的5倍时,将字母序列中所有字母随机排列得到字母数字映射表;反之,将频率大于字母平均频率的5倍的字母作为第一候选字母;根据每个第一候选字母的可替换字母序列以及字母序列获取第二候选字母,根据第二候选字母获取总游程性以及最大游程,将所有第一候选字母两两组合,得到第一字母组合,根据所有第一字母组合获取总频数较大性;当总游程性大于或等于总频数较大性时,对字母序列先进行大游程乱序操作再进行小游程乱序操作得到乱序序列,将乱序序列作为字母数字映射表;当总游程性小于总频数较大性时,对字母序列先进行小游程乱序操作再进行大游程乱序操作得到乱序序列,将乱序序列作为字母数字映射表;依次将分块字母矩阵中每个字母作为待加密字母,当待加密字母为分块字母矩阵中第一个字母时,将待加密字母的可替换字母序列中第一个元素作为待加密字母的密文,当待加密字母不为分块字母矩阵中第一个字母时,获取待加密字母在分块字母矩阵中前一个字母的密文在字母数字映射表中的次序,作为第一次序,获取待加密字母的可替换字母序列的第一次序位置处的元素作为待加密字母的密文,对密文进行存储。
6.优选的,所述大游程乱序操作包括:
将输入序列划分为多个长度为最大游程的子序列,将子序列中第个元素作为分割点,其中为向上取整符,将分割点之前的元素作为第一元素块,将分割点以及分割点之后的元素作为第二元素块,将第一元素块拼接在第二元素块之后得到乱序子序列;将所有乱序子序列按照子序列的顺序拼接得到乱序序列。
7.优选的,所述小游程乱序操作包括:依次将输入序列中每个元素作为第一元素,将第一元素的下一个元素作为第二元素,当第二元素与第一元素在字母顺序表中相邻时,则获取在字母顺序表中与第一元素不相邻且在输入序列中位于第一元素之后且距离第一元素最近的元素作为第三元素,将第三元素与第二元素交换位置。
8.优选的,所述获取字母序列中每个字母的可替换字母序列包括:字母序列中每个字母的可替换字母序列包含字母序列中所有字母,且长度为26;字母序列中所有字母的可替换字母序列中相同次序位置的元素均不相同。
9.优选的,所述对字母矩阵进行分块,得到多个分块字母矩阵包括:将字母矩阵转换为数字矩阵,对数字矩阵进行分解获取稀疏矩阵;将稀疏矩阵转换为序列曲线,将序列曲线转换到频域,获取频域中最大频率的倒数作为周期;将周期除以字母矩阵的列数并向上取整得到分块长度,按照分块长度将字母矩阵分成多个分块字母矩阵,所述分块字母矩阵的列数与字母矩阵的列数相等,所述分块字母矩阵的行数与分块长度相等。
10.优选的,所述获取分块字母矩阵中每种字母的频率以及字母平均频率包括:统计分块字母矩阵中每种字母的频率以及所有字母的种类数,将种类数的倒数作为字母平均频率。
11.优选的,所述根据每个第一候选字母的可替换字母序列以及字母序列获取第二候选字母包括:设置一个值为的差异累加数,将第一候选字母的可替换字母序列中第一个元素作为第四元素;对第四元素进行差异判断,包括:获取第四元素在可替换字母序列中下一个元素作为第五元素,若第五元素与第四元素在字母序列中不相邻,则将差异累加数加一,将第五元素作为新的第四元素;重复对新的第四元素进行差异判断操作直到第五元素不存在时停止迭代,将停止迭代时的差异累加数除以可替换字母序列的长度减一之后的值,得到第一候选字母的差异性;将差异性小于第一预设阈值的第一候选字母作为第二候选字母。
12.优选的,所述根据第二候选字母获取总游程性以及最大游程包括:将分块字母矩阵中每个第二候选字母用1表示,将1之外的每个元素用0表示,计算1的数量与0的块数的比值,得到每个第二候选字母的游程性,将每个第二候选字母的游程性除以所有第二候选字母的游程性最大值,得到每个第二后续字母的归一化游程性;将所有第二候选字母的归一化游程性之和作为总游程性;获取每个第二候选字母在分块字母矩阵中所有游程的频数,将所有第二候选字母
的游程中最大的频数对应的游程作为最大游程。
13.优选的,所述根据所有第一字母组合获取总频数较大性包括:获取每个第一字母组合在分块字母矩阵中的频数作为每个第一字母组合的第一频数;利用聚类算法根据所有第一字母组合的第一频数将所有第一字母组合聚为两类,将第一频数均值大的类别中每个第一字母组合作为第二字母组合;将每个第二字母组合的第一频数除以所有第二字母组合的第一频数中的最大值得到每个第二字母组合的频数较大性;将所有第二字母组合的频数较大性之和作为总频数较大性。
14.本发明的技术方案的有益效果是:1.由于不同分块字母矩阵中的字母种类数量和每种字母的频率往往不同,因此根据分块字母矩阵每种字母的频率信息来对不同分块字母矩阵的字母数字映射表进行自适应设置,增大不同分块字母矩阵间的差异性,即使两个分块字母矩阵的字母相同,但字母数字映射表不同,对应的替换后的字母不同,一方面可以增大密文间的无序性,增大破解难度;另一方面字母频率的计算是一个很简单的方法,即加密方法简单,计算量小,就可以达到较好的加密效果;2.通过结合前一个字母的密文对下一个字母进行加密,使得不同字母的密文具有强相关性,若改变一个字母,则会导致之后所有字母的密文发生改变,增加了密文的无序性,使得加密后的密文与原始明文的差异较大,进一步使得攻击者难以从密文中得到有效信息,在不知道密钥情况下,难以破解,增加了程序代码存储的安全性;3.由于字母矩阵的数据量大,进行整体加密一方面容易导致攻击者截获得密文后对密文进行篡改,会直接导致大量的数据错误,另一方法若攻击者猜测得到密钥后则可解密获得所有明文,通过对字母矩阵进行分块,对每个分块字母矩阵分别利用不同的字母数字映射表进行加密,一方面攻击者即使篡改一个分块字母矩阵的密文也不会导致大量的数据的错误,只会导致对应的分块字母矩阵数据错误,另一方面攻击者即使猜测得到一部分密钥,只会导致该部分密钥对应的分块字母矩阵的内容泄露,而不会导致所有明文泄露。通过分块增强了加密方法的鲁棒性,使得程序代码存储更加安全。
附图说明
15.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
16.图1为本发明的一种mcu单片机操作系统的数据加密方法的步骤流程图;图2为本发明的一种mcu单片机操作系统的数据加密方法的字母矩阵转数字矩阵示意图;图3为本发明的一种mcu单片机操作系统的数据加密方法的加密过程示意图。
具体实施方式
17.为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结
合附图及较佳实施例,对依据本发明提出的一种mcu单片机操作系统的数据加密方法,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构或特点可由任何合适形式组合。
18.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
19.下面结合附图具体的说明本发明所提供的一种mcu单片机操作系统的数据加密方法的具体方案。
20.请参阅图1,其示出了本发明一个实施例提供的一种mcu单片机操作系统的数据加密方法的步骤流程图,该方法包括以下步骤:s001.获取程序中字母,将字母转化为字母矩阵。
21.需要说明的是,英文字母为26个,程序中存在重复单词的概率较大,使得部分字母排列具有一定的规律。可对通过对数据分块,对不同块的数据设置不同的密钥来避免加密之后的密文体现出明文中字母的排列规律。为了方便对数据进行分块,首先需要将数据转化为矩阵格式。
22.在本实施例中,首先统计得到程序中的字母数量,根据字母数量将程序中所有字母转换为行列相近的矩阵,称为字母矩阵。例如:一个100个字母的程序,转化为10*10的字母矩阵。在转换过程中,若某一行或某一列中的字母数量不足列数或行数,则对该行或该列进行补0操作。需要说明的是,本实施例仅将程序中的字母转化为矩阵格式,对于其他数据,例如程序中的符号、数字等不变。
23.s002.对字母矩阵进行分块,获得分块字母矩阵。
24.需要说明的是,对字母矩阵进行分块时,可按照字母矩阵中字母数据的周期性进行分块,对每个块利用不同的密钥分别进行加密,从使得密文中体现不出明文的周期性。rpca(鲁棒主成分分析)是一种将原始矩阵分解为低秩矩阵和稀疏矩阵的加和的方法,低秩矩阵的不同行间是线性相关的,可以表示不同行间的联系或相近特征,稀疏矩阵相当于是噪声数据,如果某些行的噪声数据相近,则原始矩阵上对应行的关联性大,因此可通过计算稀疏矩阵中的数据规律,对原始矩阵进行分块。由于rpca针对的是数字矩阵,因此首先要把字母矩阵转化为数字矩阵。
25.在本实施例中,将字母矩阵中每个字母用其在个英文字母表中的次序来表示,得到数字矩阵。如图2所示,字母为个英文字母表中第一个元素,因此字母矩阵中字母在数字矩阵中对应的位置的元素的值为,字母为个英文字母表中第二个元素,因此字母矩阵中字母在数字矩阵中对应的位置的元素的值为,同理字母矩阵中字母在数字矩阵中对应的位置的元素的值为。
26.需要说明的是,本发明不直接计算字母矩阵的周期性,而是通过rpca对数字矩阵分解后再计算周期性,是因为直接通过字母矩阵计算周期性得到的结果只能表示不同数据之间的整体相似性,不能表示趋势相似性,例如和的数据变化趋势不同,但余弦相似度较大,余弦相似度只能表示数据之间的整体相似性,不能表示趋势相似性。而
rpca分解得到的低秩矩阵表示的是数据之间的联系,表示的是原始矩阵所有数据之间的相同特征,稀疏矩阵表示的原始矩阵的每个数据的独有特征,则分析稀疏矩阵可得到原始矩阵不同数据之间的趋势相似性。因此本实施例通过rpca分解后的稀疏矩阵的数据规律对原始矩阵进行分块。
27.在本实施例中,将字母矩阵转化为数字矩阵后,通过rpca分解得到稀疏矩阵,将稀疏矩阵相邻行相连的方式(第二行的开始接第一行的结尾,第三行的开始接第二行的结尾)转化为序列曲线,利用傅里叶变换将序列曲线转换到频域,获取频域中的最大频率。最大频率反应的是数据最为频繁的变化,则以最大频率对应的周期作为字母矩阵的周期可以反应字母矩阵中数据的变化规律。最大频率对应的周期为最大频率的倒数。
28.周期的大小反应的是周期内数据的个数,则将周期除以字母矩阵的列数并向上取整,所得到的结果作为分块长度,分块长度反应了周期大小在字母矩阵中最接近的行数。按照分块长度将字母矩阵分成多个分块字母矩阵,每个分块字母矩阵的列数与字母矩阵的列数相等,每个分块字母矩阵的行数与分块长度相等。例如字母矩阵的行数为,分块长度为时,字母矩阵到行为第一个分块字母矩阵,字母矩阵到行为第二个分块字母矩阵,字母矩阵到行为第三个分块字母矩阵。
29.至此,实现了对字母矩阵的分块,获得了分块字母矩阵。分块的目的是由于字母矩阵中不同分块字母矩阵之间的相似度较大,为了在密文中不体现出这种信息,增加破解难度,通过对字母矩阵进行分块,不同分块字母矩阵利用不同的密钥进行加密,使得密文更加复杂,难以破解。同时由于字母矩阵的数据量大,进行整体加密一方面容易导致攻击者截获得密文后对密文进行篡改,会直接导致大量的数据错误,另一方法若攻击者猜测得到密钥后则可解密获得所有明文,通过对字母矩阵进行分块,对每个分块字母矩阵分别利用不同的密钥进行加密,一方面攻击者即使篡改一个分块字母矩阵的密文也不会导致大的数据的错误,只会导致对应的分块字母矩阵数据错误,另一方面攻击者即使猜测得到一部分密钥,只会导致该部分密钥对应的分块字母矩阵的内容泄露,而不会导致所有明文泄露。通过分块增强了加密方法的鲁棒性。
30.s003.获取每个分块字母矩阵中每个字母的可替换字母序列。
31.英文字母为个,则将英文字母顺序表作为字母序列,由加密端和解密端双方事先约定字母序列中每个字母的可替换字母序列,每个字母的可替换字母序列为一个长度为且包含了所有个英文字母的序列,并且所有字母的可替换字母序列中相同次序位置的元素均不相同。将所有字母以及该字母对应可替换字母序列构建为一个加密字典。
32.例如:字母的可替换字母序列为,字母的可替换字母序列为,字母的可替换字母序列为等。
33.需要说明的是,满足条件的加密字典有多个,加密端和解密端双方可事先约定多个加密字典,对不同的分块字母矩阵利用不同的加密字典进行加密。同时,加密端和解密端可每隔一段时间更换加密字典,以提高保密效果。
34.s004.获取每个分块字母矩阵的总游程性以及总频数较大性。
35.需要说明的是,本实施例中的加密方法为,将分块字母矩阵中当前待加密字母的
前一个字母的密文在字母数字映射表中的序列作为第一次数,获取当前待加密字母的可替换字母序列中第一次序位置处的元素作为当前待加密字母的密文。在该加密过程中应用了字母数字映射表,字母数字映射表是指表示每个字母对应的数字的映射关系表。字母数字映射表如果实现规定,在长时间的加密过程中,容易被泄露。为避免该问题发生,可结合分块字母矩阵中的字母出现的规律对字母数字映射表进行自适应获取,以提高加密效果。若字母数字映射表如果随机设置,加密效果不能保证一直较好,可能会出现以下两种极端情况:1.连续的同一个字母对应的密文中,容易暴露该字母中对应的可替换字母序列中的字母元素的前后关系。
36.所有字母的可替换字母序列的组合中,当某些字母的可替换字母序列的中的元素顺序与26个英文字母的元素顺序的相近程度较大时,连续的同一个字母的密文容易暴露该字母中的可替换字母序列中的元素字母的前后关系(通过长时间的破解,容易得到该规律)。例如当的可替换字母序列为,的可替换字母序列为时,同时当每个字母的字母数字映射表与英文字母顺序表相同时,假设明文为时,则加密后密文为。当明文中的一个字母连续出现的越多,攻击者在对不同分块字母矩阵的破解过程中会发现相同的密文出现很多次,从而增加了被破解的风险。
37.当某些字母的可替换字母序列中元素的顺序与英文字母顺序表中的字母顺序相近时,可能会导致该问题发生。为了避免该问题,需要对字母数字映射表进行调整,使得字母数字映射表中元素的顺序与英文字母顺序表中字母的顺序差异较大,同时对不同块应用不同的字母数字映射表,以此来增加安全性。
38.2.两个字母组合的出现概率越大,攻击者越容易得到数字字母映射表中的映射关系。
39.例如字母和的可替换字母序列与情况中相同,同时当每个字母的字母数字映射表与英文字母顺序表相同时,明文的密文为,将密文转换为其在英文字母顺序表中的数字为。可见明文中第一次出现的对应的密文的数字为,明文中第二次出现的对应的密文的数字为;明文中第一次出现的对应的密文的数字为,明文中第二次出现的对应的密文的数字为。根据以上可知明文连续出现时,对应的密文的数字的间隔均为,而明文连续出现时,对应的密文的数字的间隔均为。这种规律容易被攻击者利用对明文进行破解。
40.为了避免该问题,需要对字母数字映射表进行调整,使得组合出现频数大的字母的可替换字母序列中相邻的字母在字母数字映射表中的距离较远。
41.以上两个极端情况均为某些字母的可替换字母序列中的元素的次序与英文字母顺序表中字母的顺序相近,且字母数字映射表与英文字母顺序表相近时才会出现的问题。因此计算分块字母矩阵中频率较大的字母的可替换字母序列与英文字母顺序表的差异,当差异较大时,不会发生上述两种极端情况,此时字母数字映射表可随机设置。反之,当差异较小时,可能会发生上述的极端情况,此时需要根据分块字母矩阵来分析以上两种极端情况发生的概率,进行字母数字映射表的设置。
42.在本实施例中,首先统计分块字母矩阵中每种字母出现的频率,以及分块字母矩阵中出现的字母的种类数。将种类数的倒数作为字母平均频率,例如一个分块字母矩阵中共有18种字母,则字母平均频率为。可认为频率大于字母平均频率5倍的字母的频率较大,称之为第一候选字母。
43.以上两种极端情况发生的前提均是某些字母的游程大或某些字母组合的出现次数多,若不存在第一候选字母,则说明每种字母的游程不大或某些字母组合的出现次数不多,此时不会发生以上两种极端情况,攻击者无法通过密文对明文中同一个字母对应的可替换字母进行分析。因此当不存在第一候选字母时,随机设置一个字母数字映射表,即将字母序列中所有字母随机排列得到字母数字映射表,其中字母序列为英文字母顺序表。
44.当存在第一候选字母时,计算每个第一候选字母的可替换字母序列与英文字母顺序表的差异,得到每个第一候选字母的差异性,具体方法为:设置一个值为的差异累加数,将第一候选字母的可替换字母序列中第一元素作为第四元素。获取第四元素在可替换字母序列中下一个元素作为第五元素,若第五元素与第四元素在英文字母顺序表中不相邻,则将差异累加数加一,将第五元素作为新的第四元素。重复以上操作,对新的第四元素进行差异判断操作直到第五元素不存在时停止迭代,将停止迭代时的差异累加数除以可替换字母序列的长度减一之后的值,得到第一候选字母的差异性。
45.例如字母的可替换字母序列为,初始的差异累加数为,为第四元素,为第五元素,和在英文字母顺序表中相邻,此时差异累加数不变;为第四元素,为第五元素,和在英文字母顺序表中不相邻,此时差异累加数加一;同理,和在英文字母顺序表中相邻,此时差异累加数不变;和在英文字母顺序表中不相邻,此时差异累加数加一;和在英文字母顺序表中不相邻,此时差异累加数加一;和在英文字母顺序表中不相邻,此时差异累加数加一。最终差异累加数为。字母的可替换字母序列的长度为,则字母的差异性为。
46.需要说明的是,不直接计算可替换字母序列中每个元素与英文字母顺序表中相同位置的字母的差异,是由于例如可替换字母序列,与英文字母顺序表差异较小,但通过可替换字母序列中每个元素与英文字母顺序表中相同位置的字母的差异,使得
得到的数值较大,会导致较大误差。
47.在本实施例中,将差异性小于第一预设阈值的第一候选字母作为第二候选字母。在本实施例中,在其他实施例中,实施人员可根据需要设置第一预设阈值的值。
48.对于每个第二候选字母,将分块字母矩阵中除了该第二候选字母之外的所有字母用0表示,将该第二候选字母用1表示,当0连续出现时将连续出现的0看做一个块,然后计算1的数量与0的块数的比值,将比值作为该第二候选字母的游程性。例如:对于分块字母矩阵来说,当计算的游程性时,首先将分块字母矩阵转化为,此时的数量为,的块数为,则的游程性为。对于分块字母矩阵来说,当计算的游程性时,首先将分块字母矩阵转化为,此时的数量为,的块数为,则的游程性为。需要说明的是,游程性越大,则越可能发生上述极端情况1,此时越需要针对游程设置字母数字映射表来避免极端情况1。
49.将分块字母矩阵中每个游程性除以所有第二候选字母的游程性最大值得到每个第二后续字母的归一化游程性。将所有第二候选字母的归一化游程性之和作为总游程性。总游程性反应了极端情况1发生的可能性,当总游程性越大时,越需要针对游程设置字母数字映射表来避免极端情况1。
50.针对极端情况2,需要计算第一候选字母之间的组合性质,首先将所有第一候选字母两两组合,获取所有可能的组合,将得到的每个组合作为第一字母组合。统计每个第一字母组合在分块字母矩阵中出现的频数作为每个第一字母组合的第一频数。利用聚类算法根据所有第一字母组合的第一频数将所有第一字母组合聚为两类,将第一频数均值大的类别中每个第一字母组合作为第二字母组合。第二字母组合为在分块字母矩阵中出现频数较多的字母组合。将每个第二字母组合的第一频数除以所有第二字母组合的第一频数中的最大值得到每个第二字母组合的频数较大性,频数较大性越大,则越可能发生上述极端情况2,此时越需要针对字母组合设置字母数字映射表来避免极端情况2。将所有第二字母组合的频数较大性之和作为总频数较大性。总频数较大性反应了极端情况2发生的可能性,当总频数较大性越大时,越需要针对字母组合设置字母数字映射表来避免极端情况2。
51.当第二候选字母不存在时总游程性不存在,此时将总游程性记为0,当第二字母组合不存在时,总频数较大性不存在,此时将总频数较大性记为0。
52.至此,获取了总游程性以及总频数较大性。总游程性以及总频数较大性反应了两种极端情况发生的可能性,根据总游程性以及总频数较大性可以在后续设置字母数字映射表时尽可能避免两种极端情况的发生,使得加密结果更加复杂,抵抗统计分析攻击。
53.s005.根据总游程性以及总频数较大性自适应获取字母数字映射表。
54.当总游程性为0且总频数较大性为0时,第二候选字母不存在且第二字母组合不存在,此时则说明每种字母的游程不大且字母组合的出现次数不多,此时不会发生步骤s004中所述的两种极端情况,攻击者无法通过密文对明文中同一个字母对应的可替换字母进行分析。因此当总游程性为0且总频数较大性为0时,随机设置一个字母数字映射表,即将字母序列中所有字母随机排列得到字母数字映射表,其中字母序列为英文字母顺序表。
55.需要说明的是,当总游程性不为0或总频数较大性不为0时,可能会发生步骤s004中所述的两种极端情况,此时需要将字母数字映射表设置为与英文字母顺序表差异较大的序列。当总游程性较大时,可通过设置字母数字映射表来增大分块字母矩阵中连续字母的差异性来避免极端情况1(其中差异性是指步骤s004中的差异性的含义,且在此处差异性不再只是考虑1邻域字母,需要考虑更大范围的邻域字母)。当总频数较大性较大时,可通过设置字母数字映射表来增大分块字母矩阵中字母与前后字母的在字母数字映射表中的差异性来避免极端情况2(其中差异性是指步骤s004中的差异性的含义,且在此处差异性只考虑1邻域字母)。例如第二候选字母的游程为3,为避免极端情况1,需要考虑3邻域字母的差异性,而为避免极端情况2,由于是字母组合,只需考虑1邻域字母(之前计算差异性,考虑的就是1邻域字母)即可。
56.在本实施例中,首先获取每个第二候选字母在分块字母矩阵中所有游程的频数,将所有第二候选字母的游程中最大的频数对应的游程作为最大游程,记为。
57.将总游程性记为,将总频数较大性记为。以字母序列即英文字母顺序表为初始的字母数字映射表。
58.当时,说明大游程的影响较大,更可能发生极端情况1,此时需要首先对字母序列进行大游程乱序操作避免发生极端情况1,再进一步进行小游程乱序操作避免发生极端情况2,将经过大游程乱序操作以及小游程乱序操作之后得到的序列作为字母数字映射表。
59.当时,说明小游程的影响较大,更可能发生极端情况2,此时需要首先对字母序列进行小游程乱序操作避免发生极端情况2,再进一步进行大游程乱序操作避免发生极端情况1,将经过小游程乱序操作以及大游程乱序操作之后得到的序列作为字母数字映射表。
60.大游程乱序操作具体包括:将需要进行大游程乱序操作的序列记为输入序列,将输入序列划分为多个长度为最大游程的子序列,将子序列中第个元素作为分割点,其中为向上取整符,将分割点之前的元素作为第一元素块,将分割点以及分割点之后的元素作为第二元素块,将第一元素块拼接在第二元素块之后得到乱序子序列。将所有乱序子序列按照子序列的顺序拼接得到乱序序列。例如手输入序列为,最大游程,首先输入序列为分为多个长度为的子序列、。将每个子序列中第个元素作为分割点,如中为分割点,将分割点之前的元素作为第一元素块,将分割点以及分割点之后的元素作为第二元素块,将第一元素块拼接在第二元素块之后得到乱序子序列。同理的乱序子序列为。将所有乱序子序列、按照子序列的顺序拼接得到乱序序列。需要说明的是,大游程乱序
操作不采用反序而采用分割点分割的方法是因为,在反序关系中,如反序为,依旧保持着原本的相邻关系,因此本实施例选择中间的位置作为起始数据(即分割点)对子序列进行分块,将不同块乱序拼接作为大游程乱序操作的结果。
61.小游程乱序操作具体包括:将需要进行小游程乱序操作的序列记为输入序列,依次将输入序列中每个元素作为第一元素,将第一元素的下一个元素作为第二元素,当第二元素与第一元素在英文字母顺序表中相邻时,则获取在英文字母顺序表中与第一元素不相邻且在输入序列中位于第一元素之后且距离第一元素最近的元素作为第三元素,将第三元素与第二元素交换位置。例如输入序列为,首先将作为第一元素,作为第二元素,和在英文字母顺序表中相邻,此时在英文字母顺序表中与第一元素不相邻且在输入序列中位于第一元素之后且距离第一元素最近的元素作为第三元素,将第三元素与第二元素交换位置,得到。将作为第一元素,作为第二元素,第一元素与第二元素在英文字母顺序表中不相邻,则不做操作,同理和在英文字母顺序表中不相邻,和在英文字母顺序表中不相邻,和在英文字母顺序表中不相邻,则不做操作。最终得到结果为。一种加密示意图参见图3。
62.至此,获取了字母数字映射表。由于不同分块字母矩阵中的字母种类数量和每种字母的频率存在差别,因此根据字母的频率以及游程信息来对不同分块字母矩阵的字母数字映射表进行自适应设置,使得后续根据字母数字映射表对每个分块字母矩阵进行加密,增大了不同分块字母矩阵的密文差异性,使两个分块字母矩阵的字母相同,得到的字母数字映射表不同,使得后续加密得到的密文不同,一方面可以增大密文间的无序性,增大破解难度;另一方面字母频率的计算是一个很简单的方法,即加密方法简单,计算量小,就可以达到较好的加密效果。
63.s006.根据字母数字映射表以及可替换字母序列对每个分块字母矩阵进行加密,获取密文。
64.依次将分块字母矩阵中每个字母作为待加密字母,当待加密字母为分块字母矩阵中第一个字母时,将待加密字母的可替换字母序列中第一个元素作为待加密字母的密文,当待加密字母不为分块字母矩阵中第一个字母时,获取待加密字母在分块字母矩阵中前一个字母的密文在字母数字映射表中的次序,作为第一次序,获取待加密字母的可替换字母序列的第一次序位置处的元素作为待加密字母的密文。
65.例如分块字母矩阵为,首先将作为待加密字母,获取可替换字母序列中的第一个元素作为待加密字母的密文,将其记为,通过字母数字映射表,获取中字母数字映射表中的次序作为第一次序,记为;将作为待加密字母,获取
可替换字母序列中的第个元素作为待加密字母的密文,将其记为,然后通过字母数字映射表,获取中字母数字映射表中的次序作为第一次序,记为;将作为待加密字母,获取可替换字母序列中的第个元素作为待加密字母的密文,将其记为,然后通过字母数字映射表,获取中字母数字映射表中的次序作为第一次序,记为;将作为待加密字母,获取可替换字母序列中的第个元素作为待加密字母的密文,将其记为。如此实现了将分块字母矩阵加密为。
66.至此,完成了对分块字母矩阵的加密。本实施例通过结合前一个字母的密文对下一个字母进行加密,使得不同字母的密文具有强相关性,若改变一个字母,则会导致之后所有字母的密文发生改变,增加了密文的无序性,使得加密后的密文与原始明文的差异较大,进一步使得攻击者难以从密文中得到有效信息,在不知道密钥情况下,难以破解,增加了数据的安全性。
67.将每个分块字母矩阵的总游程性和总频数较大性作为第一补充密钥,将每个分块字母矩阵的最大游程作为第二补充密钥。对第一补充密钥和第二补充密钥利用非对称加密算法进行加密,将加密结果记为补充密文。需要说明的是,本实施例中仅对第一补充密钥和第二补充密钥利用非对称加密算法进行加密,而对分块字母矩阵不直接利用非对称加密算法进行加密是因为,非对称加密算法安全性强但其加解密速度慢,不适合数据量大的数据加密,仅适合数量量小的数据加密。而分块字母矩阵数据量大,采用非对称加密算法加密效率低,因此需要采用本实施例中的加密方法进行加密。
68.将所有分块字母矩阵的密文以及补充密文存储在mcu单片机操作系统的存储器上。
69.s007.对密文进行解密。
70.在对密文进行解密时,需要同时获取密文以及补充密文,首先利用非对称加密算法对补充密文进行解密得到第一补充密钥和第二补充密钥,第一补充密钥为每个分块字母矩阵的总游程性和总频数较大性,第二补充密钥为每个分块字母矩阵的最大游程。
71.利用步骤s005中的方法获取每个分块字母矩阵的字母数字映射表。根据每个分块字母矩阵的密文以及字母数字映射表对密文进行解密:依次将密文中第每个字母作为第一密文,当第一密文为密文中第一个字母时,获取所有字母的可替换字母序列第一个元素作为候选解密字母,获取与第一密文相同的后续解密字母对应的字母作为第一密文的明文;当第一密文不为密文中第一个字母时,将第一密文在密文中前一个字母在字母数字映射表中的次序作为第一次序,获取所有字母的可替换字母序列第第一次序个元素作为候选解密字母,获取与第一密文相同的候选解密字母对应的字母作为第一密文的明文。
72.同理,可得到每个分块字母矩阵的明文,进一步可得到程序代码。
73.通过以上步骤,完成了mcu单片机操作系统中程序的加密与解密。
74.本发明实施例根据分块字母矩阵每种字母的频率信息来对不同分块字母矩阵的字母数字映射表进行自适应设置,增大不同分块字母矩阵间的差异性,即使两个分块字母矩阵的字母相同,但字母数字映射表不同,对应的替换后的字母不同,一方面可以增大密文间的无序性,增大破解难度;另一方面字母频率的计算是一个很简单的方法,即加密方法简单,计算量小,就可以达到较好的加密效果;通过结合前一个字母的密文对下一个字母进行加密,使得不同字母的密文具有强相关性,若改变一个字母,则会导致之后所有字母的密文发生改变,增加了密文的无序性,使得加密后的密文与原始明文的差异较大,进一步使得攻击者难以从密文中得到有效信息,在不知道密钥情况下,难以破解,增加了程序代码存储的安全性;由于字母矩阵的数据量大,进行整体加密一方面容易导致攻击者截获得密文后对密文进行篡改,会直接导致大量的数据错误,另一方法若攻击者猜测得到密钥后则可解密获得所有明文,通过对字母矩阵进行分块,对每个分块字母矩阵分别利用不同的字母数字映射表进行加密,一方面攻击者即使篡改一个分块字母矩阵的密文也不会导致大量的数据的错误,只会导致对应的分块字母矩阵数据错误,另一方面攻击者即使猜测得到一部分密钥,只会导致该部分密钥对应的分块字母矩阵的内容泄露,而不会导致所有明文泄露。通过分块增强了加密方法的鲁棒性,使得程序代码存储更加安全。
75.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献