在嵌入式系统中处理数据的方法及协处理器 技术领域 本发明涉及信息安全领域, 具体而言, 涉及一种在嵌入式系统中处理数据的方法 及协处理器。
背景技术 随着人们对信息安全的日益重视, 密码算法逐渐完善, 数据的乘法逆元在密码学 领域也得到了充分应用, 密码体制中密钥的生成、 加解密等过程中都涉及到了乘法逆元的 计算。现有技术中, 乘法逆元的计算一般由 CPU 通过扩展欧几里得算法实现, 而目前密码算 法中涉及到的数一般都为大数, 使计算乘法逆元的运算效率低, 耗时长, 且代价较高, 从而 使乘法逆元的计算成为算法实现的瓶颈, 影响整个密码体制的执行速度。
目前针对相关技术的计算乘法逆元的算法消耗资源量大, 导致系统处理数据的效 率低、 耗时长以及代价高的问题, 目前尚未提出有效的解决方案。
发明内容 本发明的主要目的在于提供一种在嵌入式系统中处理数据的方法及协处理器, 以 解决上述计算乘法逆元的算法消耗资源量大, 导致系统处理数据的效率低、 耗时长以及代 价高问题。
为了实现上述目的, 根据本发明的一个方面, 提供了一种在嵌入式系统中处理数 据的方法, 该在嵌入式系统中处理数据的方法包括 : 接收计算乘法逆元的指令, 并根据指令 来获取待处理数据以及第一参数 ; 将预定数目参数中的第二参数值设置为第一参数的值减 2, 将偏移位的初始位设置为第二参数的预设位, 并预设当前迭代数据的初始值 ; 判断第二 参数在当前偏移位的值是否为 1, 如果是, 根据待处理数据和当前迭代数据的值进行模乘运 算, 以获取第一运算结果, 并将当前迭代数据的值替换为第一运算结果 ; 如果不是, 根据当 前迭代数据获取第二运算结果, 并将当前迭代数据的值替换为第二运算结果 ; 在验证当前 偏移位满足预设条件时, 当前迭代数据为待处理数据的乘法逆元 ; 输出得到的待处理数据 的乘法逆元。
进一步地, 根据待处理数据和当前迭代数据的值进行模乘运算, 以获取第一运算 结果包括 : 将当前迭代数据进行模平方运算, 得到当前迭代数据的模平方 ; 将待处理数据 和当前迭代数据的模平方进行模乘运算, 得到第一运算结果, 其中, 将第一参数作为模数。
进一步地, 在第二参数在当前偏移位的值不为 1 时, 根据当前迭代数据获取第二 运算结果包括 : 在验证第二参数在当前偏移位的值不为 1 时, 对当前迭代数据进行模平方 运算, 以获取第二运算结果。
进一步地, 当前迭代数据的值替换之后, 验证当前偏移位是否满足预设条件, 该验 证当前偏移位是否满足预设条件的步骤包括 : 判断当前偏移位是否为第二参数的最低位 ; 在当前偏移位为第二参数的最低位时, 当前迭代数据为待处理数据的乘法逆元 ; 在当前偏 移位不为第二参数的最低位时, 偏移位指向当前偏移位的右侧一位, 返回验证所述第二参
数在当前偏移位的值是否为 1 的步骤。
为了实现上述目的, 根据本发明的另一个方面, 提供了一种在嵌入式系统中处理 数据的方法, 该在嵌入式系统中处理数据的方法包括 : 接收计算乘法逆元的指令, 并根据指 令来获取待处理数据以及第一参数 ; 将预定数目参数中的第二参数值设置为第一参数的值 减 2, 将偏移位的初始位设置为第二参数的预设位, 并预设当前迭代数据的初始值 ; 判断第 二参数在当前偏移位的值是否为 1, 其中, 在第二参数在当前偏移位的值为 1 时, 根据待处 理数据和当前迭代数据进行模乘运算, 以获取第一运算结果, 并将当前迭代数据的值替换 为第一运算结果, 在第二参数在当前偏移位的值不为 1 时, 偏移位指向当前偏移位的左侧 一位, 将预定数目参数中的第三参数的当前值自乘之后, 返回判断所述第二参数在当前偏 移位的值是否为 1 的步骤 ; 在验证当前偏移位满足预设条件时, 确定当前迭代数据为待处 理数据的乘法逆元 ; 输出得到的待处理数据的乘法逆元。
进一步地, 根据待处理数据和当前迭代数据的值进行模乘运算包括 : 将第三参数 的当前值和当前迭代数据进行模乘运算, 其中, 第三参数的初始值等于待处理数据, 并将第 一参数作为模数。
进一步地, 在当前迭代数据的值替换后, 验证当前偏移位是否满足预设条件, 该验 证当前偏移位是否满足预设条件的步骤包括 : 判断当前偏移位是否为第二参数的最高位 ; 在当前偏移位为第二参数的最高位时, 当前迭代数据为待处理数据的乘法逆元 ; 在当前偏 移位不为第二参数的最高位时, 执行将偏移位指向当前偏移位的右侧一位, 将第三参数的 当前值自乘之后, 返回判断所述第二参数在当前偏移位的值是否为 1 的步骤。 为了实现上述目的, 根据本发明的又一方面, 提供了一种协处理器, 该协处理器包 括: 获取模块, 用于接收计算乘法逆元的指令, 并根据指令来获取待处理数据以及第一参 数; 设置模块, 用于将第二参数值设置为第一参数的值减 2, 将偏移位的初始位设置为第二 参数的预设位, 并预设当前迭代数据的初始值 ; 运算模块, 用于判断第二参数在当前偏移位 的值是否为 1, 其中, 在第二参数在当前偏移位的值为 1 时, 根据待处理数据和当前迭代数 据的值进行模乘运算, 以获取第一运算结果, 并将当前迭代数据的值替换为第一运算结果, 在第二参数在当前偏移位的值不为 1 时, 根据当前迭代数据获取第二运算结果, 并将当前 迭代数据的值替换为第二运算结果 ; 确定模块, 用于在验证当前偏移位满足预设条件时, 确 定当前迭代数据为待处理数据的乘法逆元 ; 输出模块, 用于输出待处理数据的乘法逆元。
进一步地, 运算模块包括 : 第一计算模块, 用于在第二参数在当前偏移位的值为 1 时, 将当前迭代数据进行模平方运算, 以获取当前迭代数据的模平方, 并将待处理数据和当 前迭代数据的模平方进行模乘运算, 以获取第一运算结果, 其中, 将第一参数作为模数 ; 在 验证第二参数在当前偏移位的值不为 1 时, 对当前迭代数据进行模平方运算, 以获取第二 运算结果。
进一步地, 装置还包括 : 第一判断模块, 用于判断当前偏移位是否为第二参数的最 低位 ; 第一处理模块, 用于在当前偏移位为第二参数的最低位时, 当前迭代数据为待处理数 据的乘法逆元 ; 在当前偏移位不为第二参数的最低位时, 偏移位指向当前偏移位的右侧一 位, 返回验证所述第二参数在当前偏移位的值是否为 1 的步骤。
为了实现上述目的, 根据本发明的再一方面, 提供了一种协处理器, 该协处理器包 括: 获取模块, 用于接收计算乘法逆元的指令, 并根据指令来获取待处理数据以及第一参
数; 设置模块, 用于将第二参数值设置为第一参数的值减 2, 将偏移位的初始位设置为第二 参数的预设位, 并预设当前迭代数据的初始值 ; 运算模块, 用于判断第二参数在当前偏移位 的值是否为 1, 其中, 在第二参数在当前偏移位的值为 1 时, 根据待处理数据和当前迭代数 据的值进行模乘运算, 以获取第一运算结果, 并将当前迭代数据的值替换为第一运算结果, 在第二参数在当前偏移位的值不为 1 时, 偏移位指向当前偏移位的左侧一位, 将第三参数 的当前值自乘之后, 返回判断第二参数在当前偏移位的值是否为 1 的步骤 ; 确定模块, 用于 在验证当前偏移位满足预设条件时, 当前迭代数据为待处理数据的乘法逆元 ; 输出模块, 用 于输出得到的待处理数据的乘法逆元。
进一步地, 运算模块包括 : 第二计算模块, 用于在第二参数在当前偏移位的值为 1 时, 将第三参数的当前值和当前迭代数据进行模乘运算, 其中, 第三参数的初始值等于待处 理数据, 并将第一参数作为模数。
进一步地, 装置还包括 : 第二判断模块, 用于判断当前偏移位是否为第二参数的最 高位 ; 第二处理模块, 用于在当前偏移位为第二参数的最高位时, 当前迭代数据为待处理数 据的乘法逆元 ; 在当前偏移位不为第二参数的最高位时, 系统在执行将偏移位指向当前偏 移位的左侧一位, 将第三参数的当前值自乘之后, 返回判断第二参数在当前偏移位的值是 否为 1 的步骤。 通过本发明, 采用接收计算乘法逆元的指令, 并根据指令来获取待处理数据以及 第一参数 ; 将第二参数值设置为第一参数的值减 2, 将偏移位的初始位设置为第二参数的 预设位, 并预设当前迭代数据的初始值 ; 判断第二参数在当前偏移位的值是否为 1, 其中, 在第二参数在当前偏移位的值为 1 时, 根据待处理数据和当前迭代数据的值进行模乘运 算, 以获取第一运算结果, 并将当前迭代数据的值替换为第一运算结果, 在第二参数在当前 偏移位的值不为 1 时, 根据当前迭代数据获取第二运算结果, 并将当前迭代数据的值替换 为第二运算结果 ; 在验证当前偏移位满足预设条件时, 当前迭代数据为待处理数据的乘法 逆元 ; 输出得到的待处理数据的乘法逆元。
由于本申请的算法采用模乘运算来代替现有算法中的辗转相除计算, 计算过程简 单, 从而解决了相关现有技术的计算乘法逆元的算法消耗资源量大, 导致系统处理数据的 效率低、 耗时长以及代价高的问题, 进而实现降低了计算乘法逆元的代价, 提高了处理器系 统, 尤其是安全密码体制系统处理数据的工作效率的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解, 构成本申请的一部分, 本发 明的示意性实施例及其说明用于解释本发明, 并不构成对本发明的不当限定。在附图中 :
图 1 是本发明实施例一的一种协处理器的功能结构示意图 ;
图 2 是本发明实施例二的一种在嵌入式系统中处理数据的方法的流程图 ;
图 3 是本发明实施例三的在嵌入式系统中处理数据的方法流程图 ;
图 4 是本发明实施例四的在嵌入式系统中处理数据的方法流程图。 具体实施方式
需要说明的是, 在不冲突的情况下, 本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
实施例一
图 1 是根据本发明实施例的在嵌入式系统中的协处理器的功能结构示意图。如图 1 所示, 该协处理器包括 : 获取模块 10, 用于接收计算乘法逆元的指令, 并根据指令来获取 待处理数据以及第一参数 ; 设置模块 30, 用于将第二参数值设置为第一参数的值减 2, 将偏 移位的初始位设置为第二参数的预设位, 并预设当前迭代数据的初始值 ; 运算模块 50, 用 于判断第二参数在当前偏移位的值是否为 1, 其中, 当第二参数在当前偏移位的值为 1 时, 根据待处理数据和当前迭代数据进行模乘运算, 以生成第一运算结果, 并将当前迭代数据 的值替换为第一运算结果, 当第二参数在当前偏移位的值不为 1 时, 根据当前迭代数据获 取第二运算结果, 并将当前迭代数据的值替换为第二运算结果 ; 确定模块 70, 用于在验证 偏移位满足预设条件时, 将当前迭代数据定义为待处理数据的乘法逆元 ; 输出模块 90, 用 于输出得到的待处理数据的乘法逆元。
本申请上述实施例实现将现有的模数为素数的乘法逆元的辗转相除计算转变为 : 通过嵌入式系统提供的模乘算法装置, 即协处理器对待处理数据进行模乘运算的处理, 得 到待处理数据的乘法逆元。这种将乘法逆元的计算转换为模乘运算, 缩短了计算乘法逆元 的运算时长, 提高了运算效率, 在很大程度上解决了由于现有技术中乘法逆元的计算周期 长而使得系统消耗资源大、 处理数据效率低, 从而影响密码体制整体执行速度的问题, 进而 实现降低了计算乘法逆元的代价, 提高了处理器系统, 尤其是安全密码体制系统处理数据 的工作效率的效果。 具体的, 上述实施例中与获取模块 10 连接的功能模块还包括 : 通信模块, 接收与 发送各模块之间通信数据 ; 以及存储模块, 用于存储待处理数据及第一参数、 处理数据, 该 处理数据为对待处理数据进行运算后得到的数据, 可以包括 : 在计算乘法逆元过程中的准 备数据、 过渡数据及迭代运算的处理结果, 其中, 准备数据是指对待处理数据进行取模运算 得到的运算结果, 即指获得的当前迭代数据 ; 过渡数据是指对当前迭代数据进行运算的处 理结果, 即对准备数据进行运算的结果。
本申请上述实施例中的运算模块 50 可以包括 : 第一计算模块, 用于当第二参数在 当前偏移位的值为 1 时, 将当前迭代数据进行模平方运算, 以生成当前迭代数据的模平方, 并将待处理数据和当前迭代数据的模平方进行模乘运算, 以生成第一运算结果, 其中, 将第 一参数作为模数 ; 用于当第二参数在当前偏移位的值不为 1 时, 对当前迭代数据进行模平 方运算, 以生成第二运算结果。
本申请上述实施例中的装置还可以包括 : 第一判断模块, 用于判断当前偏移位是 否为第二参数的最低位 ; 第一处理模块, 用于在当前偏移位不为第二参数的最低位时, 将偏 移位指向当前偏移位的右侧一位。
另外的, 图 1 所示协处理器还可以是如下实施装置, 该协处理器可以包括 : 获取模 块 10, 用于接收计算乘法逆元的指令, 并根据指令来获取待处理数据以及第一参数 ; 设置 模块 30, 用于将第二参数值设置为第一参数的值减 2, 将偏移位的初始位设置为第二参数 的预设位, 并预设当前迭代数据的初始值 ; 运算模块 50, 用于判断所述第二参数在当前偏 移位的值是否为 1, 其中, 在所述第二参数在当前偏移位的值为 1 时, 根据所述待处理数据 和当前迭代数据的值进行模乘运算, 以获取第一运算结果, 并将当前迭代数据的值替换为
所述第一运算结果, 在所述第二参数在当前偏移位的值不为 1 时, 偏移位指向当前偏移位 的左侧一位, 将第三参数的当前值自乘之后, 系统返回重新判断所述预定数目参数中的第 二参数在当前偏移位的值是否为 1 的步骤 ; 确定模块 70, 用于在验证预定数目参数中的偏 移位的值满足预设条件时, 将当前迭代数据定义为待处理数据的乘法逆元 ; 输出模块 90, 用于输出得到的待处理数据的乘法逆元。
本申请上述实施例中的运算模块可以包括 : 第二计算模块, 用于当第二参数在当 前偏移位的值为 1 时, 将第三参数的当前值和当前迭代数据进行模乘运算, 其中, 第三参数 的初始值等于待处理数据, 并将第一参数作为模数。
本申请上述实施例中的装置还可以包括 : 第二判断模块, 用于判断当前偏移位是 否为第二参数的最高位 ; 第二处理模块, 用于在当前偏移位不为第二参数的最高位时, 执行 将偏移位指向当前偏移位的左侧一位, 将第三参数的当前值自乘。
具体的, 在上述实施例的实施过程中, 运算模块 50 可以实现对当前迭代数据进行 运算, 得到第一运算结果或者第二运算结果, 还可以用于执行偏移位的值自减运算, 或执行 偏移位的值的自加和第三参数的当前值自乘运算。
而且在实施过程中还可以利用设置模块 30 来实现生成第二参数和偏移位, 并设 置第二参数的值、 偏移位的初始位的功能, 而且该模块还可以复用, 用于生成第二、 第三参 数, 并置第二参数的值和第三参数的初始值。
优选地, 本申请中的协处理器还可以包括替换模块 : 用于将当前迭代数据的值替 换为第一运算结果或第二运算结果的值 ; 以及偏移模块 : 用于将偏移位由第二参数的最高 位逐位偏移至最低位, 或用于将偏移位由第二参数的最低位逐位偏移至最高位。
上述实施例中的第一处理模块、 第二处理模块在协处理器中可以是同一个处理模 块, 实现在不同的阶段实现不同的功能, 实现了功能复用, 本发明中可以用于验证第二参数 指定位上的数是否为 1、 偏移位的值是否为 1 或偏移位的值是否等于第二参数的位数。
实施例二
图 2 是根据本发明实施例的在嵌入式系统中处理数据的方法的流程图, 如图 2 所 示该方法包括如下步骤 :
步骤 S102, 通过图 1 中的获取模块 10 来执行接收计算乘法逆元的指令, 并根据指 令来获取待处理数据以及第一参数。
步骤 S104, 通过图 1 中的设置模块 30 来实现将第二参数的值设置为第一参数的值 减 2, 将偏移位的初始位设置为第二参数的预设位, 并预设当前迭代数据的初始值。
步骤 S106, 通过图 1 中的运算模块 50 来实现判断第二参数在当前偏移位的值是否 为 1, 如果是, 根据待处理数据和当前迭代数据进行模乘运算, 以生成第一运算结果, 并将当 前迭代数据的值替换为第一运算结果 ; 如果不是, 根据当前迭代数据获取第二运算结果, 并 将当前迭代数据的值替换为第二运算结果。
步骤 S108, 通过图 1 中的确定模块 70 来执行在验证当前偏移位满足预设条件时, 将当前迭代数据确定为待处理数据的乘法逆元。
步骤 S110, 通过图 1 中的输出模块 90 来输出得到的待处理数据的乘法逆元。
本发明上述实施例实现将乘法逆元的计算转换为模乘运算, 通过嵌入式系统提供 的模乘算法装置来实现, 这种将乘法逆元的计算转换为模乘运算, 缩短了计算乘法逆元的运算时长, 提高了运算效率, 在很大程度上解决了由于现有技术中乘法逆元的计算周期长 而使得系统消耗资源大、 处理数据效率低, 从而影响密码体制整体执行速度的问题, 进而实 现降低了计算乘法逆元的代价, 提高了处理器系统, 尤其是安全密码体制系统处理数据的 工作效率的效果。
本发明上述实施例中的步骤 S106 可以替换为以下实施方法 : 判断第二参数在当 前偏移位的值是否为 1, 其中, 当第二参数在当前偏移位的值为 1 时, 根据待处理数据和当 前迭代数据进行模乘运算, 以生成第一运算结果, 并将当前迭代数据的值替换为第一运算 结果, 当第二参数在当前偏移位的值不为 1 时, 将偏移位指向当前偏移位的左侧一位, 将第 三参数的当前值自乘之后, 返回判断所述第二参数在当前偏移位的值是否为 1。
实施例三
图 3 是本发明实施例三提出的一种在嵌入式系统中处理数据的方法流程图。
实施例二的步骤 S106 中, 根据待处理数据和当前迭代数据的值进行模乘运算, 以 获取第一运算结果的步骤可以包括 : 将当前迭代数据进行模平方运算, 以获取当前迭代数 据的模平方 ; 将待处理数据和当前迭代数据的模平方的值进行模乘运算, 以获取第一运算 结果, 其中, 将第一参数作为模数。同时, 在验证第二参数在当前偏移位的值不为 1 时, 对当 前迭代数据进行模平方运算, 以获取第二运算结果。 优选地, 在当前迭代数据的值替换之后, 验证当前偏移位是否满足预设条件, 该验 证当前偏移位是否满足预设条件的步骤包括 : 判断当前偏移位是否为第二参数的最低位 ; 在当前偏移位为第二参数的最低位时, 当前迭代数据为待处理数据的乘法逆元 ; 在当前偏 移位不为第二参数的最低位时, 偏移位指向当前偏移位的右侧一位。
具体的, 如图 3 所示, 以椭圆曲线密码体制的签名计算过程中计算数据乘法逆元 为例, 提供了一种在嵌入式系统中处理数据的方法, 详细的实现流程包括如下步骤 :
步骤 201 : 接收计算乘法逆元的指令, 获取待处理数据、 第一参数 ;
优选地, 在本实施例一中, 计算乘法逆元指令为计算待处理数据乘法逆元的指令。
第一参数为计算乘法逆元过程中的模数。
具体地, 在本实施例中, 待处理数据与第一参数均为十六进制数, 将待处理数据的 值记为 a, 将第一参数的值记为 p, 且 a 和 p 的具体赋值可以如下 :
a = 5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B
p = FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF
步骤 202 : 验证第一参数是否为素数, 是则执行步骤 203, 否则返回错误信息, 退 出;
优选地, 在本实施例一中, 验证第一参数是否为素数具体为 : 随机取六个不同的且 均小于第一参数的随机数, 将第一参数作为模数, 对每个随机数的 (p-1) 次幂分别进行取 模运算, 验证取模后得到的值是否均为 1, 若是则认为第一参数为素数, 否则认为第一参数 不是素数。
步骤 203 : 根据第一参数来设置第二参数, 并将第二参数用二进制表示, 偏移位的 值记为 i ;
优选地, 在本实施例一中, 第二参数的值等于将第一参数的值减 2 得到的值, 所述 第二参数的二进制表示为 :
111111111111111111111111111111110000000000000000000000000000111100000 00000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111101
在本实施例一中, 第二参数的位数可以为 256。
步骤 204 : 将迭代数据的初始值置为 1, 设置偏移位的初始位为所述第二参数的最 高位 ;
优选地, 在本实施例一中, 用迭代法计算所述待处理数据的乘法逆元, 需要进行的 迭代次数等于第二参数的位数。
优选地, 在本实施例中, 步骤 204 还可以为 :
步骤 204′ : 将待处理数据关于第一参数的模值作为迭代数据的初始值, 设置偏移 位的初始位为第二参数的次高位 ;
优选地, 在本实施例中, 用迭代法计算待处理数据的乘法逆元, 需要进行的迭代次 数等于第二参数的位数减一。
步骤 205 : 判断第二参数在当前偏移位的值是否为 1, 如果是, 执行步骤 206 ; 否则, 执行步骤 207 ; 步骤 206 : 将第一参数作为模数, 对当前迭代数据进行模平方运算, 得到当前迭代 数据的模平方数据, 将当前迭代数据的模平方数据与待处理数据进行模乘运算, 得到第一 运算结果, 并将当前迭代数据的值替换为第一运算结果的值, 执行步骤 108 ;
步骤 207 : 将第一参数作为模数, 对当前迭代数据进行模平方运算, 得到第二运算 结果, 将当前迭代数据的值替换为第二运算结果的值 ;
步骤 208 : 验证当前偏移位是否为第二参数的最低位, 是则认为当前迭代数据为 待处理数据的乘法逆元, 执行步骤 210, 否则执行步骤 209 ;
步骤 209 : 偏移位指向当前偏移位的右侧一位, 返回步骤 205 ;
步骤 210 : 输出当前迭代数据。此时的迭代数据即为待处理数据的乘法逆元。
在本实施例中, 经处理得到的待处理数据的乘法逆元 :
AB9E4C64B60363073D968B0B529145986071EF1CD6DA80E9FF6B
AD7FF511D9A5
实施例四
图 4 是根据本发明实施例二的在嵌入式系统中处理数据的方法流程图。
上述实施例二的步骤 S106 可以替换为以下实施方式 : 在第二参数在当前偏移位 的值为 1 时, 根据待处理数据和当前迭代数据的值进行模乘运算, 以获取第一运算结果, 并 将当前迭代数据的值替换为第一运算结果, 在第二参数在当前偏移位的值不为 1 时, 偏移 位指向当前偏移位的左侧一位, 将第三参数的当前值自乘之后, 返回判断第二参数在当前 偏移位的值是否为 1 的步骤。
优选地, 在上述当前迭代数据的值替换之后, 验证当前偏移位是否满足预设条件, 该偏移位的值是否满足预设条件的步骤包括 : 判断当前偏移位是否为第二参数的最高位 ; 在当前偏移位为第二参数的最高位时, 当前迭代数据为待处理数据的乘法逆元 ; 在当前偏 移位不为第二参数的最高位时, 系统在执行将偏移位指向当前偏移位的左侧一位, 将预定
数目参数中的第三参数的当前值自乘之后, 返回重新判断预定数目参数中的第二参数在当 前偏移位的值是否为 1 的步骤。
具体的, 如图 4 所示, 本实施例以在椭圆曲线密码体制下, 将雅克比射影坐标转换 为仿射坐标过程中计算数据乘法逆元为例, 提供了另一种在嵌入式系统中处理数据的方 法, 具体步骤如下 :
步骤 301 : 接收计算乘法逆元指令, 获取待处理数据与第一参数 ;
计算乘法逆元指令为计算待处理数据乘法逆元的指令。
第一参数为计算待处理数据乘法逆元过程中的模数。
优选地, 在本实施例二中, 待处理数据与第一参数都为二进制数, 将待处理数据的 值记为 a′, 将第一参数的值记为 p′, 则 a′和 p′的具体赋值可以如下 :
a′= 1100010
p′= 11111011
步骤 302 : 验证第一参数是否为素数, 是则执行步骤 303, 否则返回错误信息, 退 出;
优选地, 在本实施例二中, 验证第一参数是否为素数具体为 : 随机取六个不同的且 均小于第一参数的随机数, 将第一参数作为模数, 对每个随机数的 (p′ -1) 次幂分别进行 取模运算, 验证取模后得到的值是否均为 1, 若是则认为第一参数为素数, 否则认为第一参 数不是素数。
步骤 303 : 根据第一参数设置第二参数、 设置第三参数的初始值等于待处理数据的值 ; 优选地, 在本实施例中, 第二参数的值为将第一参数的值减 2, 具体地, 在本实施例 中, 所述第二参数用二进制表示为
11111001
优选地, 在本实施例二中, 第三参数为变量, 置第三参数的初始值等于待处理数据 的值。
步骤 304 : 将迭代数据的初始值置为 1, 设置偏移位的初始位为第二参数的最低 位;
步骤 305 : 判断第二参数在当前偏移位的值是否为 1, 是则执行步骤 306, 否则执行 步骤 308 ;
步骤 306 : 将第一参数作为模数, 对当前迭代数据与第三参数的当前值进行模乘 运算, 得到第一运算结果, 并将当前迭代数据的值替换为第一运算结果的值 ;
步骤 307 : 验证当前偏移位是否为第二参数的最高位, 是则认为当前迭代数据为 待处理数据的乘法逆元, 执行步骤 209, 否则执行步骤 208。
步骤 308 : 第三参数的当前值自乘, 偏移位指向当前偏移位的左侧一位, 返回步骤 305。
步骤 309 : 输出当前迭代数据。此时的迭代数据即为待处理数据的乘法逆元。
优选地, 在本实施例中将待处理数据的乘法逆元记为 b′, 经处理得到的待处理数 据的乘法逆元为 :
10010010。
需要说明的是, 在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的 计算机系统中执行, 并且, 虽然在流程图中示出了逻辑顺序, 但是在某些情况下, 可以以不 同于此处的顺序执行所示出或描述的步骤。
从以上的描述中, 可以看出, 本发明实现了如下技术效果 : 与现有技术比, 本发明 将乘法逆元的计算转换为模乘运算, 通过嵌入式系统提供的模乘算法装置来实现, 在运算 速度和实现方式上都具有绝对的优势, 缩短了计算乘法逆元的运算时长, 提高了运算效率, 在很大程度上解决了因现有技术中乘法逆元的计算周期长而影响密码体制整体执行速度 的问题, 且降低了计算乘法逆元的代价。
显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用 的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布在多个计算装置所组成 的网络上, 可选地, 它们可以用计算装置可执行的程序代码来实现, 从而, 可以将它们存储 在存储装置中由计算装置来执行, 或者将它们分别制作成各个集成电路模块, 或者将它们 中的多个模块或步骤制作成单个集成电路模块来实现。这样, 本发明不限制于任何特定的 硬件和软件结合。
以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。