CN104778147A - 一种基于协处理器的数据处理方法 - Google Patents
一种基于协处理器的数据处理方法 Download PDFInfo
- Publication number
- CN104778147A CN104778147A CN201510173947.7A CN201510173947A CN104778147A CN 104778147 A CN104778147 A CN 104778147A CN 201510173947 A CN201510173947 A CN 201510173947A CN 104778147 A CN104778147 A CN 104778147A
- Authority
- CN
- China
- Prior art keywords
- data
- segment data
- register
- coprocessor
- obtains
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
本发明公开一种基于协处理器的数据处理方法,包括:获取两个大数并对其进行分组得到第一高段数据、第一低段数据、第二高段数据和第二低段数据;使用协处理器对第一高段数据和第二高段数据进行计算并左移得到第一数值;使用协处理器对第一高段数据和第二低段数据进行计算并左移得到第二数值;使用协处理器对第一低段数据和第二高段数据进行计算并左移得到第三数值;使用协处理器对第一低段数据和第二低段数据进行计算得到第四数值;根据第一数值、第二数值、第三数值和第四数值得到结果数据。通过将两个大数分段后进行处理,来提高计算效率,进而高效率地实现生成密钥、加解密和签名的过程。
Description
技术领域
本发明涉及密码学领域,尤其涉及一种基于协处理器的数据处理方法。
背景技术
随着科学技术的发展,对于数据安全性的要求也越来越高,现有保护数据安全可以通过加解密和签名等方式实现。但是加密过程和签名过程都需要有密钥的参与,而生成密钥、加解密和签名的过程中都需要使用大数据,现有技术中通过硬件对大数据的处理结果的最大长度是有限的(即大数据的长度有限),如果想使处理结果的长度更大,虽然可以通过软件来实现,但是处理速度较慢,使得生成密钥、加解密和签名过程的实现效率都很低。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种基于协处理器的数据处理方法。
本发明提供了一种基于协处理器的数据处理方法,包括:
步骤S1:获取两个大数并将所述两个大数分别存储到第一寄存器和第二寄存器中;
步骤S2:对所述第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,对所述第二寄存器中的大数进行分组得到第二高段数据和第二低段数据;所述第一高段数据的长度、第一低段数据的长度、第二高段数据的长度和第二低段数据的长度均小于所述协处理器可以处理的数据的长度;
步骤S3:使用所述协处理器对所述第一高段数据和所述第二高段数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值;
步骤S4:使用所述协处理器对所述第一高段数据和所述第二低段数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值;
步骤S5:使用所述协处理器对所述第一低段数据和所述第二高段数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值;
步骤S6:使用所述协处理器对所述第一低段数据和所述第二低段数据进行计算,将计算结果作为第四数值;
步骤S7:根据所述第一数值、所述第二数值、所述第三数值和第四数值得到结果数据,所述结果数据的长度大于所述协处理器可以处理的数据的长度。
进一步地,所述对所述第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,包括:按照预先设置的拆分方法对所述第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据;
所述对所述第二寄存器中的大数进行分组得到第二高段数据和第二低段数据,包括:按照预先设置的拆分方法对所述第二寄存器中的大数进行拆分得到第二高段数据和第二低段数据。
进一步地,所述预先设置的拆分方法为对等拆分;
所述按照预先设置的拆分方法对第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据,具体为:
步骤a1:判断所述第一寄存器中的大数的长度是否为偶数,是则执行步骤a2,否则执行步骤a3;
步骤a2:对所述第一寄存器中的大数进行两等分得到所述第一高段数据和所述第一低段数据;
步骤a3:在所述第一寄存器中的大数前补0,对补位后的数据进行两等分得到所述第一高段数据和所述第一低段数据;
所述按照预先设置的拆分方法对所述第二寄存器中的大数进行拆分得到第二高段数据和第二低段数据,具体为:
步骤b1:判断所述第二寄存器中的大数的长度是否为偶数,是则执行步骤b2,否则执行步骤b3;
步骤b2:对所述第二寄存器中的大数进行两等分得到所述第二高段数据和所述第二低段数据;
步骤b3:在所述第二寄存器中的大数前补0,对补位后的数据进行两等分得到所述第二高段数据和所述第二低段数据。
进一步地,所述步骤S3包括:将所述第一高段数据和所述第二高段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值。
进一步地,所述步骤S4包括:将所述第一高段数据和所述第二低段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值。
进一步地,所述步骤S5包括:将所述第一低段数据和所述第二高段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值。
进一步地,所述步骤S6包括:将所述第一低段数据和所述第二低段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,将计算结果作为第四数值。
进一步地,所述使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,具体包括:
步骤c1:使用所述协处理器对所述第三寄存器中的数据和所述第四寄存器中的数据进行乘法运算得到第四中间数据;
步骤c2:使用所述协处理器对所述第三中间数据与所述第四中间数据进行乘法运算,用得到的乘积对所述第一中间数据取模得到第五中间数据;所述第一中间数据是2的1024次方的幂值;所述第三中间数据是对2的1024次方的幂值减1的差值模所述第一中间数据逆元得到的结果;
步骤c3:使用所述协处理器对所述第二中间数据与所述第五中间数据进行乘法运算,用得到的乘积与所述第四中间数据进行相加运算,用相加结果除以所述第一中间数据得到第六中间数据;所述第二中间数据是2的1024次方的幂值减1的差值;
步骤c4:使用所述协处理器判断所述第六中间数据是否小于所述第二中间数据,是则将所述第二中间数据作为计算结果,否则将所述第六中间数据与所述第二中间数据的差值作为计算结果。
进一步地,所述步骤S7包括:将所述第一数值、所述第二数值、所述第三数值和第四数值进行或运算得到结果数据。
进一步地,所述步骤S7包括:将所述第一数值与所述第四数值进行或运算得到第一运算结果,将所述第二数值与所述第三数值进行相加运算得到第二运算结果,将所述第一运算结果与所述第二运算结果进行或运算得到结果数据。
本发明与现有技术相比,具有以下优点:
本发明的方案是将两个大数分段后通过协处理器来对分段后的数据进行处理,不仅实现可以对任意大数进行处理(即大数的长度不受限制),而且还可以提高处理效率,进而高效率地实现生成密钥、加解密和签名的过程。
附图说明
图1为本发明实施例一提供的一种基于协处理器的数据处理方法流程图;
图2为本发明实施例二提供的一种基于协处理器的数据处理方法流程图;
图3为本发明实施例二中的步骤103中计算得到第一数值的具体实现流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种基于协处理器的数据处理方法,如图1所示,包括:
步骤S1:获取两个大数并将其分别存储到第一寄存器和第二寄存器中;
例如,在本实施例中,两个大数分别为第一大数P和第二大数Q,第一大数的长度为X,第二大数的长度为Y;具体的,P=0xD0F8EFBB18CD6A905676F6D228AF6AC8AF1BAE2A6FAA8689ACE9159CF4F6C8CAAF0A8BBA66C5F1F0312FFFC191BE232D9EDF6A9A15EF72FF5B96257E1FD02DA6C4A35C70B13E6DF99F7DC07A7E314A8FAFE45D3C1B8AB306AE7AA28E09C9E6CC70BF657F6D1B83C1E7F89A85EE0363170E633F1447F5D27590C15BA7DFC68BE883BE6C9A46346759F8BE033C57BC5F75ECB465FC9FB7628B08A2CF32E297E17C2166A696EB29BA7FE5A9B04D2CD392D2172AEBDFAF24E6C2EB9EF818B4A44B77AE3108CD1BB1E2981D3ABE3E9ABD52048C5143FE1FB0F870AAC1343152835A573257EF1D1D7BC89DF96A457F988889714C01F1AB0371556ED2210EBE4325F3;
Q=0x874FFBAB5CCB521A991BEA2606AF99DB98D44AC034250E8BE7912551C256D039A5B895382733B313F8C0E47B5CD6CDD4600A805EC7F717FC3450EDA0FB00597A71A3566AAFCB2E0414F510CFAD319CE20A010ADFD1580E97A8F5FDDD3754F23903E1BB717BDE5A1ADC0BADC47CF4E3F3281137336744A8E5F3621CA1D89A1B522F54C6C66E7136CA2083D5B2B96F9F997813699204AB81B560158FB2BA259173A3A624EB370B29F32CD4840CCEC7E3195FCEF10A2644DBEE3D9BD0CCC96F51B8CF31028052D6035F5C2C572504A94BE2AF4765607D752B6D259DB89FFD12C4121A6C039306DD0A0315033DA45B9739D28ECA5D016A5536B38AC029A531CC25733F;
步骤S2:对第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,对第二寄存器中的大数进行分组得到第二高段数据和第二低段数据;
例如,本实施例中的第一高段数据为P1、长度为XH,第一低段数据为P2、长度为XL,第二高段数据为Q1、长度为YH,第二低段数据为Q2、长度为YL;XH、XL、YH、YL均小于协处理器可以处理的数据的长度;
具体的,在本实施例中,如预先设置了拆分方法,则对第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,包括:按照预先设置的拆分方法对第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据;
优选的,设置的拆分方法为对等拆分,按照预先设置的拆分方法对第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据,具体包括:
步骤a1:判断第一寄存器中的大数的长度是否为偶数,是则执行步骤a2,否则执行步骤a3;
步骤a2:对第一寄存器中的大数进行两等分得到第一高段数据和第一低段数据;
步骤a3:在第一寄存器中的大数前补0,对补位后的数据进行两等分得到第一高段数据和第一低段数据;
在本实施例中,对第二寄存器中的大数进行分组得到第二高段数据和第二低段数据可参考上述方法来实现,具体为:
步骤b1:判断第二寄存器中的大数的长度是否为偶数,是则执行步骤b2,否则执行步骤b3;
步骤b2:对第二寄存器中的大数进行两等分得到第二高段数据和第二低段数据;
步骤b3:在第二寄存器中的大数前补0,对补位后的数据进行两等分得到第二高段数据和第二低段数据;
例如,PH=0xD0F8EFBB18CD6A905676F6D228AF6AC8AF1BAE2A6FAA8689ACE9159CF4F6C8CAAF0A8BBA66C5F1F0312FFFC191BE232D9EDF6A9A15EF72FF5B96257E1FD02DA6C4A35C70B13E6DF99F7DC07A7E314A8FAFE45D3C1B8AB306AE7AA28E09C9E6CC70BF657F6D1B83C1E7F89A85EE0363170E633F1447F5D27590C15BA7DFC68BE;
PL=0x883BE6C9A46346759F8BE033C57BC5F75ECB465FC9FB7628B08A2CF32E297E17C2166A696EB29BA7FE5A9B04D2CD392D2172AEBDFAF24E6C2EB9EF818B4A44B77AE3108CD1BB1E2981D3ABE3E9ABD52048C5143FE1FB0F870AAC1343152835A573257EF1D1D7BC89DF96A457F988889714C01F1AB0371556ED2210EBE4325F3;
QH=0x874FFBAB5CCB521A991BEA2606AF99DB98D44AC034250E8BE7912551C256D039A5B895382733B313F8C0E47B5CD6CDD4600A805EC7F717FC3450EDA0FB00597A71A3566AAFCB2E0414F510CFAD319CE20A010ADFD1580E97A8F5FDDD3754F23903E1BB717BDE5A1ADC0BADC47CF4E3F3281137336744A8E5F3621CA1D89A1B522;
QL=0xF54C6C66E7136CA2083D5B2B96F9F997813699204AB81B560158FB2BA259173A3A624EB370B29F32CD4840CCEC7E3195FCEF10A2644DBEE3D9BD0CCC96F51B8CF31028052D6035F5C2C572504A94BE2AF4765607D752B6D259DB89FFD12C4121A6C039306DD0A0315033DA45B9739D28ECA5D016A5536B38AC029A531CC25733F;
步骤S3:使用协处理器对第一高段数据和第二高段数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值;
在本实施例中,步骤S3包括:先将第一高段数据和第二高段数据分别存储到第三寄存器和第四寄存器中,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值;
使用协处理器对第三寄存器和第四寄存器中的数据进行计算具体包括:
步骤c3:使用协处理器对第三寄存器中的数据和第四寄存器中的数据进行乘法运算得到第四中间数据;
步骤c4:使用协处理器对第三中间数据与第四中间数据进行乘法运算,用得到的乘积对第一中间数据取模得到第五中间数据;第一中间数据是2的1024次方的幂值;第三中间数据是对2的1024次方的幂值减1的差值模第一中间数据逆元得到的结果;
如第一中间数据为r=21024,n=21024-1,则第三中间数据=n'=-n-1mod r;步骤c5:使用协处理器对第二中间数据与第五中间数据进行乘法运算,用得到的乘积与第四中间数据进行相加运算,用相加结果除以第一中间数据得到第六中间数据;第二中间数据是2的1024次方的幂值减1的差值;如第二中间数据为n=21024-1;
步骤c6:使用协处理器判断第六中间数据是否小于第二中间数据,是则将第二中间数据作为计算结果,否则将第六中间数据与第二中间数据的差值作为计算结果;
例如,将计算结果后将其左移XH+YH得到第一数值;第一数值=0x6E7490AD99E4FC73C22972DBC464854954D227CE3E69A5CD9D58EA3921E09E2AEAD5DAE1F79655F9A01F51C9514F9AE45740BA930BDB7F6A420989F0111B8DDA0639B31B7C510668A6F225326AD0F2CF6580201ADD62339D05A531D51071F87B0364E10393B5A4B685A7F539E366B1BC4BA61AEA35D9C38C753315EA75E2A4992E1AAD4F9559954E599586621D553CBD62B626AACBBDE5B40C6286BAAB54CAB2A8A3440DFD0B6DF0E274BCA91CD1966EB44BCB4CF80C65200C730C3C8C11AEA58A1BD638F8085F44CF33970A15B2510013DBCB3EB6B4919C995282A2581B19978DAE10FC4244A7FD8D43D631947B084D1D6817E0AEFF0516DB68D729BF123F3C;
步骤S4:使用协处理器对第一高段数据和第二低段数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值;
在本实施例中,步骤S4的实现与步骤S3相同,在此不再赘述;
例如,在本实施例中,将计算结果左移XH位得到第二数值;第二数值=0xC83C9FD23F3AE273380F9203972A1264874D40555B3705B899346F0ED7396258388D142574D36721F1E42FFD9AE563531B6C41C72F6FDBB64541959A15B4A97239012B43DD74D06E4CA7DFA4F7F5FB60FDE9B0E070698920C794029C2AF041BF832E61D05A6BF2EB5F4F46D6C85AEA68CE0363FBD9DD50DBD909D5BF270276BD70B5DBC88D006A97445F7F3482207C880CAA80B66AA09B4E65418639F0EE829212731ABF78DFB2B3427439526534E83F778005C86D5442934A7E61C28AFFBB1A6C855534F8B6E26DF13797CC46BC7B09EF80A33BEBFC28F1707617024FB4F037FCE14B6518585E3BBEC4D4F08A5463D2ACC4AE41A7E4420C2B55FACDEFA120C2;
步骤S5:使用协处理器对第一低段数据和第二高段数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值;
在本实施例中,步骤S5的实现与步骤S3相同,在此不再赘述;
例如,在本实施例中,将计算结果左移YH位得到第三数值;第三数值=0x4802271E7A96ABCABA4A1A6DAF8D71593C3F3D8BE46817644ED2BACD93FA60C2BAB9615DE1279CBD67997848ABFABC14B5681A5AEF830013FF837358CD36D1B1D0EFEF97B0FB37179E60959F796189FB854A75D7E4245EEF3BCCEECA25549CF1167BD4A45D9342A2949CFA3B376BBC594FDBC9F9E4B71D2199DE86D377921F80E0DFCB0812183C16AD03E1494459811A1A1128C35E5EF1C51A3C90AC8D70D91EC366D0BD24C7DAA76D2D9F9B5EC6897AD87B075B05B3F7559357B8BB1B13BF38F310EDFF7D44FAD65A63AF25ED798C23F6FFD3CED3D8B7EFB3028A4351C117CF603D92040E76D8B8C1A48BCE7BEC61E88A3769E0CDC18B2DA73F728BA792D946;
步骤S6:使用协处理器对第一低段数据和第二低段数据进行计算,将计算结果作为第四数值;
在本实施例中,步骤S6的实现与步骤S3相同,在此不再赘述;
例如,本实施例中的第四数值=0x8289FF578663391A71D8582BBE8E5D0D9FE3930BFF649CFFE2D58B38BDBE09B127F0BDE2178C012B0156A4B93B1B4C953EF6E7F940EEEC85E8EBFC28B33E3F617CE58493E961218F50677D94C24038D43539A0696916B854ADF003E1BE4BBF8D3A0782D34E7F135526E730CD94F38303A8BCC969780E14E6248F6C1AC49995979C490408B16AF665509CA5023AE51D078DEBA10C10FB24BB83681257AE5BE4FAA59E4DC3DE3A2E940C6BF13B5B60969A02ED574EFC30C2C39E8EB5E6BA4F4D00900E4A2CEBE1CC9E6980C4A94AA07BFDE550206E824A2A67B51F0D11878614C07112C9ABCDA669EE0FBA5DA208CE9A1A2B2FD2B24AFDC32E3789A68E1CB17FCD;
步骤S7:根据第一数值、第二数值、第三数值和第四数值得到结果数据;
如第一寄存器中的大数和第二寄存器中的大数是二等分,则步骤S7具体包括:将第一数值、第二数值、第三数值和第四数值进行或运算得到结果数据;
如第一寄存器中的大数和第二寄存器中的大数不是二等分,则步骤S7包括:将第一数值与第四数值进行或运算得到第一运算结果,将第二数值与第三数值进行相加运算得到第二运算结果,将第一运算结果与第二运算结果进行或运算得到结果数据;
在本实施例中,结果数据的长度大于协处理器可以处理的数据的长度,在本实施例的具体实例中得到的结果数据=Ox6E7490AD99E4FC73C22972DBC464854954D227CE3E69A5CD9D58EA3921E09E2AEAD5DAE1F79655F9A01F51C9514F9AE45740BA930BDB7F6A420989F0111B8DDA0639B31B7C510668A6F225326AD0F2CF6580201ADD62339D05A531D51071F87B0364E10393B5A4B685A7F539E366B1BC4BA61AEA35D9C38C753315EA75E2A49DBAC0E93462B8002131B8265D4F9EF3776F1ED36E67F2CC5483217A84D86E6D03D7C22B2E66D270397B2A8433B62BADEF3C8435186333641B68FE5B2300DA1459BCAAE26845931DC59A076EFBFB4A506E7861C3CB00011922629AAF6E7013ECC4ED9E415F211F91558D086E5277BC7C88A804EDBEB80EAC3E36E1E1BD2AA45EB667920D9530B7012EB65C64B34C487677C1C0C74D4BFDC3066CF2AE6533DA83C67F84FB605B97A6CD0857E2044DD732C6BE1F5E062303A608530F6DF68D2A2EA254BCB9DF0D3C3D1BD5B5E9705E44C2C4442EE78A6561F9DEF5200986FF588B86BDAEB7CA877224C4FD1C3B045C5EE7C976FFB25A6EA50BE15B3BF4821CC13C03BC490408B16AF665509CA5023AE51D078DEBA10C10FB24BB83681257AE5BE4FAA59E4DC3DE3A2E940C6BF13B5B60969A02ED574EFC30C2C39E8EB5E6BA4F4D00900E4A2CEBE1CC9E6980C4A94AA07BFDE550206E824A2A67B51F0D11878614C07112C9ABCDA669EE0FBA5DA208CE9A1A2B2FD2B24AFDC32E3789A68E1CB17FCD。
实施例二
本发明实施例二提供一种基于协处理器的数据处理方法,具体是将两个2048比特的大数进行二等分,然后使用协处理器根据Montgomery算法来实现两个大数进行处理的实现过程,如图2所示,本实施例的方法包括:
步骤101:获取两个大数p、q并将其分别存储到第一寄存器和第二寄存器中;
具体的,本实施例中的p、q的长度均为2048bit;协处理器可以处理的数据长度为2304bit;
例如,在本实施例中,第一寄存器为(ADDR_CRYP_CR3),存储的大数p为:0xD0F8EFBB18CD6A905676F6D228AF6AC8AF1BAE2A6FAA8689ACE9159CF4F6C8CAAF0A8BBA66C5F1F0312FFFC191BE232D9EDF6A9A15EF72FF5B96257E1FD02DA6C4A35C70B13E6DF99F7DC07A7E314A8FAFE45D3C1B8AB306AE7AA28E09C9E6CC70BF657F6D1B83C1E7F89A85EE0363170E633F1447F5D27590C15BA7DFC68BE883BE6C9A46346759F8BE033C57BC5F75ECB465FC9FB7628B08A2CF32E297E17C2166A696EB29BA7FE5A9B04D2CD392D2172AEBDFAF24E6C2EB9EF818B4A44B77AE3108CD1BB1E2981D3ABE3E9ABD52048C5143FE1FB0F870AAC1343152835A573257EF1D1D7BC89DF96A457F988889714C01F1AB0371556ED2210EBE4325F3F3;
第二寄存器为(ADDR_CRYP_CR7),存储的大数q为0x874FFBAB5CCB521A991BEA2606AF99DB98D44AC034250E8BE7912551C256D039A5B895382733B313F8C0E47B5CD6CDD4600A805EC7F717FC3450EDA0FB00597A71A3566AAFCB2E0414F510CFAD319CE20A010ADFD1580E97A8F5FDDD3754F23903E1BB717BDE5A1ADC0BADC47CF4E3F3281137336744A8E5F3621CA1D89A1B522F54C6C66E7136CA2083D5B2B96F9F997813699204AB81B560158FB2BA259173A3A624EB370B29F32CD4840CCEC7E3195FCEF10A2644DBEE3D9BD0CCC96F51B8CF31028052D6035F5C2C572504A94BE2AF4765607D752B6D259DB89FFD12C4121A6C039306DD0A0315033DA45B9739D28ECA5D016A5536B38AC029A531CC2573;
步骤102:分别对第一寄存器和第二寄存器的两个大数p、q进行分组得到pH、pL和qH、qL;
优选的,在本实施例中,pH、pL和qH、qL的长度均为1024bit,其中p=pH*2^1024+pL,q=qH*2^1024+qL;
例如,在本实施例中,pH=0xD0F8EFBB18CD6A905676F6D228AF6AC8AF1BAE2A6FAA8689ACE9159CF4F6C8CAAF0A8BBA66C5F1F0312FFFC191BE232D9EDF6A9A15EF72FF5B96257E1FD02DA6C4A35C70B13E6DF99F7DC07A7E314A8FAFE45D3C1B8AB306AE7AA28E09C9E6CC70BF657F6D1B83C1E7F89A85EE0363170E633F1447F5D27590C15BA7DFC68BE8;
pL=0x83BE6C9A46346759F8BE033C57BC5F75ECB465FC9FB7628B08A2CF32E297E17C2166A696EB29BA7FE5A9B04D2CD392D2172AEBDFAF24E6C2EB9EF818B4A44B77AE3108CD1BB1E2981D3ABE3E9ABD52048C5143FE1FB0F870AAC1343152835A573257EF1D1D7BC89DF96A457F988889714C01F1AB0371556ED2210EBE4325F3F3;
qH=0x874FFBAB5CCB521A991BEA2606AF99DB98D44AC034250E8BE7912551C256D039A5B895382733B313F8C0E47B5CD6CDD4600A805EC7F717FC3450EDA0FB00597A71A3566AAFCB2E0414F510CFAD319CE20A010ADFD1580E97A8F5FDDD3754F23903E1BB717BDE5A1ADC0BADC47CF4E3F3281137336744A8E5F3621CA1D89A1B52;
qL=0x2F54C6C66E7136CA2083D5B2B96F9F997813699204AB81B560158FB2BA259173A3A624EB370B29F32CD4840CCEC7E3195FCEF10A2644DBEE3D9BD0CCC96F51B8CF31028052D6035F5C2C572504A94BE2AF4765607D752B6D259DB89FFD12C4121A6C039306DD0A0315033DA45B9739D28ECA5D016A5536B38AC029A531CC2573;
步骤103:将pH和qH分别存储到第三寄存器和第四寄存器中,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第一中间计算结果;
具体的,在本实施例中,调用指令SetCryptoInst(CLR_Z)、SetCryptoInst(STORE_C_Z)、SetCryptoInst(STORE_N_Z),将pH,qH分别放到第三寄存器MoveData((ADDR_CRYP_C)+32,pH,32)和第四寄存器MoveData(ADDR_CRYP_N),qH,32)中;
在本实施例中,使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第一中间计算结果的具体实现过程如图3所示,包括:
步骤103-1:使用协处理器对第三寄存器中的数据和第四寄存器中的数据进行乘法运算得到第四中间数据;
步骤103-2:使用协处理器对第三中间数据与第四中间数据进行乘法运算,然后用乘积对第一中间数据取模得到第五中间数据;
其中,第一中间数据是2的1024次方的幂值;第三中间数据是对2的1024次方的幂值减1的差值模第一中间数据逆元得到的结果;
步骤103-3:使用协处理器对第二中间数据与第五中间数据进行乘法运算,用乘积与第四中间数据相加运算,用相加结果除以第一中间数据得到第六中间数据;
其中,第二中间数据是2的1024次方的幂值减1的差值;
步骤103-4:使用协处理器判断第六中间数据是否小于第二中间数据,是则将第二中间数据作为第一中间计算结果,否则将第六中间数据与第二中间数据的差值作为第一中间计算结果;
例如,本实施例中得到的第一中间计算结果为:0x6E7490AD99E4FC73C22972DBC464854954D227CE3E69A5CD9D58EA3921E09E2AEAD5DAE1F79655F9A01F51C9514F9AE45740BA930BDB7F6A420989F0111B8DDA0639B31B7C510668A6F225326AD0F2CF6580201ADD62339D05A531D51071F87B0364E10393B5A4B685A7F539E366B1BC4BA61AEA35D9C38C753315EA75E2A49D4E7B6CB3189A78D117A5F8B80DBC1E41137506E71EF10942134E8E951F6C736680869C57E9D04852A255E08BD15040AC00C3E0EFF50736A1C387B494A01A74C43EA21E00603A01A642EC65782F790EBE6DE79695BE03AFF90B331D3A51896E861EA3FFD83394085C30A23104BE61BB837C256999602591F7C46190C387EA4850;
步骤104:将pH和qL存储到第三寄存器和第四寄存器,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第二中间计算结果;
在本实施例中,步骤104的具体实现过程与步骤103相同,在此不再赘述;
例如,本实施例中得到的第二中间计算结果为:0x26A2E7F4870D5B793E4FD7FA7E888E7F5E5849CAA3A8C12CBF3069A48C126F3ED96A22B9A425F4B0254442F80BE61A9AE592B16FB5B4EC1B4FC6DE096555504BFC247E4253FF1AC618BA36099F45890805DB26B58A77EEF2E248947B83E840F5864AD2CCF34A2FA6F2F407BE2A461B096EAC9E22469C8F5C6FA8C8D0EE68F8E91E4450F0F13F2FC0F31D5ECB5B9BD94CDE4E24BF1A8B2044057339A7CFF2B85C5D44C0A2D09C943A7EB0940AF9B49CA6BBD68D71CD96364E49FC79486A564E3C15EC35962A9D2C1152364046C4A8056CBCEA0245DFA1FBE99F04F86F1928BFC8036F17542C94108FABF00C6AEFCC3F6EF494C6696F727AF22A1717481D496138;
步骤105:将pL和qH存储到第三寄存器和第四寄存器,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第三中间计算结果;
在本实施例中,步骤105的具体实现过程与步骤103相同,在此不再赘述;
例如,本实施例中得到的第三中间计算结果为:0x45A2948CC3102BD6DBC255AAC35A46B6FD5182BCA55901E5B0A2824B2CEF8A5E7DD16C1CD8DC3336B39060AFD8F552A8562DA2B8B877415E55AFC884FB6A4F4981E44625915A01593E60D37A2C8BB8A8049F067FB7857A36751EFDB89AA23D4948AF6EB9FA4159526972358F8F14A5FBBD32E603114C8AEA02D78828B4511DFD6E70C696EDBC23BEE6A59645134F9124F4FEF3E7D124FECD117B1D7DF3223C750075DB4CA52B6F1BF53DA4C566B385EA6EC2F22C34E69CE680D93C7CDBFC595A1953C6230EB61EF287328FB86A59028E5D7066E1302B39E27C5076AA7762FDC9CCD30F15D7CD99F73A3165BA68296D29824DC5A281D6DA729FD434834B10C4D6;
步骤106:将pL和qL存储到第三寄存器和第四寄存器,然后使用协处理器对第三寄存器和第四寄存器中的数据进行计算得到第四中间计算结果;
在本实施例中,步骤106的具体实现过程与步骤103相同,在此不再赘述;
例如,本实施例中得到的第四中间计算结果为:0x185B96B75BA00FB4ACD16AFD7E08EC309CDED33B6DFF7BA6433D678948E47A438EEC6B5B3C97E8E19767BA5C6A76A6248364BD2404ACA9EC598154C57E583B09F92391AAF62742E772AC1C34704D83FF4C889DE541637BF9965A656800060A474CF2641EBB463C503DFA8C5AAB4AC59D5BEA1F9385D289F7A8D240C8FE9D288A7155D5A98F9B12D30989BADC664240368318718D547922A580BF6800DA419541701B1609F9F3BB8220A08700A515168E40A893E54373711E2179C93BDA8570DAC7B598D11336395F786607FB4F3EECFB278D5B4A0EB5D5DEAFCFC1169D07DEB410368A632735747C216CB98A92D0E324D391A0912407CB94A63B0BBB8EF2B529;
步骤107:将第二中间计算结果与第三中间计算结果相加得到第五中间计算结果,并将第五中间计算结果左移1024位;
步骤108:将第一中间计算结果左移2048位;
步骤109:将移位后的第一中间计算结果、移位后的第五中间计算结果和第四中间计算结果进行或运算得到结果数据;
例如,本实施例中得到的结果数据为:0x6E7490AD99E4FC73C22972DBC464854954D227CE3E69A5CD9D58EA3921E09E2AEAD5DAE1F79655F9A01F51C9514F9AE45740BA930BDB7F6A420989F0111B8DDA0639B31B7C510668A6F225326AD0F2CF6580201ADD62339D05A531D51071F87B0364E10393B5A4B685A7F539E366B1BC4BA61AEA35D9C38C753315EA75E2A49DBAC0E93462B8002131B8265D4F9EF3776F1ED36E67F2CC5483217A84D86E6D03D7C22B2E66D270397B2A8433B62BADEF3C8435186333641B68FE5B2300DA1459BCAAE26845931DC59A076EFBFB4A506E7861C3CB00011922629AAF6E7013ECC4ED9E415F211F91558D086E5277BC7C88A804EDBEB80EAC3E36E1E1BD2AA45F36A510AE3F3A9B63348694600DECF456A2702BEBE259AF9AB75A2BBEAF0BF96F14ECA7074AB25FEC380B55F32CCADEC8B5ADFE3CC207297D2124570A8AC4AAE2A028638D642F7A8DEB4C14EC339F4E8BFA66E3070C5130B1C5B1AFD4819091C7D91D348A88BFA7E6D7241BFE8003407235D2CCAB9F771BDF5C72BD8C9466F74E987155D5A98F9B12D30989BADC664240368318718D547922A580BF6800DA419541701B1609F9F3BB8220A08700A515168E40A893E54373711E2179C93BDA8570DAC7B598D11336395F786607FB4F3EECFB278D5B4A0EB5D5DEAFCFC1169D07DEB410368A632735747C216CB98A92D0E324D391A0912407CB94A63B0BBB8EF2B529。
在本实施例中,最后得到的结果数据可以输出,或者在生成密钥过程、加解密过程、签名过程中来进行使用。
本发明的方案是通过将两个大数分段后进行处理,来提高计算效率,进而高效率地实现生成密钥、加解密和签名的过程。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种基于协处理器的数据处理方法,其特征在于,包括:
步骤S1:获取两个大数并将所述两个大数分别存储到第一寄存器和第二寄存器中;
步骤S2:对所述第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,对所述第二寄存器中的大数进行分组得到第二高段数据和第二低段数据;所述第一高段数据的长度、第一低段数据的长度、第二高段数据的长度和第二低段数据的长度均小于所述协处理器可以处理的数据的长度;
步骤S3:使用所述协处理器对所述第一高段数据和所述第二高段数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值;
步骤S4:使用所述协处理器对所述第一高段数据和所述第二低段数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值;
步骤S5:使用所述协处理器对所述第一低段数据和所述第二高段数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值;
步骤S6:使用所述协处理器对所述第一低段数据和所述第二低段数据进行计算,将计算结果作为第四数值;
步骤S7:根据所述第一数值、所述第二数值、所述第三数值和第四数值得到结果数据,所述结果数据的长度大于所述协处理器可以处理的数据的长度。
2.如权利要求1所述的方法,其特征在于,
所述对所述第一寄存器中的大数进行分组得到第一高段数据和第一低段数据,包括:按照预先设置的拆分方法对所述第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据;
所述对所述第二寄存器中的大数进行分组得到第二高段数据和第二低段数据,包括:按照预先设置的拆分方法对所述第二寄存器中的大数进行拆分得到第二高段数据和第二低段数据。
3.如权利要求2所述的方法,其特征在于,所述预先设置的拆分方法为对等拆分;
所述按照预先设置的拆分方法对第一寄存器中的大数进行拆分得到第一高段数据和第一低段数据,具体为:
步骤a1:判断所述第一寄存器中的大数的长度是否为偶数,是则执行步骤a2,否则执行步骤a3;
步骤a2:对所述第一寄存器中的大数进行两等分得到所述第一高段数据和所述第一低段数据;
步骤a3:在所述第一寄存器中的大数前补0,对补位后的数据进行两等分得到所述第一高段数据和所述第一低段数据;
所述按照预先设置的拆分方法对所述第二寄存器中的大数进行拆分得到第二高段数据和第二低段数据,具体为:
步骤b1:判断所述第二寄存器中的大数的长度是否为偶数,是则执行步骤b2,否则执行步骤b3;
步骤b2:对所述第二寄存器中的大数进行两等分得到所述第二高段数据和所述第二低段数据;
步骤b3:在所述第二寄存器中的大数前补0,对补位后的数据进行两等分得到所述第二高段数据和所述第二低段数据。
4.如权利要求1所述的方法,其特征在于,所述步骤S3包括:
将所述第一高段数据和所述第二高段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第一高段数据和第二高段数据的总长度对计算结果进行左移得到第一数值。
5.如权利要求1所述的方法,其特征在于,所述步骤S4包括:
将所述第一高段数据和所述第二低段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第一高段数据的长度对计算结果进行左移得到第二数值。
6.如权利要求1所述的方法,其特征在于,所述步骤S5包括:
将所述第一低段数据和所述第二高段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,根据第二高段数据的长度对计算结果进行左移得到第三数值。
7.如权利要求1所述的方法,其特征在于,所述步骤S6包括:
将所述第一低段数据和所述第二低段数据分别存储到第三寄存器和第四寄存器中,使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,将计算结果作为第四数值。
8.如权利要求4-7任一项所述的方法,其特征在于,所述使用所述协处理器对所述第三寄存器和所述第四寄存器中的数据进行计算,具体包括:
步骤c1:使用所述协处理器对所述第三寄存器中的数据和所述第四寄存器中的数据进行乘法运算得到第四中间数据;
步骤c2:使用所述协处理器对所述第三中间数据与所述第四中间数据进行乘法运算,用得到的乘积对所述第一中间数据取模得到第五中间数据;所述第一中间数据是2的1024次方的幂值;所述第三中间数据是对2的1024次方的幂值减1的差值模所述第一中间数据逆元得到的结果;
步骤c3:使用所述协处理器对所述第二中间数据与所述第五中间数据进行乘法运算,用得到的乘积与所述第四中间数据进行相加运算,用相加结果除以所述第一中间数据得到第六中间数据;所述第二中间数据是2的1024次方的幂值减1的差值;
步骤c4:使用所述协处理器判断所述第六中间数据是否小于所述第二中间数据,是则将所述第二中间数据作为计算结果,否则将所述第六中间数据与所述第二中间数据的差值作为计算结果。
9.如权利要求3所述的方法,其特征在于,所述步骤S7包括:将所述第一数值、所述第二数值、所述第三数值和第四数值进行或运算得到结果数据。
10.如权利要求1所述的方法,其特征在于,所述步骤S7包括:将所述第一数值与所述第四数值进行或运算得到第一运算结果,将所述第二数值与所述第三数值进行相加运算得到第二运算结果,将所述第一运算结果与所述第二运算结果进行或运算得到结果数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510173947.7A CN104778147B (zh) | 2015-04-14 | 2015-04-14 | 一种基于协处理器的数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510173947.7A CN104778147B (zh) | 2015-04-14 | 2015-04-14 | 一种基于协处理器的数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104778147A true CN104778147A (zh) | 2015-07-15 |
CN104778147B CN104778147B (zh) | 2017-06-06 |
Family
ID=53619621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510173947.7A Active CN104778147B (zh) | 2015-04-14 | 2015-04-14 | 一种基于协处理器的数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778147B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997008608A1 (en) * | 1995-08-31 | 1997-03-06 | Intel Corporation | A set of instructions for operating on packed data |
US20080133627A1 (en) * | 2006-12-05 | 2008-06-05 | Altera Corporation | Large multiplier for programmable logic device |
CN101227286A (zh) * | 2008-01-31 | 2008-07-23 | 北京飞天诚信科技有限公司 | 一种生成消息认证码的方法 |
CN102231102A (zh) * | 2011-06-16 | 2011-11-02 | 天津大学 | 基于余数系统的rsa密码处理方法及协处理器 |
-
2015
- 2015-04-14 CN CN201510173947.7A patent/CN104778147B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997008608A1 (en) * | 1995-08-31 | 1997-03-06 | Intel Corporation | A set of instructions for operating on packed data |
US20080133627A1 (en) * | 2006-12-05 | 2008-06-05 | Altera Corporation | Large multiplier for programmable logic device |
CN101227286A (zh) * | 2008-01-31 | 2008-07-23 | 北京飞天诚信科技有限公司 | 一种生成消息认证码的方法 |
CN102231102A (zh) * | 2011-06-16 | 2011-11-02 | 天津大学 | 基于余数系统的rsa密码处理方法及协处理器 |
Non-Patent Citations (2)
Title |
---|
MING-HAU LEE 等: "Design and Implementation of the MorphoSys Reconfigurable Computing Processor", 《JOURNAL OF VLSI SIGNAL PROCESSING SYSTEMS - SPECIAL ISSUE ON VLSI ON CUSTOM COMPUTING TECHNOLOGY》 * |
赵学秘 等: "一种高性能大数模幂协处理器SEA", 《计算机研究与发展》 * |
Also Published As
Publication number | Publication date |
---|---|
CN104778147B (zh) | 2017-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sasdrich et al. | Efficient elliptic-curve cryptography using Curve25519 on reconfigurable devices | |
KR20150107784A (ko) | 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법 | |
Malik | Efficient implementation of elliptic curve cryptography using low-power digital signal processor | |
WO2014016795A3 (en) | Method and system for homomorphicly randomizing an input | |
US11003769B2 (en) | Elliptic curve point multiplication operation method and apparatus | |
JP5553773B2 (ja) | 楕円曲線上の点のスカラー倍を計算する装置及び方法 | |
CN101470598A (zh) | 提高大整数Montgomery模乘运算速度的方法 | |
CN104660400A (zh) | 一种rsa模幂运算方法和装置 | |
CN104778147A (zh) | 一种基于协处理器的数据处理方法 | |
JP2011512556A5 (ja) | 楕円曲線上の点のスカラー倍を計算する装置及び方法 | |
CN103580869B (zh) | 一种crt-rsa签名方法及装置 | |
CN104506316A (zh) | 一种基于sm2基点的点乘运算方法 | |
CN106936822A (zh) | 针对sms4抗高阶旁路分析的掩码实现方法及系统 | |
CN104468100A (zh) | 改进的滑动窗口模幂计算方法 | |
CN103684748A (zh) | 对称式加解密方法、对称式加解密系统 | |
CN109495430A (zh) | 一种基于泄序加密的解密算法 | |
CN105025037B (zh) | 抗cpa攻击的密文分组链接模式mac算法的实现方法 | |
CN109710212B (zh) | 一种基于心动模型的复合有限域求逆装置 | |
Ravikumar et al. | Secure multiparty electronic payments using ECC algorithm: A comparative study | |
Gordji et al. | Nearly derivations on Banach algebras | |
EP3252988B1 (en) | Partial unrolling for software security | |
Long et al. | A Bergman ring based cryptosystem analogue of RSA | |
Park et al. | Approximately linear mappings in Banach modules over a C*-algebra | |
Avanzi | Hyperelliptic Curves Performance | |
Ganesan et al. | Elliptic and hyper elliptic curve cryptography over finite field Fp |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |