书签 分享 收藏 举报 版权申诉 / 17

一种实现数字签名和验签的方法.pdf

  • 上传人:111****11
  • 文档编号:508165
  • 上传时间:2018-02-20
  • 格式:PDF
  • 页数:17
  • 大小:1.13MB
  • 摘要
    申请专利号:

    CN201510177842.9

    申请日:

    2015.04.15

    公开号:

    CN104753684A

    公开日:

    2015.07.01

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):H04L 9/32申请日:20150415|||公开

    IPC分类号:

    H04L9/32

    主分类号:

    H04L9/32

    申请人:

    飞天诚信科技股份有限公司

    发明人:

    陆舟; 于华章

    地址:

    100085北京市海淀区学清路9号汇智大厦B楼17层

    优先权:

    专利代理机构:

    代理人:

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种实现数字签名和验签的方法,属于信息安全领域,所述方法包括:CPU将哈希结果与第一预设存储器中的数据进行模运算,结果保存至第三寄存器中;对第一随机数存储器、第四、第五寄存器、第一预设存储器中的数据进行运算,结果保存至第七寄存器中;对读取的签名私钥、第七寄存器、第三寄存器和第一随机存储器中的数据进行处理,结果保存至第八寄存器中;将第七、第八寄存器中的数据作为签名结果输出。采用本发明的技术方案,能够实现身份认证,保证数据的完整性和不可抵赖性,而且对模运算参数和椭圆曲线参数进行初始化,提高了运算效率,除此之外,验签的过程中有对公钥的验证,更加提高了签名的安全性。

    权利要求书

    1.  一种实现数字签名的方法,其特征在于,包括:
    步骤S1:CPU读取哈希结果,并读取第一预设存储器中的数据,将所述哈希结果与所述第一预设存储器中的数据进行模运算,将结果保存至第二寄存器中;
    步骤S2:CPU读取第一随机数存储器、第二预设存储器和第三预设存储器中的数据,将所述第一随机存储器中的数据与所述第二预设存储器和所述第三预设存储器中的数据进行点乘运算,将运算结果保存至第三寄存器中;
    步骤S3:CPU将所述第三寄存器中的数据与所述第一预设存储器中的数据进行模运算,将结果保存至第四寄存器中;
    步骤S4:CPU读取签名私钥,对所述签名私钥、所述第二寄存器中的数据、所述第四寄存器中的数据和所述第一随机存储器中的数据进行预设运算,将结果保存至第五寄存器中;
    步骤S5:CPU将所述第四寄存器中的数据和所述第五寄存器中的数据作为签名结果输出。

    2.
      根据权利要求1所述的方法,其特征在于,所述步骤S1之前还包括:CPU接收外部传入的待签名数据,对所述待签名数据进行预设哈希运算,将运算得到的哈希结果保存。

    3.
      根据权利要求1所述的方法,其特征在于,所述步骤S1之前还包括:CPU将模运算参数设置为第一预设值,并保存至所述第一预设存储器中,将椭圆曲线参数设置为第二预设值和第三预设值,将第二预设值保存至所述第二预设存储器中,将第三预设值保存至所述第三预设存储器中。

    4.
      根据权利要求1所述的方法,其特征在于,所述步骤S1与所述步骤S2之间还包括:CPU判断所述第二寄存器中的数据是否为第四预设值,如果是, 则将所述第二寄存器中的数据设置为第五预设值,执行步骤S2,否则直接执行步骤S2。

    5.
      根据权利要求1所述的方法,其特征在于,所述步骤S2之前还包括:
    步骤a:CPU生成随机数,判断所述随机数是否大于第四预设值且小于第一预设值,如果是,则将所述随机数保存至所述第一随机数存储器中,执行步骤S2,否则继续执行步骤a。

    6.
      根据权利要求5所述的方法,其特征在于,所述步骤S3与所述步骤S4之间,还包括:判断所述第四寄存器中的数据是否为第四预设值,如果是,则执行步骤S4,否则返回步骤a。

    7.
      根据权利要求1所述的方法,其特征在于,所述步骤S4中,所述对所述签名私钥、所述第二寄存器中的数据、所述第四寄存器中的数据和所述第一随机存储器中的数据进行预设运算,将结果保存至第五寄存器中,具体为:
    步骤a1:CPU将所述第四寄存器中的数据与所述签名私钥做乘法,将结果保存至第一中间值存储器中,将所述第一随机存储器中的数据与所述第二寄存器中的数据做乘法,将结果保存至第二中间值存储器中;
    步骤a2:CPU将所述第一中间值存储器中的数据与所述第二中间值存储器中的数据相加,将结果保存至第三中间值存储器中;
    步骤a3:CPU将所述第三中间值存储器中的数据与所述第一预设存储器中的数据做模运算,将结果保存至所述第五寄存器中。

    8.
      根据权利要求5所述的方法,其特征在于,所述步骤S4和所述步骤S5之间,还包括:CPU判断所述第五寄存器中的数据是否为第四预设值,如果是,则返回执行步骤a,否则执行步骤S5。

    9.
      根据权利要求1所述的方法,其特征在于,所述步骤S5,具体为:CPU 将所述第四寄存器中的数据和所述第五寄存器中的数据进行组合,并输出。

    10.
      根据权利要求9所述的方法,其特征在于,所述将所述第四寄存器中的数据和所述第五寄存器中的数据进行组合,得到签名结果,具体为:将所述第四寄存器中的数据与所述第五寄存器中的数据进行拼接,得到签名结果。

    11.
      一种实现数字验签的方法,其特征在于,包括:
    步骤T1:CPU读取签名结果,对所述签名结果进行处理,将得到的两个结果分别保存至第八寄存器和第九寄存器中,读取待签名数据,对所述待签名数据进行哈希计算,将结果保存至第十寄存器中;
    步骤T2:CPU读取第一预设存储器中的数据,将所述第十寄存器中的数据与第一预设存储器中的数据进行模运算,将结果保存至第十一寄存器中;
    步骤T3:CPU计算所述第十一寄存器中的数据与所述第一预设存储器中的数据取模的逆元,将结果保存至第十二寄存器中;
    步骤T4:CPU对所述第九寄存器中的数据、所述第十二寄存器中的数据和所述第一预设存储器中的数据进行处理,将结果保存至第十三寄存器中,对所述第八寄存器中的数据、所述第十二寄存器中的数据和所述第一预设存储器中的数据进行处理,将结果保存至第十四寄存器中;
    步骤T5:CPU读取签名公钥,对所述第十三寄存器中的数据、所述第十四寄存器中的数据和所述签名公钥进行预设运算,将结果保存至第十五寄存器中;
    步骤T6:CPU将所述第十五寄存器中的数据与所述第一预设存储器中的数据进行模运算,将结果保存至第十六寄存器中;
    步骤T7:CPU判断所述第十六寄存器中的数据与所述第八寄存器中的数据是否相等,如果是,则输出验签成功信息,否则输出验签失败信息。

    12.
      根据权利要求11所述的方法,其特征在于,所述步骤T2之前还包括: CPU将模运算参数设置为第一预设值,并保存至所述第一预设存储器中;CPU将椭圆曲线参数设置为第二预设值和第三预设值,将所述第二预设值保存至所述第二预设存储器中,将所述第三预设值保存至所述第三预设存储器中。

    13.
      根据权利要求11所述的方法,其特征在于,所述步骤T1与所述步骤T2之间,还包括:CPU判断所述第八寄存器中的数据与所述第九寄存器中的数据是否均大于第四预设值且小于第一预设值,如果是,则执行步骤T2,否则报错,结束。

    14.
      根据权利要求11所述的方法,其特征在于,所述步骤T2与所述步骤T3之间,还包括:CPU判断所述第十一寄存器中的数据是否为第四预设值,如果是,则将所述第十一寄存器中的数据设置为第五预设值,执行步骤T3,否则直接执行步骤T3。

    15.
      根据权利要求11所述的方法,其特征在于,所述步骤T4中,所述对所述第九寄存器中的数据、所述第十二寄存器中的数据和所述第一预设存储器中的数据进行处理,将结果保存至第十三寄存器中,具体为:CPU计算所述第九寄存器中的数据与所述第十二寄存器中的数据的乘积,将乘积结果与所述第一预设存储器中的数据进行模运算,将模运算结果保存至所述第十三寄存器中。

    16.
      根据权利要求11所述的方法,其特征在于,所述步骤T4中,所述对所述第八寄存器中的数据、所述第十二寄存器中的数据和所述第一预设存储器中的数据进行处理,将结果保存至第十四寄存器中,具体为:CPU计算所述第八寄存器中的数据与所述第十二寄存器中的数据的乘积,将乘积结果与所述第一预设存储器中的数据进行模运算,将模运算结果保存至所述第十四寄存器中。

    17.
      根据权利要求11所述的方法,其特征在于,所述步骤T5,具体包括:
    步骤b1:CPU读取第二预设存储器和第三预设存储器中的数据,并读取签 名公钥;
    步骤b2:CPU将所述第十三寄存器中的数据与所述第二预设存储器中的数据和所述第三预设存储器中的数据进行点乘运算,将运算得到的两个结果分别保存至第四中间值存储器和第五中间值存储器中;
    步骤b3:CPU将所述第十四寄存器中的数据与所述签名公钥做乘法,将运算得到的两个结果分别保存至第六中间值存储器和第七中间值存储器中;
    步骤b4:CPU对所述第四中间值存储器、所述第五中间值存储器、所述第六中间值存储器和所述第七中间值存储器中的数据进行计算,将计算结果保存至所述第十五寄存器中。

    说明书

    一种实现数字签名和验签的方法
    技术领域
    本发明涉及信息安全领域,尤其涉及一种实现数字签名和验签的方法。
    背景技术
    数字签名是附加在数据单元上的一些数据或者是对数据单元所作的密码变化,这种数据或变化只允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性,保护数据防止被他人伪造。数字签名是基于公钥密码体制和私钥密码体制实现的。
    发明内容
    本发明提供了一种实现数字签名和验签的方法,采用的技术方案是:一种实现数字签名的方法,包括:
    步骤S1:CPU读取哈希结果,并读取第一预设存储器中的数据,将所述哈希结果与所述第一预设存储器中的数据进行模运算,将结果保存至第二寄存器中;
    步骤S2:CPU读取第一随机数存储器、第二预设存储器和第三预设存储器中的数据,将所述第一随机存储器中的数据与所述第二预设存储器和所述第三预设存储器中的数据进行点乘运算,将运算结果保存至第三寄存器中;
    步骤S3:CPU将所述第三寄存器中的数据与所述第一预设存储器中的数据进行模运算,将结果保存至第四寄存器中;
    步骤S4:CPU读取签名私钥,对所述签名私钥、所述第二寄存器中的数据、 所述第四寄存器中的数据和所述第一随机存储器中的数据进行预设运算,将结果保存至第五寄存器中;
    步骤S5:CPU将所述第四寄存器中的数据和所述第五寄存器中的数据作为签名结果输出。
    所述步骤S1之前还包括:CPU接收外部传入的待签名数据,对所述待签名数据进行预设哈希运算,将运算得到的哈希结果保存。
    所述步骤S1之前还包括:CPU将模运算参数设置为第一预设值,并保存至所述第一预设存储器中,将椭圆曲线参数设置为第二预设值和第三预设值,将第二预设值保存至所述第二预设存储器中,将第三预设值保存至所述第三预设存储器中。
    所述步骤S1与所述步骤S2之间还包括:CPU判断所述第二寄存器中的数据是否为第四预设值,如果是,则将所述第二寄存器中的数据设置为第五预设值,执行步骤S2,否则直接执行步骤S2。
    所述步骤S2之前还包括:
    步骤a:CPU生成随机数,判断所述随机数是否大于第四预设值且小于第一预设值,如果是,则将所述随机数保存至所述第一随机数存储器中,执行步骤S2,否则继续执行步骤a。
    所述步骤S3与所述步骤S4之间,还包括:判断所述第四寄存器中的数据是否为第四预设值,如果是,则执行步骤S4,否则返回步骤a。
    所述步骤S4中,所述对所述签名私钥、所述第二寄存器中的数据、所述第四寄存器中的数据和所述第一随机存储器中的数据进行预设运算,将结果保存至第五寄存器中,具体为:
    步骤a1:CPU将所述第四寄存器中的数据与所述签名私钥做乘法,将结果 保存至第一中间值存储器中,将所述第一随机存储器中的数据与所述第二寄存器中的数据做乘法,将结果保存至第二中间值存储器中;
    步骤a2:CPU将所述第一中间值存储器中的数据与所述第二中间值存储器中的数据相加,将结果保存至第三中间值存储器中;
    步骤a3:CPU将所述第三中间值存储器中的数据与所述第一预设存储器中的数据做模运算,将结果保存至所述第五寄存器中。
    所述步骤S4和所述步骤S5之间,还包括:CPU判断所述第五寄存器中的数据是否为第四预设值,如果是,则返回执行步骤a,否则执行步骤S5。
    所述步骤S5,具体为:CPU将所述第四寄存器中的数据和所述第五寄存器中的数据进行组合,并输出。
    所述将所述第四寄存器中的数据和所述第五寄存器中的数据进行组合,得到签名结果,具体为:将所述第四寄存器中的数据与所述第五寄存器中的数据进行拼接,得到签名结果。
    一种实现数字验签的方法,包括:
    步骤T1:CPU读取签名结果,对所述签名结果进行处理,将得到的两个结果分别保存至第八寄存器和第九寄存器中,读取待签名数据,对所述待签名数据进行哈希计算,将结果保存至第十寄存器中;
    步骤T2:CPU读取第一预设存储器中的数据,将所述第十寄存器中的数据与第一预设存储器中的数据进行模运算,将结果保存至第十一寄存器中;
    步骤T3:CPU计算所述第十一寄存器中的数据与所述第一预设存储器中的数据取模的逆元,将结果保存至第十二寄存器中;
    步骤T4:CPU对所述第九寄存器中的数据、所述第十二寄存器中的数据和所述第一预设存储器中的数据进行处理,将结果保存至第十三寄存器中,对所 述第八寄存器中的数据、所述第十二寄存器中的数据和所述第一预设存储器中的数据进行处理,将结果保存至第十四寄存器中;
    步骤T5:CPU读取签名公钥,对所述第十三寄存器中的数据、所述第十四寄存器中的数据和所述签名公钥进行预设运算,将结果保存至第十五寄存器中;
    步骤T6:CPU将所述第十五寄存器中的数据与所述第一预设存储器中的数据进行模运算,将结果保存至第十六寄存器中;
    步骤T7:CPU判断所述第十六寄存器中的数据与所述第八寄存器中的数据是否相等,如果是,则输出验签成功信息,否则输出验签失败信息。
    所述步骤T2之前还包括:CPU将模运算参数设置为第一预设值,并保存至所述第一预设存储器中;CPU将椭圆曲线参数设置为第二预设值和第三预设值,将所述第二预设值保存至所述第二预设存储器中,将所述第三预设值保存至所述第三预设存储器中。
    所述步骤T1与所述步骤T2之间,还包括:CPU判断所述第八寄存器中的数据与所述第九寄存器中的数据是否均大于第四预设值且小于第一预设值,如果是,则执行步骤T2,否则报错,结束。
    所述步骤T2与所述步骤T3之间,还包括:CPU判断所述第十一寄存器中的数据是否为第四预设值,如果是,则将所述第十一寄存器中的数据设置为第五预设值,执行步骤T3,否则直接执行步骤T3。
    所述步骤T4中,所述对所述第九寄存器中的数据、所述第十二寄存器中的数据和所述第一预设存储器中的数据进行处理,将结果保存至第十三寄存器中,具体为:CPU计算所述第九寄存器中的数据与所述第十二寄存器中的数据的乘积,将乘积结果与所述第一预设存储器中的数据进行模运算,将模运算结果保存至所述第十三寄存器中。
    所述步骤T4中,所述对所述第八寄存器中的数据、所述第十二寄存器中的数据和所述第一预设存储器中的数据进行处理,将结果保存至第十四寄存器中,具体为:CPU计算所述第八寄存器中的数据与所述第十二寄存器中的数据的乘积,将乘积结果与所述第一预设存储器中的数据进行模运算,将模运算结果保存至所述第十四寄存器中。
    所述步骤T5,具体包括:
    步骤b1:CPU读取第二预设存储器和第三预设存储器中的数据,并读取签名公钥;
    步骤b2:CPU将所述第十三寄存器中的数据与所述第二预设存储器中的数据和所述第三预设存储器中的数据进行点乘运算,将运算得到的两个结果分别保存至第四中间值存储器和第五中间值存储器中;
    步骤b3:CPU将所述第十四寄存器中的数据与所述签名公钥做乘法,将运算得到的两个结果分别保存至第六中间值存储器和第七中间值存储器中;
    步骤b4:CPU对所述第四中间值存储器、所述第五中间值存储器、所述第六中间值存储器和所述第七中间值存储器中的数据进行计算,将计算结果保存至所述第十五寄存器中。
    本发明取得的有益效果是:采用本发明的技术方案,能够实现身份认证,保证数据的完整性和不可抵赖性,而且对模运算参数和椭圆曲线参数进行初始化,提高了运算效率,验签的过程中对公钥的验证,更加提高了签名的安全性。
    附图说明
    为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述 中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    图1是本发明实施例1提供的一种实现数字签名的方法流程图;
    图2是本发明实施例2提供的一种实现数字签名的方法流程图;
    图3是本发明实施例3提供的一种实现数字验签的方法流程图
    图4是本发明实施例4提供的一种实现数字验签的方法流程图。
    具体实施方式
    下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
    实施例1
    本发明实施例1提供了一种实现数字签名的方法,如图1所示,包括:
    步骤S1:CPU读取哈希结果,并读取第一预设存储器中的数据,将哈希结果与第一预设存储器中的数据进行模运算,将结果保存至第二寄存器中;
    步骤S2:CPU读取第一随机数存储器、第二预设存储器和第三预设存储器中的数据,将第一随机存储器中的数据与第二预设存储器和第三预设存储器中的数据进行点乘运算,将运算结果保存至第三寄存器中;
    步骤S3:CPU将第三寄存器中的数据与第一预设存储器中的数据进行模运算,将结果保存至第四寄存器中;
    步骤S4:CPU读取签名私钥,对签名私钥、第四寄存器中的数据、第二寄存器中的数据和第一随机存储器中的数据进行预设运算,将结果保存至第五寄 存器中;
    步骤S5:CPU将第四寄存器中的数据和第五寄存器中的数据作为签名结果输出。
    实施例2
    本发明实施例2提供了一种实现数字签名的方法,如图2所示,包括:
    步骤101:CPU读取第一寄存器中的哈希结果;
    本实施例中,CPU对外部传入的待签名数据进行预设哈希运算,得到哈希结果,保存至第一寄存器中;
    例如,待签名数据为0x499602D2;
    经过预设哈希运算后得到的第一寄存器中的第一哈希数据为:
    0x1785EC310767F81A8D9FD076D39074261C13EA788B9311DEE3CAFF2ECF00670D;
    步骤102:CPU初始化模运算参数,将模运算参数设置为第一预设值,并保存至第一预设存储器中,将椭圆曲线参数设置为第二预设值和第三预设值,将第二预设值保存至第二预设存储器中,将第三预设值保存至第三预设存储器中;
    本实施例中,优选的,第一预设值为:
    0x8000000000000000000000000000000150FE8A1892976154C59CFC193ACCF5B3;
    步骤103:CPU读取第一预设存储器中的数据,将第一寄存器中的哈希结果与第一预设存储器中的第一预设值进行模运算,将模运算结果保存至第二寄存器中;
    例如,CPU将第一寄存器中的哈希数据0x1785EC310767F81A8D9FD076D39074261C13EA788B9311DEE3CAFF2ECF00670D与第一预设值 0x8000000000000000000000000000000150FE8A1892976154C59CFC193ACCF5B3进行模运算,得到的结果为:
    0x2DFBC1B372D89A1188C09C52E0EEC61FCE52032AB1022E8E67ECE6672B043EE5,将该数据存储至第二寄存器中;
    步骤104:CPU判断第二寄存器中的数据是否为第四预设值,如果是,则将第二寄存器中的数据设置为第五预设值,执行步骤105,否则直接执行步骤105;
    优选的,第四预设值为0,第五预设值为1;
    步骤105:CPU生成随机数并保存至第一随机存储器中,判断第一随机存储器中的随机数是否大于第四预设值且小于第一预设值,如果是,则执行步骤106,否则继续执行步骤105;
    例如,CPU生成的随机数,即第一随机存储器中的数据为:
    0x77105C9B20BCD3122823C8CF6FCC7B956DE33814E95B7FE64FED924594DCEAB3;满足大于第四预设值小于第一预设值,执行步骤106;
    步骤106:CPU读取第一随机数存储器、第二预设存储器和第三预设存储器中的数据,将第一随机存储器中的数据与第二预设存储器和第三预设存储器中的数据进行点乘运算,将运算结果保存至第三寄存器中;
    优选的,第二预设存储器中的数据为:0x2
    第三预设存储器中的数据为:
    0x8E2A8A0E65147D4BD6316030E16D19C85C97F0A9CA267122B96ABBCEA7E8FC8;
    第一随机存储器中的数据为:
    0x77105C9B20BCD3122823C8CF6FCC7B956DE33814E95B7FE64FED924594DCEAB3;
    CPU将第一随机存储器中的数据与第二预设存储器和第三预设存储器中的数据进行点乘运算,得到的运算结果为:
    0x41AA28D2F1AB148280CD9ED56FEDA41974053554A42767B83AD043FD39DC0493,将该数据保存至第三寄存器中。
    步骤107:CPU将第三寄存器中的数据与第一预设存储器中的数据进行模运算,将结果保存至第四寄存器中;
    例如,第三寄存器中的数据为:
    0x41AA28D2F1AB148280CD9ED56FEDA41974053554A42767B83AD043FD39DC0493;
    CPU将第三寄存器中的数据与第一预设存储器中的数据进行模运算,计算得到的数据为:
    0x41AA28D2F1AB148280CD9ED56FEDA41974053554A42767B83AD043FD39DC0493,将该数据保存至第四寄存器中;
    步骤108:CPU判断第四寄存器中的数据是否为第四预设值,如果是,则返回执行步骤105,否则执行步骤109;
    优选的,第四预设值为0;
    步骤109:CPU读取签名私钥,将第四寄存器中的数据与签名私钥做乘法,将结果保存至第一中间值存储器中,将第一随机存储器中的数据与第二寄存器中的数据做乘法,将结果保存至第二中间值存储器;
    例如,读取到的签名私钥为:
    0x7A929ADE789BB9BE10ED359DD39A72C11B60961F49397EEE1D19CE9891EC3B28;
    CPU将第四寄存器中的数据与签名私钥做乘法计算得到的第一中间值存储 器中的数据为:
    0x1F70B2393C875C74B1A479D9F7971E8DA54B116F1A1D872B5E15035BC1DE2B9EF18B59F89A2CE73B4E87980453EEB0084809CEE08C64296CCB18F29A39F297F8;
    CPU将第一随机存储器中的随机数0x77105C9B20BCD3122823C8CF6FCC7B956DE33814E95B7FE64FED924594DCEAB3与第二寄存器中的数据0x2DFBC1B372D89A1188C09C52E0EEC61FCE52032AB1022E8E67ECE6672B043EE5做乘法,计算得到的第二中间值存储器中的数据为:
    0x1562F768DC86051699E15ED2B82E87498C7035EE2FAA123ED4B2D512D4E848270A434EC3C8B6DBC95A088D4F9ADE41B1E36C0B2EE5002CC6C3CB613066414C1F;
    步骤110:CPU将第一中间值存储器中的数据与第二中间值存储器中的数据相加,将结果保存至第三中间值存储器中,将第三中间值存储器中的数据与第一预设存储器中的数据做模运算,将结果保存在第五寄存器中;
    例如,CPU将第一中间值存储器中的数据与第二中间值存储器中的数据相加得到的第三中间值存储器中的数据为:
    0x34D3A9A2190D618B4B85D8ACAFC5A5D731BB475D49C7996A32C7D86E96C673C5FBCEA8BC62E3C304A8902553EECCF1BA2B75DA0F716456338EE453CAA033E417;
    CPU将第三中间值存储器中的数据与第一预设存储器中的数据做模运算得到的第五寄存器中的数据为:
    0x1456C64BA4642A1653C235A98A60249BCD6D3F746B631DF928014F6C5BF9C40;
    步骤111:CPU判断第五寄存器中的数据是否为第四预设值,如果是,则返回执行步骤105,否则执行步骤112;
    步骤112:CPU将第四寄存器中的数据和第五寄存器中的数据作为签名结果输出;
    本实施例中,优选的,将第四寄存器中的数据和第五寄存器中的数据进行拼接,得到签名结果;
    例如,CPU将第四寄存器中的数据0x41AA28D2F1AB148280CD9ED56FEDA41974053554A42767B83AD043FD39DC0493和第五寄存器中的数据0x1456C64BA4642A1653C235A98A60249BCD6D3F746B631D F928014F6C5BF9C40进行拼接,得到的签名结果为:
    0x41AA28D2F1AB148280CD9ED56FEDA41974053554A42767B83AD043FD39DC04931456C64BA4642A1653C235A98A60249BCD6D3F746B631DF928014F6C5BF9C40。
    实施例3
    本发明实施例3提供了一种实现数字验签的方法,如图3所示,包括:
    步骤T1:CPU读取签名结果,对签名结果进行处理,将结果保存至第八寄存器和第九寄存器中,读取待签名数据,对待签名数据进行哈希计算,将结果保存至第十寄存器中;
    步骤T2:CPU读取第一预设存储器中的数据,将第十寄存器中的数据与第一预设存储器中的数据进行模运算,将结果保存至第十一寄存器中;
    步骤T3:CPU计算第十一寄存器中的数据与第一预设存储器中的数据取模的逆元,将结果保存至第十二寄存器中;
    步骤T4:CPU对第九寄存器中的数据、第十二寄存器中的数据和第一预设 存储器中的数据进行处理,将结果保存至第十三寄存器中,对第八寄存器中的数据、第十二寄存器中的数据和第一预设存储器中的数据进行处理,将结果保存至第十四寄存器中;
    步骤T5:CPU读取签名公钥,对第十三寄存器中的数据、第十四寄存器中的数据和签名公钥进行预设运算,将结果保存至第十五寄存器中;
    步骤T6:CPU将第十五寄存器中的数据与第一预设存储器中的数据进行模运算,将结果保存至第十六寄存器中;
    步骤T7:CPU判断第十六寄存器中的数据与第八寄存器中的数据是否相等,如果是,则输出验签成功信息,否则输出验签失败信息。
    实施例4
    本发明实施例4提供了一种实现数字验签的方法,如图4所示,当接收到需要验签的签名结果和待签名数据时,将签名结果保存至第六寄存器中,将待签名数据保存至第七寄存器中,CPU执行以下操作:
    步骤201:CPU初始化椭圆曲线参数,将模运算参数设置为第一预设值,并保存至第一预设存储器中,将椭圆曲线参数设置为第二预设值和第三预设值,将第二预设值保存至第二预设存储器中,将第三预设值保存至第三预设存储器中;
    本实施例中,第一预设存储器中的第一预设值为:
    0x8000000000000000000000000000000150FE8A1892976154C59CFC193ACCF5B3;
    第二预设存储器中的第二预设值为:
    0x41AA28D2F1AB148280CD9ED56FEDA41974053554A42767B83AD043FD39DC0493;
    第三预设存储器中的第三预设值为:
    0x489C375A9941A3049E33B34361DD204172AD98C3E5916DE27695D22A61FAE46E;
    步骤202:CPU从第六寄存器中获取第二数据和第三数据,将第二数据保存至第八寄存器中,将第三数据保存至第九寄存器中;
    例如,CPU从签名结果中获取到的第二数据,即保存至第八寄存器中的数据为:
    0x41AA28D2F1AB148280CD9ED56FEDA41974053554A42767B83AD043FD39DC0493;
    CPU从签名结果中获取到的第三数据,即保存至第九寄存器中的数据为:
    0x1456C64BA4642A1653C235A98A60249BCD6D3F746B631DF928014F6C5BF9C40;
    步骤203:CPU判断第八寄存器中的数据和第九寄存器中的数据是否均大于第四预设值小于第一预设值,如果是,则执行步骤204,否则报错,结束;
    优选的,第四预设值为0;
    步骤204:CPU读取第七寄存器中的待签名数据,对第七寄存器中的待签名数据进行哈希计算,得到哈希结果,将哈希结果保存至第十寄存器中;
    本实施例中,CPU对接收到的待签名数据进行预设哈希运算,得到哈希结果;
    例如,CPU接收到的待签名数据为0x499602D2,对该待签名数据进行哈希计算后得到的哈希结果为:
    0x2DFBC1B372D89A1188C09C52E0EEC61FCE52032AB1022E8E67ECE6672B043EE5;
    步骤205:CPU读取第一预设存储器中的数据,将第十寄存器中的哈希结果与第一预设存储器中的第一预设值进行模运算,将结果保存至第十一寄存器;
    例如,CPU将哈希结果与第一预设值进行模运算,计算得到的第十一寄存器中的数据为:
    0x2DFBC1B372D89A1188C09C52E0EEC61FCE52032AB1022E8E67ECE6672B043EE5;
    步骤206:CPU判断第十一寄存器中的数据是否为第四预设值,如果是,则将第十一寄存器中的数据设置为第五预设值,执行步骤207,否则直接执行步骤207;
    优选的,第四预设值为0,第五预设值为1;
    步骤207:CPU计算第十一寄存器中的数据与第一预设存储器中的第一预设值取模的逆元,将结果保存至第十二寄存器;
    例如,CPU计算得到的第十二寄存器中的数据为:
    0x271A4EE429F84EBC423E388964555BB29D3BA53C7BF945E5FAC8F381706354C2;
    步骤208:CPU计算第九寄存器中的数据与第十二寄存器中的数据的乘积,将结果与第一预设存储器中的第一预设值进行模运算,得到的结果保存至第十三寄存器中;
    本实施例中,CPU计算得到的第十三寄存器中的数据为:
    0x5358F8FFB38F7C09ABC782A2DF2A3927DA4077D07205F763682F3A76C9019B4F;
    步骤209:CPU计算第八寄存器中的数据与第十二寄存器中的数据的乘积,将结果与第一预设存储器中的第一预设值进行模运算,将结果保存至第十四寄 存器中;
    本实施例中,CPU计算得到的第十四寄存器中的数据为:
    0x3221B4FBBF6D101074EC14AFAC2D4F7EFAC4CF9FEC1ED11BAE336D27D527665;
    本实施例中,步骤208与步骤209无先后顺序,可同时执行;
    步骤210:CPU读取第二预设存储器和第三预设存储器中的数据,将第十三寄存器中的数据与第二预设存储器中的第二预设值和第三预设存储器中的第三预设值进行点乘运算,将得到的两个结果分别保存至第四中间值存储器和第五中间值存储器中;
    例如,CPU进行点乘运算,得到的第四中间值存储器中的数据为:
    0xCA4036F2B1EC00E1D9E4F789EE594C83F22987A2D9FD7844572ECB443F676E67;
    同时,CPU得到的第五中间值存储器中的数据为:
    0x55E6DD8D570DD7CE2E1C8E2DE340E2F9785E94E257E3530C074510E46CE50464;
    步骤211:CPU读取签名公钥,将第十四寄存器中的数据与签名公钥做乘法,将运算得到的两个结果分别保存至第六中间值存储器和第七中间值存储器中;
    例如,CPU获取到的签名公钥为:
    (0x7F2B49E270DB6D90D8595BEC458B50C58585BA1D4E9B788F6689DBD8E56FD80B,0x26F1B489D6701DD185C8413A977B3CBBAF64D1C593D26627DFFB101A87FF77DA);
    CPU将第十四寄存器中的数据与签名公钥做乘法得到的第六中间值存储器 中的数据为:
    0x64A4B968FFEE6A93EC23445E47129E087F1517FA6152DD5DABC2ADBA527191DC;
    同时,CPU得到的第七中间值存储器中的数据为:
    0x1CA5EE5FC1BFC27EFC8B4E260F8FD17593A5E4E42821045B546A3DC2E2B8A290;
    本实施例中,步骤210与步骤211无先后顺序,可同时执行;
    步骤212:CPU对第四中间值存储器、第五中间值存储器、第六中间值存储器和第七中间值存储器中的数据进行计算,将计算结果保存至第十五寄存器中;
    例如,CPU计算得到的第十五寄存器中的数据为:
    0x41AA28D2F1AB148280CD9ED56FEDA41974053554A42767B83AD043FD39DC0493;
    步骤213:CPU将第十五寄存器中的数据与第一预设存储器中的第一预设值进行模运算,将结果保存至第十六寄存器中;
    例如,CPU计算得到的第十六寄存器中的数据为:
    0x41AA28D2F1AB148280CD9ED56FEDA41974053554A42767B83AD043FD39DC0493;
    步骤214:CPU判断第十六寄存器中的数据与第八寄存器中的数据是否相等,如果是,则输出验签成功信息,否则输出验签失败信息;
    本实施例中,CPU从接收到的签名结果中获取到的第八寄存器中的数据与第十六寄存器中的数据相同,验签成功。
    以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

    关 键  词:
    一种 实现 数字签名 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种实现数字签名和验签的方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-508165.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1