一种数据防伪加密方法、装置、计算机设备及存储介质转让专利

申请号 : CN202111219274.6

文献号 : CN113660620B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李石峰温介邦

申请人 : 北京卓建智菡科技有限公司上海卓菡科技有限公司

摘要 :

本公开涉及数据传输技术领域,提供了一种数据防伪加密方法、装置、计算机设备及存储介质。该方法包括:将原始数据拆分成第一数据和第二数据;对第二数据进行扩展,并使用第一密钥对扩展后的第二数据进行加密,得到第二加密数据;将第二加密数据与第一数据进行位置交换,并将第一数据确定为新的第二数据;对新的第二数据进行扩展,并使用第二密钥对扩展后的新的第二数据进行加密,得到新的第二加密数据;将新的第二加密数据与第二加密数据进行交换后拼接,并经逆置换得到目标加密数据。本公开可有效防止原始数据被恶意复制,安全性高,且计算量小,可适用于单片机类设备使用。

权利要求 :

1.一种数据防伪加密方法,其特征在于,包括:获取待广播的原始数据,将所述原始数据拆分成第一数据和第二数据;

对所述第二数据进行扩展,得到第二扩展数据,使用预设的第一密钥对所述第二扩展数据进行加密,得到第二加密数据;

将所述第二加密数据与所述第一数据进行位置交换,并将所述第一数据确定为新的第二数据;

对所述新的第二数据进行扩展,得到新的第二扩展数据,使用预设的第二密钥对所述新的第二扩展数据进行加密,得到新的第二加密数据;

将所述新的第二加密数据与所述第二加密数据进行位置交换后拼接在一起,并经逆置换处理,得到目标加密数据;

所述使用预设的第一密钥对所述第二扩展数据进行加密,得到第二加密数据,包括:将所述第二扩展数据与所述第一密钥进行异或运算,得到第一异或运算结果;

对所述第一异或运算结果进行替代运算,获得第一替代运算结果;

对所述替代运算结果进行置换运算,获得第一置换结果;

对所述第一置换结果与所述第二数据进行异或运算,得到第二加密数据;

所述对所述第一异或运算结果进行替代运算,获得第一替代运算结果,包括:将所述第一异或运算结果输入S盒,以对所述第一异或运算结果进行降位,获得位数与所述第一密钥相同的第一替代运算结果;

所述将所述新的右半部分加密数据与所述右半部分加密数据进行位置交换后拼接在一起,得到目标加密数据,包括:将所述新的第二加密数据与所述第二加密数据进行左右位置交换后拼接在一起,完成针对所述原始数据的一轮加密,得到第一轮加密数据;

当针对所述原始数据的加密轮数未满足预设的轮数阈值时,对前一轮加密数据进行再次加密处理,获得第N轮加密数据;其中,N=2;

当针对所述原始数据的加密轮数满足预设的轮数阈值时,将第N轮加密数据经逆置换处理后确定为目标加密数据;

所述S盒的值生成算法如下:(a)定义初始排列0、1、2、3、4、5、6、7、8、9、10、11、12、13、

14、15;(b)设第n个S盒为Sn,n取值为1 8;

~

(c)Sn的行列式生成公式如下:P>>((n*1)‑1);

P>>((n*2)‑1);

P>>((n*3)‑1);

P>>((n*4)‑1);

式中,P表示(a)中的初始排列矩阵,>>表示循环右移,n表示S盒子的索引。

2.根据权利要求1所述的数据防伪加密方法,其特征在于,所述将所述原始数据拆分成第一数据和第二数据,包括:

按预设的置换规则对所述原始数据进行置换处理,获得初始置换数据;

将所述初始置换数据拆分成左半部分数据和右半部分数据,所述左半部分数据对应第一数据,所述右半部分数据对应第二数据。

3.根据权利要求1所述的数据防伪加密方法,其特征在于,所述对所述第二数据进行扩展,得到第二扩展数据,包括:调整所述第二数据的次序,并重复所述第二数据中预设位置的数据,得到第二扩展数据。

4.根据权利要求1所述的数据防伪加密方法,其特征在于,所述使用预设的第一密钥对所述第二扩展数据进行加密,得到第二加密数据之前,还包括:获取原始密钥,将所述原始密钥拆分成第一子密钥和第二子密钥;

对所述第一子密钥进行循环右移变换,得到第一变换子密钥,并对所述第二子密钥进行循环右移变换,得到第二变换子密钥;

将所述第一变换子密钥和所述第二变换子密钥进行合并,得到第一合并密钥;

对所述第一合并密钥进行选择置换,生成第一密钥。

5.根据权利要求4所述的数据防伪加密方法,其特征在于,所述将所述原始密钥拆分成第一子密钥和第二子密钥,包括:对所述原始密钥进行降位处理,得到降位密钥;

对所述降位密钥进行位置置换,得到置换密钥,将所述置换密钥拆分成第一子密钥和第二子密钥。

6.根据权利要求4所述的数据防伪加密方法,其特征在于,所述使用预设的第二密钥对所述新的第二数据进行加密,得到新的第二加密数据之前,还包括:对所述第一变换子密钥进行循环右移变换,得到第三变换子密钥,并对所述第二变换子密钥进行循环右移变换,得到第四变换子密钥;

将所述第三变换子密钥和所述第四变换子密钥进行合并,得到第二合并密钥;

对所述第二合并密钥进行置换选择,生成第二密钥。

7.一种数据防伪加密装置,其特征在于,包括:数据获取模块,用于获取待广播的原始数据,将所述原始数据拆分成第一数据和第二数据;

第一加密模块,用于对所述第二数据进行扩展,得到第二扩展数据;使用预设的第一密钥对所述第二扩展数据进行加密,得到第二加密数据;

交换模块,用于将所述第二加密数据与所述第一数据进行位置交换,并将所述第一数据确定为新的第二数据;

第二加密模块,用于对所述新的第二数据进行扩展,得到新的第二扩展数据;使用预设的第二密钥对所述新的第二数据进行加密,得到新的第二加密数据;

输出模块,用于将所述新的第二加密数据与所述第二加密数据进行左右位置交换后拼接在一起,并经逆置换处理,得到目标加密数据;

所述使用预设的第一密钥对所述第二扩展数据进行加密,得到第二加密数据,包括:将所述第二扩展数据与所述第一密钥进行异或运算,得到第一异或运算结果;

对所述第一异或运算结果进行替代运算,获得第一替代运算结果;

对所述替代运算结果进行置换运算,获得第一置换结果;

对所述第一置换结果与所述第二数据进行异或运算,得到第二加密数据;

所述对所述第一异或运算结果进行替代运算,获得第一替代运算结果,包括:将所述第一异或运算结果输入S盒,以对所述第一异或运算结果进行降位,获得位数与所述第一密钥相同的第一替代运算结果;

所述将所述新的右半部分加密数据与所述右半部分加密数据进行位置交换后拼接在一起,得到目标加密数据,包括:将所述新的第二加密数据与所述第二加密数据进行左右位置交换后拼接在一起,完成针对所述原始数据的一轮加密,得到第一轮加密数据;

当针对所述原始数据的加密轮数未满足预设的轮数阈值时,对前一轮加密数据进行再次加密处理,获得第N轮加密数据;其中,N=2;

当针对所述原始数据的加密轮数满足预设的轮数阈值时,将第N轮加密数据经逆置换处理后确定为目标加密数据;

所述S盒的值生成算法如下:(a)定义初始排列0、1、2、3、4、5、6、7、8、9、10、11、12、13、

14、15;(b)设第n个S盒为Sn,n取值为1 8;

~

(c)Sn的行列式生成公式如下:P>>((n*1)‑1);

P>>((n*2)‑1);

P>>((n*3)‑1);

P>>((n*4)‑1);

式中,P表示(a)中的初始排列矩阵,>>表示循环右移,n表示S盒子的索引。

8.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并且可以在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述方法的步骤。

9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述方法的步骤。

说明书 :

一种数据防伪加密方法、装置、计算机设备及存储介质

技术领域

[0001] 本公开涉及数据传输技术领域,尤其涉及一种数据防伪加密方法、装置、计算机设备及存储介质。

背景技术

[0002] 蓝牙Beacon(信标)定位作为一种低成本的区域定位技术被广泛应用于各种定位场景。通常,蓝牙设备可通过广播的方式将蓝牙信标数据,包括MAC地址(别称局域网地址、
以太网地址、物理地址,直译为媒体存取控制位址,是用来确认网络设备位置的位址)、UUID
(蓝牙信标标识1)、Major(蓝牙信标标识2)、Minor(蓝牙信标标识3)和Tx power(蓝牙信标
发送功率)等周期性地发送给周围的设备。
[0003] 然而,由于蓝牙设备采用上述广播的方式向周围设备发送蓝牙信标数据的过程中未采取任何的加密措施,所以任何设备(包括安全设备和非法设备)都可以随意接收蓝牙设
备发送的蓝牙信标数据。由此一些非法设备可以极低的成本非法复制该蓝牙信标数据,并
利用复制的蓝牙信标数据来达到不良目的(例如定位作弊等),不仅严重干扰了蓝牙定位系
统的稳定运行,而且还会给蓝牙定位系统带来巨大的安全隐患。

发明内容

[0004] 有鉴于此,本公开实施例提供了一种数据防伪加密方法、装置、计算机设备及存储介质,以解决现有技术中的定位蓝牙设备广播的数据未经任何加密处理,容易被非法设备
随意或恶意复制利用、安全性低的问题。
[0005] 本公开实施例的第一方面,提供了一种数据防伪加密方法,包括:
[0006] 获取待广播的原始数据,将所述原始数据拆分成第一数据和第二数据;
[0007] 对所述第二数据进行扩展,得到第二扩展数据;使用预设的第一密钥对所述第二扩展数据进行加密,得到第二加密数据;
[0008] 将所述第二加密数据与所述第一数据进行位置交换,并将所述第一数据确定为新的第二数据;
[0009] 对所述新的第二数据进行扩展,得到新的第二扩展数据;使用预设的第二密钥对所述新的第二扩展数据进行加密,得到新的第二加密数据;
[0010] 将所述新的第二加密数据与所述第二加密数据进行左右位置交换后拼接在一起,再经逆置换处理,得到目标加密数据并输出。
[0011] 本公开实施例的第二方面,提供了一种数据防伪加密装置,包括:
[0012] 数据获取模块,用于获取待广播的原始数据,将所述原始数据拆分成第一数据和第二数据;
[0013] 第一加密模块,用于对所述第二数据进行扩展,得到第二扩展数据;使用预设的第一密钥对所述第二扩展数据进行加密,得到第二加密数据;
[0014] 交换模块,用于将所述第二加密数据与所述第一数据进行位置交换,并将所述第一数据确定为新的第二数据;
[0015] 第二加密模块,用于对所述新的第二数据进行扩展,得到新的第二扩展数据;使用预设的第二密钥对所述新的第二扩展数据进行加密,得到新的第二加密数据;
[0016] 输出模块,用于将所述新的第二加密数据与所述第二加密数据进行左右位置交换后拼接在一起,再经逆置换处理,得到目标加密数据并输出。
[0017] 本公开实施例的第三方面,提供了一种计算机设备,包括存储器、处理器以及存储在存储器中并且可以在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述
方法的步骤。
[0018] 本公开实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
[0019] 本公开实施例与现有技术相比存在的有益效果至少包括:在数据发送设备(如蓝牙设备等定位设备)以广播的方式发送其设备数据(如蓝牙信标数据等)的过程中,通过将
待广播的原始数据拆分成第一数据和第二数据;对第二数据进行扩展,得到第二扩展数据;
使用预设的第一密钥对该第二扩展数据进行加密,得到第二加密数据;将第二加密数据与
第一数据进行位置交换,并将第一数据确定为新的第二数据;对新的第二数据进行扩展,得
到新的第二扩展数据;使用预设的第二密钥对新的第二扩展数据进行加密,得到新的第二
加密数据;将新的第二加密数据与第二加密数据进行左右位置交换后拼接在一起,再经逆
置换处理,得到目标加密数据并输出,从而完成对原始数据的加密处理,该加密过程极大增
加了原始数据被其他接收设备破解的难度,可以有效防止该广播的数据被其他接收设备随
意或恶意复制,安全性高。此外,相较于其他现有的加密算法(例如,AES、3DES、RCA和ECC
等),本公开的加密方法计算量更小,可适用于单片机类设备使用,具有较好的市场前景。

附图说明

[0020] 为了更清楚地说明本公开实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些
实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附
图获得其它的附图。
[0021] 图1是本公开实施例提供的一种数据防伪加密方法的流程图;
[0022] 图2是本公开实施例提供的一种蓝牙信标数据的格式示意图;
[0023] 图3是本公开实施例提供的一种蓝牙信标数据中的UUID的数据结构示意图;
[0024] 图4是本公开实施例提供的一种数据防伪加密装置的框图;
[0025] 图5是本公开实施例提供的一种计算机设备的示意图。

具体实施方式

[0026] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本公开实施例。然而,本领域的技术人员应当清楚,在没有这些具体
细节的其它实施例中也可以实现本公开。在其它情况中,省略对众所周知的系统、装置、电
路以及方法的详细说明,以免不必要的细节妨碍本公开的描述。
[0027] 下面将结合附图详细说明根据本公开实施例的一种数据防伪加密方法和装置。
[0028] 图1是本公开实施例提供的一种数据防伪加密方法的流程图。如图1所示,该数据防伪加密方法包括:
[0029] S101,获取待广播的原始数据,将原始数据拆分成第一数据和第二数据。
[0030] 具体地,待广播的原始数据可以是蓝牙设备(例如,iBeacon蓝牙设备等)待广播的设备数据,例如,蓝牙信标数据中的明文数据。通常,蓝牙信标数据的格式如图2所示,包括
广播数据长度(AD Field Length),长度为1字节;广播类型(Type),长度为1字节;信标制造
商ID(Company ID),长度为2字节;iBeacon数据类型(iBeacon Type),长度为1字节;UUID为
蓝牙信标标识1,长度为16字节;Major是蓝牙信标标识2,长度为2字节;Minor是蓝牙信标标
识3,长度为2字节;蓝牙信标发送功率(Tx Power),长度为1字节。如图3所示,将UUID分为3
个部分,分别为6个字节的定制部分,8个字节的防伪加密部分以及2个字节的校验部分。其
中,蓝牙信标数据中的明文数据为上述的UUID的8个字节的防伪加密部分。
[0031] 作为一示例,将原始数据拆分成第一数据和第二数据,具体是将8个字节(64位)的防伪加密部分(即安全检验数据帧)拆分成32位的第一数据和32位第二数据两部分。
[0032] S102,对第二数据进行扩展,得到第二扩展数据;使用预设的第一密钥对第二扩展数据进行加密,得到第二加密数据。
[0033] 在一些示例性实施例中,预设的密钥(包括第一密钥和第二密钥)可以是预先存储在数据发送设备中,也可以是预先存储在服务器中,还可以预先存储在云端数据库中。当需
要广播数据时,通过直接调用数据发送设备中存储的第一密钥和第二密钥,或者通过数据
发送设备向服务器发起请求,以获取到服务器下发的第一密钥和第二密钥。具体的,为了能
够快速准确地找到与数据发送设备对应的密钥进行加密,并便于后续的解密操作,可以将
密钥与其对应的MAC地址绑定在一起,并存储在数据发送设备或服务器或云端数据库中。
[0034] S103,将第二加密数据与第一数据进行位置交换,并将第一数据确定为新的第二数据。
[0035] 作为一示例,将第二加密数据与第一数据进行位置交换,是将第二加密数据与第一数据进行左右位置交换。
[0036] S104,对新的第二数据进行扩展,得到新的第二扩展数据;使用预设的第二密钥对新的第二扩展数据进行加密,得到新的第二加密数据。
[0037] S105,将新的第二加密数据与第二加密数据进行左右位置交换后拼接在一起,再经逆置换处理,得到目标加密数据并输出。
[0038] 本公开实施例提供的技术方案可应用于数据发送设备(如蓝牙设备等定位设备),数据发送设备在以广播的方式发送其设备数据的过程中,可通过将待广播的原始数据拆分
成第一数据和第二数据;对第二数据进行扩展,得到第二扩展数据;使用预设的第一密钥对
该第二扩展数据进行加密,得到第二加密数据;将第二加密数据与第一数据进行位置交换,
并将第一数据确定为新的第二数据;对新的第二数据进行扩展,得到新的第二扩展数据;使
用预设的第二密钥对新的第二扩展数据进行加密,得到新的第二加密数据;将新的第二加
密数据与第二加密数据进行左右位置交换后拼接在一起,再经逆置换处理,得到目标加密
数据并输出。一方面,通过上述防伪加密处理之后的原始数据被其他接收设备破解的难度
较大,因此可以有效地防止该广播的数据被其他非法接收设备随意或恶意复制,安全性高,
有利于保障蓝牙定位系统的稳定运行,并提升整个蓝牙系统的安全系数;另一方面,可以有
效地遏制非法设备恶意复制该广播数据,避免利用该复制的广播数据实现定位作弊等不良
目的的现象。
[0039] 在一些实施例中,上述步骤S101中,将原始数据拆分成第一数据和第二数据,包括:
[0040] 按预设的置换规则对原始数据进行置换处理,获得初始置换数据;
[0041] 将初始置换数据拆分成左半部分数据和右半部分数据,左半部分数据对应第一数据,右半部分数据对应第二数据。
[0042] 其中,预设的置换规则,可以是预先设置好的以位为单位,对原始数据的次序、位置进行置换的置换表,例如,如下表1所示的置换表。
[0043] 表1 对原始数据进行置换处理的置换表
[0044] 2 56 42 34 26 20 16 583 52 44 36 28 18 10 4
62 54 46 38 30 22 14 6
8 50 40 48 32 24 12 64
1 49 41 9 25 23 39 57
11 51 43 35 27 19 59 63
61 53 45 37 29 21 13 5
63 55 47 33 31 17 7 15
[0045] 上表1中的数据表示将原始数据的指定位置搬移置换到该位,例如,将原始数据的第1位置换到第2位,将原始数据的第2位置换到第56位,将原始数据的第3位置换到第42位。
[0046] 将原始数据按照上表1进行置换处理后,得到初始置换数据,再将该初始置换数据拆分成32位的第一数据和32位的第二数据。其中,第一数据可以是该初始置换数据中的前
32位数据,第二数据则为该初始置换数据中的后32位数据。
[0047] 根据本公开实施例提供的技术方案,通过对原始数据进行初始置换,使得原始数据的次序、位置发生变化,再拆分成左右两半部分,可以增加后续数据接收设备对原始数据
的破解难度,从而能有效地保护原始数据,防止原始数据被恶意复制。
[0048] 在一些实施例中,上述步骤S102中,对第二数据进行扩展,得到第二扩展数据,包括:
[0049] 调整第二数据的次序,并重复第二数据中的预设位置的数据,得到第二扩展数据。
[0050] 作为一示例,可以按照预设的扩展置换规则对第二数据进行扩展置换,使得32位的第二数据扩展至48位的第二扩展数据。其中,扩展置换规则可以是如下表2所示的扩展置
换表。
[0051] 表2 对第二数据进行扩展的扩展置换表
[0052]17 1 30 3 4 2
4 5 6 7 8 9
8 9 10 11 16 13
12 13 14 15 28 32
12 17 18 19 16 21
20 21 22 23 24 25
24 25 26 27 28 29
20 29 5 31 32 1
[0053] 通过按照上表2的扩展置换表,对第二数据的次序进行了置换调整,并重复了某些位,得到48位的第二扩展数据。
[0054] 在一些实施例中,在上述步骤S102使用预设的第一密钥对第二扩展数据进行加密,得到第二加密数据之前,还包括:
[0055] 获取原始密钥,将原始密钥拆分成第一子密钥和第二子密钥;
[0056] 对第一子密钥进行循环右移变换,得到第一变换子密钥;对第二子密钥进行循环右移变换,得到第二变换子密钥;
[0057] 将第一变换子密钥和第二变换子密钥进行合并,得到第一合并密钥;
[0058] 对第一合并密钥进行选择置换,生成第一密钥。
[0059] 在一些实施例中,上述步骤将原始密钥拆分成第一子密钥和第二子密钥,包括:
[0060] 对原始密钥进行降位处理,得到降位密钥;
[0061] 对降位密钥进行位置置换,得到置换密钥,将置换密钥拆分成第一子密钥和第二子密钥。
[0062] 具体地,原始密钥为一64位的数据。在将原始密钥进行拆分前,忽略原始密钥的奇偶校验位(每个字节的第0位为奇偶检验位),即原始密钥的奇偶校验位不参与计算,将原始
密钥进行右对齐,将64位的原始密钥降至56位的降位密钥。接着,按照预设的缩小选择置换
表(如下表3所示)对该降位密钥的位置进行置换,得到置换密钥,再将该置换密钥拆分成28
位的第一子密钥和28位的第二子密钥。例如,将该置换密钥的前28位(即下表3中的K39、K4、
K41……K36所对应的数据)划分为第一子密钥,后28位(即下表3中的K63、K29、K47……K12
所对应的数据)划分为第二子密钥。
[0063] 表3 对降位密钥的位置进行置换的缩小选择置换表
[0064]39 4 41 45 7 17 28 30
58 50 42 34 26 18 10 2
59 51 43 35 27 19 11 60
3 52 44 36 63 29 47 52
31 23 15 25 62 54 46 38
1 22 14 6 61 53 33 37
55 21 13 5 9 20 49 12
[0065] 在一些实施例中,上述步骤对第一子密钥进行循环右移变换,得到第一变换子密钥;对第二子密钥进行循环右移变换,得到第二变换子密钥,包括:
[0066] 将第一子密钥向右循环移动预设位数,得到第一变换子密钥;
[0067] 将第二子密钥向右循环移动预设位数,得到第二变换子密钥。
[0068] 其中,预设位数可以根据实际情况具体设置,例如,可以是1位或3位等。示例性地,可将第一子密钥按照如下表4所示的第一右移置换表向右循环移动3位,得到第一变换子密
钥;将第二子密钥按照下表5所示第二右移置换表的向右循环移动3位,得到第二变换子密
钥。
[0069] 表4 第一右移置换表
[0070] 52 44 36 39 4 41 457 17 28 30 58 50 42
34 26 18 10 2 59 51
43 35 27 19 11 60 3
[0071] 表5 第二右移置换表
[0072]20 49 12 63 29 47 52
31 23 15 25 62 54 46
38 1 22 14 6 61 53
33 37 55 21 13 5 9
[0073] 将上述第一变换子密钥和第二变换子密钥进行合并,得到56位的第一合并密钥,去掉第一合并密钥中的第1、14、27、28、36、41、49、52位数据后,再按照如下表6所示的置换
选择表对第一合并密钥的次序、位置进行调整,生成48位的第一密钥。
[0074] 表6 置换选择表
[0075]48 17 34 56 1 8
3 28 15 6 21 10
23 19 12 32 26 5
16 7 27 20 13 41
2 52 31 37 47 55
30 51 40 45 33 41
44 49 39 24 11 53
50 42 46 36 29 4
[0076] 通过上述方式生成第一密钥,可在即使在泄露原始密钥的情况下,若不公开第一密钥的生成规则,破解方也不容易破解得到第一密钥,从而有利于提高了第一密钥的安全
性,进而提高了使用该第一密钥对原始数据的第二扩展数据的防伪安全性。
[0077] 在一些实施例中,上述步骤S102中,使用预设的第一密钥对第二扩展数据进行加密,得到第二加密数据,包括:
[0078] 对第二扩展数据与第一密钥进行异或运算,得到第一异或运算结果;
[0079] 对第一异或运算结果进行替代运算,获得第一替代运算结果,将替代运算结果进行置换运算,获得第一置换结果;
[0080] 对第一置换结果与第二数据进行异或运算,得到第二加密数据。
[0081] 在一些实施例中,上述步骤,对第一异或运算结果进行替代运算,获得第一替代运算结果,包括:
[0082] 将第一异或运算结果输入S盒,以对第一异或运算结果进行降位,获得位数与第一密钥相同的第一替代运算结果。
[0083] 其中,异或是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b=(¬a∧b)∨(a∧¬b)如果a、b两个值不相同,则异或结
果为1。如果a、b两个值相同,异或结果为0。异或也叫半加运算,其运算法则相当于不带进位
的二进制加法。
[0084] 作为一示例,将48位的第二扩展数据与48位第一密钥进行异或运算,得到48位的第一异或运算结果。将该第一异或运算结果输入S盒中进行替代运算,获得32位的第一替代
运算结果。
[0085] 替代运算,由8个不同的代替盒(S盒)完成。其中,每个S盒有6位输入,4位输出。因此,将48位的第一异或运算结果输入这8个S盒中,会被分成8个6位的分组,每一个分组对应
一个S盒代替操作,经过S盒代替,形成8个4位分组结果,即得到32位的输出结果。即每个S盒
自身是64位,每一个S盒的输入数据是6位,输出数据是4位。每个S盒是4行16列的格式,因为
二进制4位是0 15。8个S盒的值生成算法如下:
~
[0086] (a)定义初始排列0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15。
[0087] (b)设第n个S盒为Sn,n取值为1‑8。
[0088] (c)Sn的行列式生成公式如(1)所示。
[0089] P>>((n*1)‑1)
[0090] P>>((n*2)‑1)
[0091] P>>((n*3)‑1)
[0092] P>>((n*4)‑1)                              (1)。
[0093] 在上述公式(1)中,P表示(a)中的初始排列矩阵,>>表示循环右移,n表示S盒子的索引。其中,S1盒可表示为如下表7所示。
[0094] 表7 S1盒
[0095] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1515 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
14 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13
13 14 15 0 1 2 3 4 5 6 7 8 9 10 11 12
[0096] 下面以S8盒位例对S盒的计算过程进行说明。假设S8盒的输入(即异或函数的第4318位)110011,第一位和第六位(最高位和最低位)组合为11(二进制),转换为十进制为3,
~
则在S8盒中行号为3,即对应S8盒的第3行;原始数据第二位到第五位为1001(二进制),转换
为十进制为9,则在S8盒中列号为9,即对应S8盒的第9列,S8盒的第3行第9列的数字为12,转
换为二进制为1100,因此用二进制1100来代替110011,即S盒输出的是1100(二进制)。
[0097] 接着,将上述32位的第一替代运算结果输入T盒,按照如下表8的T盒置换表将每一位输入位映射到输出位,获得32位的第一置换结果。
[0098] 表8 T盒置换表
[0099]1 21 23 25 26 7 8 12
30 31 2 27 5 6 9 13
20 32 22 3 4 17 10 11
19 29 28 24 18 16 15 14
[0100] 最后,对上述第一置换结果与原始的第二数据进行异或运算,得到32位的第二加密数据。
[0101] 在一些实施例中,上述步骤S104,使用预设的第二密钥对新的第二扩展数据进行加密,得到新的第二加密数据之前,还包括:
[0102] 对第一变换子密钥进行循环右移变换,得到第三变换子密钥;对第二变换子密钥进行循环右移变换,得到第四变换子密钥;
[0103] 将第三变换子密钥和第四变换子密钥进行合并,得到第二合并密钥;
[0104] 对第二合并密钥进行置换选择,生成第二密钥。
[0105] 作为一示例,可按照下表9所示的第一变换子密钥置换表对第一变换子密钥进行循环右移变换(右移3位),得到第三变换子密钥;按照下表10所示的第二变换子密钥置换表
对第二变换子密钥进行循环右移变换(右移3位),得到第四变换子密钥。
[0106] 表9 第一变换子密钥置换表
[0107]52 44 36 39 4 41 45
7 17 28 30 58 50 42
34 26 18 10 2 59 51
43 35 27 19 11 60 3
[0108] 表10第二变换子密钥置换表
[0109]20 49 12 63 29 47 52
31 23 15 25 62 54 46
38 1 22 14 6 61 53
33 37 55 21 13 5 9
[0110] 接着,将上述第三变换子密钥和第四变换子密钥进行合并,得到第二合并密钥,再按照如上表6所示的置换选择表对第二合并密钥的次序、位置进行调整,生成48位的第二密
钥。
[0111] 在一些实施例中,上述步骤S104中,使用预设的第二密钥对新的第二扩展数据进行加密,得到新的第二加密数据,包括:
[0112] 对新的第二扩展数据与第二密钥进行异或运算,得到第二异或运算结果;
[0113] 对第二异或运算结果进行替代运算,获得第二替代运算结果,将第二替代运算结果进行置换运算,获得第二置换结果;
[0114] 对第二置换结果与新的第二数据进行异或运算,得到新的第二加密数据。
[0115] 具体地,使用预设的第二密钥对新的第二扩展数据进行加密,得到新的第二加密数据的具体实现过程与上述使用预设的第一密钥对第二扩展数据进行加密,得到第二加密
数据的过程类似,在此不在赘述。
[0116] 在一些实施例中,上述步骤S105中,将新的第二加密数据与第二加密数据进行位置交换后拼接在一起,并经逆置换处理,得到目标加密数据并输出,包括:
[0117] 将新的第二加密数据与第二加密数据进行左右位置交换后拼接在一起,完成针对原始数据的一轮加密,得到第一轮加密数据;
[0118] 当针对所述原始数据的加密轮数未满足预设的轮数阈值时,对前一轮加密数据进行再次加密处理,获得第N轮加密数据;其中,N≥2;
[0119] 当针对所述原始数据的加密轮数满足预设的轮数阈值时,将第N轮加密数据确定为目标加密数据。
[0120] 具体地,针对原始数据的N轮加密流程可表示为如下公式(2)所示。
[0121] Rn=L(n‑1);
[0122] Ln=R(n‑1) xor f(Rn‑1,kn‑1)                     (2);
[0123] 其中,xor表示异或运算;Kn是向第N轮加密时输入的48位的密钥;f是以Rn‑1和Kn为变量,且输出为32位数据的函数;Rn为第二数据;Ln为第一数据,n取值为0~16。
[0124] 在对原始数据进行第一轮加密时,使用第一密钥对原始数据的第二数据进行加密后,第二数据R1=L0原始数据的第一,第一数据为原始数据的第二数据与函数f的输出结果的
异或结果。接着,使用第二密钥对该原始数据的第一(新的第二数据)进行加密,加密后,第
二数据为原始数据的第二数据与函数f的输出结果的异或结果,第一数据为原始数据的第
一数据与函数f的输出结果的异或结果。
[0125] 通过上述针对原始数据的第二数据和第一数据的分别加密处理之后,得到第二加密数据和新的第二加密数据(即针对原始数据的第一数据加密后的数据),将二者拼接在一
起之后,即完成针对原始数据的一轮加密,得到第一轮加密数据。
[0126] 其中,预设轮数阈值可以根据实际情况灵活设置,优选的,加密轮数阈值可为2、3、4、5、6、7或8。
[0127] 作为一示例,当预设的轮数阈值为8轮时,则可参照上述针对原始数据继进行一轮加密的步骤对第一轮加密数据进行再次加密处理,获得第二轮加密数据;接着,对第二轮加
密数据进行再次加密,获得第三轮加密数据……以此类推,对第七轮加密数据进行再次加
密,获得第八轮加密数据,并将第八轮加密数据确定为目标加密数据。
[0128] 其中,在对第一轮加密数据进行再次加密处理,获得第二轮加密数据的过程中所用到的密钥为第三密钥和第四密钥;对第二轮加密数据进行再次加密处理,获得第三轮加
密数据的过程中所用到的密钥为第五密钥和第六密钥;对第三轮加密数据进行再次加密处
理,获得第四轮加密数据的过程中所用到的密钥为第七密钥和第八密钥……对第七轮加密
数据进行再次加密处理,获得第八轮加密数据的过程中所用到的密钥为第十五密钥和第十
六密钥。
[0129] 第三密钥是采用上述第三变换子密钥和第四变换子密钥再次经过循环右移变换,得到第五变换子密钥和第六变换子密钥,将第五变换子密钥和第六变换子密钥合并后得到
第三合并密钥,再按照上表6所示的置换选择表对第三合并密钥的次序、位置进行调整生成
的。
[0130] 以此类推,第十六密钥是采用第十三变换子密钥和第十四变换子密钥再次经过循环右移变换,得到第十五变换子密钥和第十六变换子密钥,将第十五变换子密钥和第十六
变换子密钥合并后得到第十六合并密钥,再按照上表6所示的置换选择表对第十六合并密
钥的次序、位置进行调整生成的。
[0131] 其中,每一轮加密过程中所采用的密钥的生成过程中的循环右移位数如下:生成第一轮加密所需要使用的第一密钥时,第一子密钥、第二子密钥的循环右移位数为3位,生
成第二密钥时,第一变换子密钥、第二变换子密钥的循环右移位数为3位;生成第二轮加密
所需要使用的第三密钥和第四密钥中,其对应所采用的子密钥的循环右移位数为3位;生成
第四轮、第六轮、第七轮加密所需要使用的密钥时,其对应的子密钥的循环右移位数均为3
位;生成第三轮、第五轮和第八轮加密所需要使用的密钥时,其对应的子密钥的循环右移位
数均为1位。
[0132] 将经过上述N轮加密处理后的数据的位置、次序置换为原来的位置,即经上表1的置换表交换的位置再次交换回去,得到目标加密数据。
[0133] 作为一优选示例,当通过采用上述公式(2)对原始数据进行2 8轮(2≤N≤8)的迭~
代加密,可以明显提升其他设备(例如,非法设备等)对原始数据的破解难度,从而可有效地
防止原始数据被恶意复制,并可防止非法设备对原始数据进行伪造篡改,保证了原始数据
的真实性和安全性。
[0134] 上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
[0135] 下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
[0136] 图4是本公开实施例提供的一种数据防伪加密装置的示意图。如图4所示,该数据防伪加密装置包括:
[0137] 数据获取模块11,用于获取待广播的原始数据,将所述原始数据拆分成第一数据和第二数据;
[0138] 第一加密模块12,被配置为用于对所述第二数据进行扩展,得到第二扩展数据;使用预设的第一密钥对所述第二扩展数据进行加密,得到第二加密数据;
[0139] 交换模块13,被配置为用于将所述第二加密数据与所述第一数据进行位置交换,并将所述第一数据确定为新的第二数据;
[0140] 第二加密模块14,被配置为用于对所述新的第二数据进行扩展,得到新的第二扩展数据;使用预设的第二密钥对所述新的第二扩展数据进行加密,得到新的第二加密数据;
[0141] 输出模块15,被配置为用于将所述新的第二加密数据与所述第二加密数据进行左右位置交换后拼接在一起,得到目标加密数据并输出。
[0142] 根据本公开实施例提供的技术方案,通过将数据获取模块11配置为用于将待广播的原始数据拆分成第一数据和第二数据;第一加密模块12配置为用于对第二数据进行扩
展,得到第二扩展数据;交换模块13配置为用于使用预设的第一密钥对该第二扩展数据进
行加密,得到第二加密数据;将第二加密数据与第一数据进行位置交换,并将第一数据确定
为新的第二数据;第二加密模块14配置为对新的第二数据进行扩展,得到新的第二扩展数
据;使用预设的第二密钥对新的第二扩展数据进行加密,得到新的第二加密数据;输出模块
15配置为将新的第二加密数据与第二加密数据进行左右位置交换后拼接在一起,得到目标
加密数据并输出,从而完成对原始数据的加密处理,该加密后的原始数据被其他接收设备
破解的难度较大,因此可以有效地防止该广播的数据被其他接收设备随意或恶意复制,安
全性高,有利于保障蓝牙定位系统的稳定运行,并提升整个蓝牙系统的安全系数;同时,可
有效遏制非法设备恶意复制的广播数据来实现某种不良目的(如定位作弊等)的行为。
[0143] 在一些实施例中,上述数据获取模块11包括:
[0144] 初始置换数据获取单元,被配置为用于按预设的置换规则对所述原始数据进行置换处理,获得初始置换数据;
[0145] 拆分单元,被配置为用于将所述初始置换数据拆分成第一数据和第二数据。
[0146] 在一些实施例中,上述第一加密模块12包括:
[0147] 扩展单元,被配置为用于调整所述第二数据的次序,并重复所述第二数据中的预设位置的数据,得到第二扩展数据。
[0148] 在一些实施例中,上述数据防伪加密装置还包括:
[0149] 原始密钥拆分模块,被配置为用于获取原始密钥,将所述原始密钥拆分成第一子密钥和第二子密钥;
[0150] 第一右移变换模块,被配置为用于对所述第一子密钥进行循环右移变换,得到第一变换子密钥;对所述第二子密钥进行循环右移变换,得到第二变换子密钥;
[0151] 第一合并模块,被配置为用于将所述第一变换子密钥和所述第二变换子密钥进行合并,得到第一合并密钥;
[0152] 第一密钥生成模块,被配置为用于对所述第一合并密钥进行选择置换,生成第一密钥。
[0153] 在一些实施例中,上述原始密钥拆分模块包括:
[0154] 降位处理单元,被配置为用于对所述原始密钥进行降位处理,得到降位密钥;
[0155] 拆分单元,被配置为用于对所述降位密钥进行位置置换,得到置换密钥,将所述置换密钥拆分成第一子密钥和第二子密钥。
[0156] 在一些实施例中,上述右移变换模块具体用于:
[0157] 将所述第一子密钥向右循环移动预设位数,得到第一变换子密钥;
[0158] 将所述第二子密钥向右循环移动预设位数,得到第二变换子密钥。
[0159] 在一些实施例中,上述第一加密模块12还包括:
[0160] 第一异或运算单元,被配置为用于将所述第二扩展数据与所述第一密钥进行异或运算,得到第一异或运算结果;
[0161] 第一置换单元,被配置为用于将所述第一异或运算结果输入S盒进行替代运算,获得第一替代运算结果,将所述替代运算结果输入T盒进行T盒置换,获得第一置换结果;
[0162] 第一加密单元,被配置为用于将所述第一置换结果与所述第二数据进行异或运算,得到第二加密数据。
[0163] 在一些实施例中,上述第一置换单元具体可用于:
[0164] 将所述第一异或运算结果输入S盒,以对所述第一异或运算结果进行降位,获得位数与所述第一密钥相同的第一替代运算结果。
[0165] 在一些实施例中,上述数据防伪加密装置还包括:
[0166] 第二右移变换模块,被配置为用于对所述第一变换子密钥进行循环右移变换,得到第三变换子密钥;对所述第二变换子密钥进行循环右移变换,得到第四变换子密钥;
[0167] 第二合并模块,被配置为用于将所述第三变换子密钥和所述第四变换子密钥进行合并,得到第二合并密钥;
[0168] 第二密钥生成模块,被配置为用于对所述第二合并密钥进行置换选择,生成第二密钥。
[0169] 在一些实施例中,上述第二加密模块14还包括:
[0170] 第二异或运算单元,被配置为用于将所述新的第二扩展数据与所述第二密钥进行异或运算,得到第二异或运算结果;
[0171] 第二置换单元,被配置为用于将所述第二异或运算结果输入S盒进行替代运算,获得第二替代运算结果,将所述第二替代运算结果输入T盒进行T盒置换,获得第二置换结果;
[0172] 第二加密单元,被配置为用于将所述第二置换结果与所述新的第二数据进行异或运算,得到新的第二加密数据。
[0173] 在一些实施例中,上述输出模块15包括:
[0174] 第一轮加密单元,被配置为用于将所述新的第二加密数据与所述第二加密数据进行左右位置交换后拼接在一起,完成针对所述原始数据的一轮加密,得到第一轮加密数据;
[0175] 第N轮加密单元,被配置为用于当针对所述原始数据的加密轮数未满足预设的轮数阈值时,对前一轮加密数据进行再次加密处理,获得第N轮加密数据;其中,N≥2;
[0176] 输出单元,被配置为用于当针对所述原始数据的加密轮数满足预设的轮数阈值时,将第N轮加密数据确定为目标加密数据。
[0177] 应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限
定。
[0178] 图5是本公开实施例提供的计算机设备5的示意图。如图5所示,该实施例的计算机设备5包括:处理器501、存储器502以及存储在该存储器502中并且可以在处理器501上运行
的计算机程序503。处理器501执行计算机程序503时实现上述各个方法实施例中的步骤。或
者,处理器501执行计算机程序503时实现上述各装置实施例中各模块/单元的功能。
[0179] 示例性地,计算机程序503可以被分割成一个或多个模块/单元,一个或多个模块/单元被存储在存储器502中,并由处理器501执行,以完成本公开。一个或多个模块/单元可
以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序503在
计算机设备5中的执行过程。
[0180] 计算机设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算机设备。计算机设备5可以包括但不仅限于处理器501和存储器502。本领域技术人员可以理解,
图5仅仅是计算机设备5的示例,并不构成对计算机设备5的限定,可以包括比图示更多或更
少的部件,或者组合某些部件,或者不同的部件,例如,计算机设备还可以包括输入输出设
备、网络接入设备、总线等。
[0181] 处理器501可以是中央处理单元(Central Processing Unit,CPU),也可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路
(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field‑
Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、
分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器
等。
[0182] 存储器502可以是计算机设备5的内部存储单元,例如,计算机设备5的硬盘或内存。存储器502也可以是计算机设备5的外部存储设备,例如,计算机设备5上配备的插接式
硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡
(Flash Card)等。进一步地,存储器502还可以既包括计算机设备5的内部存储单元也包括
外部存储设备。存储器502用于存储计算机程序以及计算机设备所需的其它程序和数据。存
储器502还可以用于暂时地存储已经输出或者将要输出的数据。
[0183] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的
功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述
的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是
各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元
既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模
块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单
元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0184] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0185] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟
以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员
可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出
本公开的范围。
[0186] 在本公开所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例
如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多
个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一
点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或
单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0187] 作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络
单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0188] 另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单
元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0189] 集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本公开实现上述实施例方法
中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以
存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法
实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、
对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机
程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存
储器(Read‑Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信
号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司
法管辖区内立法和专利实践的要求进行适当的增减,例如,在某些司法管辖区,根据立法和
专利实践,计算机可读介质不包括电载波信号和电信信号。
[0190] 以上实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施
例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者
替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的精神和范围,均应包含
在本公开的保护范围之内。