一种鉴别交易信息完整性的方法与流程

文档序号:15589620发布日期:2018-10-02 18:47阅读:272来源:国知局

本发明涉及信息安全领域,特别涉及一种鉴别交易信息完整性的方法。



背景技术:

随着信息技术的发展,信息安全日益受到人们的重视,如上位机与终端设备通过对通信数据进行加密并共享密钥来保障信息安全、服务器通过验证网络客户端传送的密码认证来保障信息安全,现有技术中,通信双方通信过程中的通信数据一般会涉及重要数据,如交易金额、用户名、密码等,而这些重要数据会储存在交易信息中,一旦交易信息被非法截取会给用户的利益带来安全隐患。



技术实现要素:

为了解决以上提到的问题,根据本发明提供了一种鉴别交易信息完整性的方法,包括:

步骤a:终端设备接收上位机发送的交易指令,解析所述交易指令得到第一消息验证码及待验证的交易信息;

步骤b:所述终端设备对所述待验证的交易信息进行分块得到交易信息块;根据内部储存的第一密钥生成第三密钥,根据内部储存的第二密钥生成第四密钥;所述终端设备根据所述交易信息块、所述第一密钥、所述第二密钥、所述第三密钥和所述第四密钥进行计算生成鉴别消息验证码;

步骤c:所述终端设备判断所述鉴别消息验证码是否与所述第一消息验证码相匹配,如果是,则所述交易信息完整,执行所述交易指令,向上位机返回执行结果,结束;如果否,则所述交易信息不完整,拒绝执行所述交易指令,向上位机返回错误码,结束。

根据本发明还提供了一种鉴别交易信息完整性的方法,包括:

步骤a’:终端设备接收上位机发送的交易指令,解析所述交易指令得到第一消息验证码和待验证的交易信息;

步骤b’:所述终端设备根据储存空间中的已知密钥给第一导出密钥赋值;根据所述第一导出密钥和已知常数生成第一子密钥、第二子密钥以及第三子密钥;所述终端设备根据所述第一子密钥、所述第三子密钥、所述已知常数,以及所述待验证的交易信息生成鉴别消息验证码;

步骤c’:所述终端设备判断所述第一消息验证码是否与所述鉴别消息验证码相匹配,如果是,则所述交易信息完整,执行所述交易指令,向上位机返回执行结果,结束;如果否,则所述交易信息不完整,拒绝执行所述交易指令,向上位机返回错误码,结束。

根据本发明还提供了一种鉴别交易信息完整性的装置,包括:

接收模块,用于接收上位机发送的交易指令;

解析模块,用于解析所述接收模块接收到的所述交易指令得到第一消息验证码和待验证的交易信息;

切分模块,用于将所述解析模块解析得到的所述待验证的交易信息进行分块得到交易信息块;

储存模块,用于储存第一密钥和第二密钥;

第一生成模块,用于根据所述储存模块储存的第一密钥生成第三密钥,根据所述储存模块储存的第二密钥生成第四密钥;

计算模块,用于根据所述切分模块得到的所述交易信息块、所述储存模块储存的所述第一密钥、第二密钥、所述生成模块生成的第三密钥和第四密钥进行计算生成鉴别消息验证码;

判断模块,用于判断所述计算模块计算得到的所述鉴别消息验证码是否与所述解析模块得到的所述第一消息验证码相匹配;

执行返回模块,用于当所述判断模块判断出所述计算模块计算得到的所述鉴别消息验证码与所述解析模块得到的所述第一消息验证码相匹配时,执行交易指令,并向上位机返回执行结果;当所述判断模块判断出所述计算模块计算得到的所述鉴别消息验证码与所述解析模块得到的所述第一消息验证码不相匹配时,拒绝执行交易指令,并向上位机返回错误码。

根据本发明还提供了一种鉴别交易信息完整性的装置,包括:

接收模块,用于接收上位机发送的交易指令;

解析模块,用于解析所述接收模块接收到的所述交易指令得到第一消息验证码和待验证的交易信息;

赋值模块,用于储存已知密钥,并根据储存空间中的已知密钥给第一导出密钥赋值;

第二生成模块,用于根据所述第一导出密钥和已知常数生成第一子密钥、第二子密钥以及第三子密钥;

第三生成模块,用于根据所述第二生成模块生成的所述第一子密钥、所述第二子密钥、所述第三子密钥,以及所述已知常数和所述解析模块得到的所述待验证的交易信息生成鉴别消息验证码;

判断模块,用于判断所述解析模块得到的所述第一消息验证码是否与所述第三生成模块生成的所述鉴别消息验证码相匹配。

本发明技术方案和现有技术相比,具有如下优点:通过本发明的方法,终端设备验证交易信息时,根据待验证的交易信息计算验证码的过程中对待验证的交易信息经过多次处理,使得交易信息中的重要数据在验证的过程中更加安全。

附图说明

图1为实施例1提供的一种鉴别交易信息完整性的方法的流程图;

图2为实施例1提供的一种消息验证码计算流程的流程图;

图3为实施例2提供的又一种鉴别交易信息完整性的方法的流程图;

图4为实施例3提供的一种鉴别交易信息完整性的装置的方框图;

图5为实施例4提供的一种鉴别交易信息完整性的装置的方框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

为便于对本发明实施例的理解,下面将结合附图做进一步的解释说明,实施例并不构成对本发明的限定。

实施例1

根据本发明实施例1,提供了一种鉴别交易信息完整性的方法,如图1所示,包括:

步骤s101:终端设备接收上位机发送的交易指令,解析交易指令得到第一消息验证码及待验证的交易信息。

步骤s102:终端设备根据内部储存的第一密钥生成第三密钥;根据内部储存的第二密钥生成第四密钥;

其中,第一密钥和第二密钥为预置的已知密钥;

具体地,从第一密钥的第四个比特组开始,每隔四比特交替取补得到第三密钥,从第二密钥的第四个比特组开始,每隔四比特交替取补得到第四密钥。

例如:第一密钥为0123456789abcdef,则第三密钥为0e2c4a6886a4c2e0;第二密钥为fedcba9876543210,则第四密钥为f1d3b597795b3d1f。

步骤s103:终端设备根据待验证的交易信息、第一密钥和第二密钥进行消息验证码计算流程得到第二消息验证码;根据待验证的交易信息、第三密钥和第四密钥进行消息验证码计算流程得到第三消息验证码;

步骤s104:终端设备根据第二消息验证码和第三消息验证码生成鉴别消息验证码;

具体地,将第二消息验证码和第三消息验证码进行异或运算生成鉴别消息验证码。

步骤s105:终端设备判断鉴别消息验证码是否与第一消息验证码匹配,如果是,则交易信息完整,执行交易指令,向上位机返回执行结果,结束;如果否,则交易信息不完整,拒绝执行交易指令,向上位机返回错误码,结束。

具体地,步骤s105为:终端设备判断鉴别消息验证码是否等于第一消息验证码,如果是,则所述交易信息完整,执行所述交易指令,向上位机返回执行结果,结束;如果否,则所述交易信息不完整,拒绝执行所述交易指令,向上位机返回错误码,结束。

其中,如图2所示,步骤s103中所述的消息验证码计算流程具体包括:

步骤s201:判断待验证的交易信息的长度是否为密钥长度的整数倍,如果是,执行步骤s202;如果否,对待验证的交易信息进行填充,直至待验证的交易信息的长度为密钥的整数倍,执行步骤s202;

具体地,判断待验证的交易信息的长度是否为密钥长度的整数倍具体为:判断待验证的交易信息的长度是否可以整除n/8(例如,n可以取128,则n/8=16),如果是,执行步骤s202;如果否,在待验证的交易信息末尾填充80,再填充00,直至待验证的交易信息的长度可以整除n/8,执行步骤s202。

步骤s202:对待验证的交易信息进行分块,得到第一变量,第一变量用来记录交易信息块的总个数;

其中,根据密钥长度决定分组数据大小;例如n=128,n/8为16,将交易信息总长度除以16,获得交易信息块个数。

步骤s203:根据第二密钥变量生成第三密钥变量;

可选地,根据第二密钥变量生成第三密钥变量为:从第二密钥变量的第一个四比特组开始,每隔四比特交替取补得到第三密钥变量;

例如,当第二密钥变量为第二密钥时,从第二密钥的第一个四比特组开始,每隔四比特交替取补得到第五密钥;

当第二密钥变量为第四密钥时,从第二密钥的第一个四比特组开始,每隔四比特交替取补得到第六密钥。

步骤s204:判断第一变量是否满足第一预设条件,如果是,执行步骤s211;如果否,执行步骤s205;

具体地,判断第一变量是否满足第一预设条件为:判断第一变量是否等于1,如果是,执行步骤s211;如果否,执行步骤s205。

步骤s205:判断待验证的交易信息中的偏移是否小于待验证的交易信息的长度,如果是,执行步骤s206;如果否,执行步骤s212;

可选地,待验证的交易信息中交易信息块偏移指针开始指向起始位置。

步骤s206:设置密钥为第一密钥变量,长度为第一密钥变量的长度,对待验证交易信息中偏移指针指向的当前交易信息块执行分组加密运算得到加密后的第一密文数据;

例如,当第一密钥变量为第一密钥时,长度为第一密钥的长度,对待交易信息中偏移指针指向的当前交易信息块执行分组加密运算得到加密后的第一密文数据为h1;当第一密钥变量为第三密钥时,长度为第三密钥的长度,对待交易信息中偏移指针指向的当前交易信息块执行分组加密运算得到加密后的第一密文数据h1’。

步骤s207:判断偏移指针指向的当前交易信息块是否位于起始位置,如果是,执行步骤s208;如果否,执行s209。

步骤s208:设置密钥为第三密钥变量,长度为第三密钥变量的长度,对第一密文数据执行分组加密运算,用得到加密运算结果更新第一密文数据;

例如,当第三密钥变量为第五密钥时,对第一密文数据h1执行分组加密运算,用得到的加密运算结果更新第一密文数据h1;当第三密钥变量为第六密钥时,对第一密文数据h1执行分组加密运算,用得到的加密运算的结果更新第一密文数据h1’。

步骤s209:判断待验证交易信息是否满足第二预设条件,如果是,执行步骤s210;如果否,执行步骤s212;

具体地,判断待验证交易信息是否满足第二预设条件具体为:判断待验证交易信息中是否存在下一个交易信息块,如果是,执行步骤s210;如果否,执行步骤s212。

步骤s210:根据第一密文数据和待验证交易信息中偏移指针指向的当前交易信息块的下一个交易信息块生成第一结果,用第一结果更新偏移指针指向的当前交易信息块的下一个交易信息块,返回步骤s205;

具体地,对偏移指针指向的当前交易信息块的下一个交易信息块与第一密文数据执行异或操作得到第一结果h1,将第一结果h1更新偏移指针指向的当前交易信息块的下一个交易信息块,返回步骤s205。

步骤s211:设置密钥为第一密钥变量,长度为第一密钥变量的长度,对待验证的交易信息中偏移指针指向的当前交易信息块执行分组加密运算得到第二密文数据;设置密钥为第三密钥变量,长度为第三密钥变量的长度,对第二密文数据执行分组加密运算得到第一结果;

例如,当设置密钥为第一密钥,长度为第一密钥的长度时,对待验证交易信息中偏移指针指向的当前交易信息块执行分组加密运算得到的第二密文数据为h3;设置密钥为第五密钥,长度为第五密钥的长度,对第二密文数据h3执行分组加密运算得到第一结果h1;

当设置密钥为第三密钥,长度为第三密钥的长度时,对待验证交易信息中偏移指针指向的当前交易信息块执行分组加密运算得到的第二密文数据h3’;设置密钥为第六密钥,长度为第六密钥的长度,对第二密文数据h3’执行分组加密运算得到第一结果h1’;

步骤s212:设置密钥为第二密钥变量,长度为第二密钥变量的长度,对第一结果执行分组加密运算得到加密后的第三密文数据,根据需求,取第三密文数据最左边固定长度的数据作为消息验证码,结束。

例如,当设置密钥为第二密钥,长度为第二密钥的长度时,对第一结果h1执行分组加密运算得到的第三密文数据为h4,根据需求,取h4数据最左边m比特数据作为第二消息验证码;

当设置密钥为第四密钥,长度为第四密钥的长度时,对数据h1’执行分组加密运算得到的第三密文数据为h4’,根据需求,取h4’数据最左边m比特数据作为第三消息验证码。

通过本发明中的方法,可以对消息验证码进行验证,保证传输过程中不被篡改或者截获,使得用户使用起来更加安全。

实施例2

本发明实施例2提供了一种鉴别交易信息完整性的方法,如图3所示,包括:

步骤s301:终端设备接收上位机发送的交易指令,解析交易指令得到第一消息验证码及待验证的交易信息。

步骤s302:终端设备判断其储存空间的已知密钥是否符合第三预设条件,如果是,执行步骤s303;如果否,重复拼接已知密钥,取最左边16字节的数据给第一导出密钥赋值,执行步骤s304;

具体地,终端设备判断其储存空间的密钥是否符合第三预设条件为:判断已知密钥的长度是否为16字节,如果是,执行步骤s303;如果否,重复拼接已知密钥,取最左边16字节的数据给第一导出密钥赋值,执行步骤s304。

步骤s303:终端设备根据储存空间中的已知密钥给第一导出密钥赋值。

步骤s304:终端设备根据其储存空间中的已知常数以及第一导出密钥生成第一子密钥、第二子密钥以及第三子密钥;

步骤s304具体包括:

步骤s304-1:根据已知常数第一常数t0、第二常数t1、第三常数t2计算得到第四常数u0、第五常数u1和第六常数u2;

具体地,第一常数t0、第二常数t1和第三常数t2均为长度为128比特的比特串,为mac算法中的固定的元素,它们通过杂凑函数计算得到;第四常数u0、第五常数u1和第六常数u2均为768比特的比特串;

具体地,u0由t0、t1、t2、t0、t1、t2顺序拼接得到;u1由t1、t2、t0、t1、t2、t0顺序拼接得到;u2由t2、t0、t1、t2、t0、t1顺序拼接得到。

步骤s304-2:根据第一导出密钥和第四常数u0计算得到第一子密钥;根据第一导出密钥和第五常数u1计算得到第二子密钥;根据第一导出密钥和第六常数u2计算得到第三子密钥;

具体地,第一导出密钥拼接第四常数u0再拼接第一导出密钥,对拼接获得数据进行哈希运算,对得到的第一哈希值取最左边16字节记作第一子密钥;由第一导出密钥拼接第五常数u1再拼接第一导出密钥,对拼接获得数据进行哈希运算,对得到的第二哈希值取最左边16字节记作第二子密钥;由第一导出密钥拼接第六常数u2再拼接第一导出密钥;对拼接获得数据进行哈希运算,对得到的第三哈希值取最左边16字节记作第三子密钥。

步骤s305:终端设备将第二子密钥分割成四部分,分别记作第一子密钥块、第二子密钥块、第三子密钥块以及第四子密钥块。

可选地,每个子密钥块包括四个字节。

步骤s306:终端设备判断第二变量是否满足第四预设条件,如果是,执行步骤s307;如果否,执行步骤s309;

具体地,判断第二变量是否满足第四预设条件为:判断第三变量是否小于80,如果是,执行步骤s307;如果否,执行步骤s309。

步骤s307:终端设备根据第二变量的值,对子密钥块和已知常数进行计算得到附加常数;

步骤s307具体包括:判断第二变量的值,当第二变量的值大于等于0小于等于19时,第一子密钥块和第七常数5a827999相加,得到的结果对2的32次幂取模得到附加常数c;当第二变量的值大于等于20小于等于39时,第二子密钥块和第八常数6ed9eba1相加,得到的结果对2的32次幂取模得到附加常数c;当第二变量的值大于等于40小于等于59时,第三子密钥块和第九常数8fbbcdc相加,得到的结果对2的32次幂取模得到附加常数c;当第二变量的值大于等于60小于等于79时,第四子密钥块和第十常数ca62c1d6相加,得到的结果对2的32次幂取模得到附加常数c。

步骤s308:终端设备将附加常数设置到轮函数中,返回步骤s306。

步骤s309:终端设备根据第一子密钥和待验证的交易信息生成第一比特串;

具体地,将第一子密钥设置为杂凑函数的初始值,计算待验证的交易信息的杂凑值得到第一比特串。

步骤s310:终端设备根据第三子密钥、第一常数、第二常数、第三常数生成中间密钥;

具体地,将第三密钥与第一常数t0执行异或操作得到第二结果;将第三密钥与第二常数t1执行异或操作得到第三结果;将第三密钥与第三常数t2执行异或操作得到第四结果;将第三密钥、第二结果、第三结果和第四结果依次拼接起来得到中间密钥。

步骤s311:终端设备根据中间密钥和第一比特串生成第二比特串;

具体地,根据中间密钥和第一比特串执行轮函数计算,得到第二比特串。

步骤s312:终端设备根据第二比特串生成鉴别消息验证码。

具体地,截取第二比特串最左边m/8字节作为鉴别消息验证码。

步骤s313:判断第一消息验证码是否和鉴别消息验证码相匹配,如果是,则交易信息完整,执行所述指令,向上位机返回将执行结果;如果否,则交易信息不完整,拒绝执行所述指令,向上位机返回错误码,结束;

具体地,步骤s313为:判断第一消息验证码是否等于鉴别消息验证码,如果是,则交易信息完整,执行所述指令,向上位机返回执行结果;如果否,则交易信息不完整,拒绝执行所述指令,向上位机返回错误码,结束。

通过本发明中的方法,可以对消息验证码进行验证,保证传输过程中不被篡改或者截获,使得用户使用起来更加安全。

实施例3

本发明实施例3提供了一种鉴别交易信息完整性的装置,如图4所示,包括:

接收模块10,用于接收上位机发送的交易指令;

解析模块11,用于解析接收模块接收到的交易指令得到第一消息验证码和待验证的交易信息。

切分模块12,用于将解析模块得到的待验证的交易信息进行分块得到交易信息块;

切分模块还用于切分待验证交易信息时得到第一变量,第一变量用于记录交易信息块的个数。

储存模块13,用于储存第一密钥和第二密钥;

第一生成模块14,用于根据储存模块储存的第一密钥生成第三密钥,根据储存模块储存的第二密钥生成第四密钥;

计算模块15,用于根据切分模块得到的交易信息块、储存模块储存的第一密钥、第二密钥、生成模块生成的第三密钥、第四密钥进行计算生成鉴别消息验证码;

具体地,计算模块15用于根据切分模块得到的交易信息块,储存模块储存的第一密钥和第二密钥执行消息验证码计算流程生成第二消息验证码,根据切分模块得到的交易信息块、生成模块生成的第三密钥和第四密钥执行消息验证码计算流程生成第三消息验证码;还具体用于对第二消息验证码和第三消息验证码执行异或运算生成鉴别消息验证码。

具体地,计算模块15包括:

第一判断子模块,用于判断切分模块得到的第一变量是否满足第一预设条件;

第二判断子模块,用于当第一判断子模块判断出第一变量不满足第一预设条件时,判断待验证的交易信息中的交易信息块偏移是否小于待验证的交易信息的长度;

第一加密子模块,用于当第二判断子模块判断出待验证的交易信息中的交易信息块偏移小于待验证的交易信息的长度时,用第一密钥变量对待验证的交易信息中偏移指针指向的当前交易信息块执行分组加密运算得到第一密文数据;

第三判断子模块,用于判断偏移指针指向的当前交易信息块是否位于起始位置;

第二加密子模块,用于当第三判断子模块判断出偏移指针指向的当前交易信息块位于起始位置时,用第三密钥变量对第一密文数据执行分组加密运算,还用于使用得到的加密运算结果更新第一密文数据;

第四判断子模块,用于当第三判断子模块判断出偏移指针指向的当前交易信息块位于非起始位置时,判断待验证的交易信息是否满足第二预设条件;

第一生成子模块,用于当第四判断值模块判断出待验证的交易信息满足第二预设条件时,根据第一密文数据和偏移指针指向的当前交易信息块的下一个交易信息块生成第一结果,还用于用第一结果更新偏移指针指向的当前交易信息块的下一个交易信息块;

第三加密子模块,用于当第一判断子模块判断出第一变量满足第一预设条件时,使用第一密钥变量对待验证的交易信息中偏移指针指向的当前交易信息块执行加密运算得到第二密文数据,使用第三密钥变量对第二密文数据执行分组加密运算得到第一结果;

第二生成子模块,用于当第二判断子模块判断出待验证的交易信息中的交易信息块偏移不小于待验证的交易信息的长度或者当第四判断模块判断出待验证的交易信息不满足第二预设条件时,使用第二密钥变量对第一结果执行分组加密运算得到第三密文数据,根据需求,取第三密文数据最左边固定长度的数据作为消息验证码。

可选地,第一判断子模块还用于在判断第一变量是否满足第一预设条件之前,判断待验证的交易信息的长度是否为密钥长度的整数倍;

可选地,计算模块还包括填充子模块,用于当第一判断模块判断待验证的交易信息的长度不为密钥长度的整数倍时,对所述待验证的交易信息进行填充,直至待验证的交易信息的长度为密钥的整数倍;

可选地,所述计算模块还包括第三生成子模块,用于根据第二密钥变量生成第三密钥变量。

具体地,第一判断子模块判断第一变量是否满足第一预设条件为第一判断子模块判断第一变量是否等于1.

具体地,第四判断子模块具体用于当第三判断子模块判断出偏移指针指向的当前加以信息块位于非起始位置时,判断待验证的交易信息中是否还存在下一个交易信息块。

判断模块16,用于判断计算模块计算得到的鉴别消息验证码是否与解析模块得到的第一消息验证码相匹配;

执行返回模块17,用于当判断模块判断出计算模块计算得到的鉴别消息验证码与解析模块得到的第一消息验证码相匹配时,执行交易指令,并向上位机返回执行结果;当判断模块判断出计算模块计算得到的鉴别消息验证码与解析模块得到的第一消息验证码不匹配时,拒绝执行交易指令,并向上位机返回错误码。

实施例4

本发明实施例4提供了一种鉴别交易信息完整性的装置,如图5所示,包括:

接收模块20,用于接收上位机发送的交易指令。

解析模块21,用于解析接收模块接收到的交易指令得到第一消息验证码和待验证的交易信息。

赋值模块22,用于储存已知密钥,并根据储存空间中的已知密钥给第一导出密钥赋值。

第二生成模块23,用于根据第一导出密钥和已知常数生成第一子密钥、第二子密钥以及第三子密钥。

第三生成模块24,用于根据第二生成模块生成的第一子密钥、第二子密钥、第三子密钥,以及已知常数和解析模块得到的待验证的交易信息生成鉴别消息验证码。

判断模块25,用于判断解析模块得到的第一消息验证码是否与第三生成模块生成的鉴别消息验证码相匹配。

所述装置还包括:

第五判断子模块,用于判断已知密钥是否符合第三预设条件,如果符合,赋值模块根据已知密钥给第一导出密钥赋值;

第五判断子模块具体用于判断已知密钥的长度是否为16字节。

更新模块,用于当第五判断子模块判断出已知密钥不符合第三预设条件时,重复拼接已知密钥,取最左边16字节的数据更新已知密钥;

设置子模块,用于当赋值模块根据已知密钥给第一导出密钥赋值之后,第三生成模块根据第一子密钥、第三子密钥、已知常数以及待验证的交易信息生成鉴别消息验证码之前,设置第二变量用来记录常数字的总个数;还用于对子密钥块和已知常数进行计算得到附加常数,并将附加常数设置到轮函数中;

第六判断子模块,用于判断第二变量是否满足第四预设条件;

可选地,第六判断子模块具体用于判断第二变量是否小于80。

所述装置还包括:

拼接子模块,用于根据已知第一常数、已知第二常数和已知第三常数用拼接的方式得到第四常数、第五常数和第六常数;

计算子模块,用于根据第一导出密钥和第四常数计算得到第一之密钥;还用于根据第一导出密钥和第五常数计算得到第二子密钥,根据第一导出密钥和第六常数计算得到第三子密钥;

计算子模块还用于计算待验证的交易信息的杂凑值生成第一比特串;还用于根据中间密钥和第一比特串执行轮函数计算生成第二比特串;

设置子密钥,用于将第一子密钥设置为杂凑函数的初始值;

生成子密钥,用于根据第三子密钥、已知第一常数、已知第二常数和已知第三常数生成中间密钥;

截取子模块,用于截取第二比特串最左边长度与密钥长度相同的数据作为鉴别消息验证码。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1