專利名稱:一種簽名方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種簽名方法及裝置。
背景技術(shù):
隨著計算機網(wǎng)絡(luò)以及通信技術(shù)的飛速發(fā)展,人類已逐步邁入信息化社會。在社會信息化進程中,互聯(lián)網(wǎng)的發(fā)展極大地方便了人們的學習、工作和生活,計算機應(yīng)用已經(jīng)滲透到政治、經(jīng)濟、軍師、科學文化和家庭生活等社會的各個領(lǐng)域。在不知不覺中,信息成為了最重要的一種資源和財富,但是由于信息的傳遞、存儲、處理等過程往往是在開放的通信網(wǎng)絡(luò)上進行的,所以信息容易受到竊聽、截取、修改、偽造、重放等各種攻擊手段的威脅。數(shù)字簽名作為保障網(wǎng)絡(luò)信息安全的手段之一,可以有效解決網(wǎng)絡(luò)信息傳輸過程中偽造、抵賴、冒充和篡改的問題,在密鑰分配、電子銀行、電子證券、電子商務(wù)和電子政務(wù)等領(lǐng)域都有廣泛的應(yīng)用。但是,現(xiàn)有技術(shù)的簽名過程只對待簽名數(shù)據(jù)進行一次簽名,安全性較低。
發(fā)明內(nèi)容
本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種簽名方法及裝置。本發(fā)明提供了一種簽名方法,包括步驟SI :等待并接收主機發(fā)送的數(shù)據(jù)包;步驟S2 :對所述接收到的數(shù)據(jù)包進行解析,并判斷解析結(jié)果是否為交易報文,是則執(zhí)行步驟S4,否則執(zhí)行步驟S3 ;步驟S3 :按照第一摘要算法對所述解析結(jié)果進行計算得到第一摘要值,使用當前用戶私鑰對所述第一摘要值進行簽名得到簽名結(jié)果,并將所述簽名結(jié)果返回給所述主機,返回步驟SI ;步驟S4 :從所述解析結(jié)果中提取關(guān)鍵信息,將所述關(guān)鍵信息通過液晶顯示屏輸出;步驟S5 :判斷是否接收到按鍵信息,是則執(zhí)行步驟S6,否則結(jié)束本次操作,返回步驟SI ;步驟S6 :檢測所述按鍵信息的類型,如是確認鍵則執(zhí)行步驟S7,如是取消鍵則結(jié)束本次操作,返回步驟SI,如是其他鍵則返回步驟S5 ;步驟S7 :使用所述第一摘要算法對所述交易報文進行計算得到第一摘要值,并按照預(yù)設(shè)規(guī)定將所述第一摘要值拆分成第一組數(shù)據(jù)和第二組數(shù)據(jù);步驟S8 :按照第一預(yù)設(shè)規(guī)則對所述第二組數(shù)據(jù)的高位進行補位得到補位后的第二組數(shù)據(jù),并將所述第一組數(shù)據(jù)和所述補位后的第二組數(shù)據(jù)順序組合為第一數(shù)據(jù);步驟S9 :根據(jù)所述第一摘要算法獲取對應(yīng)的算法標識,根據(jù)預(yù)設(shè)編碼方式對所述算法標識和所述第一數(shù)據(jù)進行編碼得到第一編碼數(shù)據(jù);步驟SlO :按照第二預(yù)設(shè)規(guī)則對所述第一編碼數(shù)據(jù)進行補位得到第二編碼數(shù)據(jù),將補位后的第二編碼數(shù)據(jù)拆分成等長的第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù),使用所述當前用戶私鑰分別對所述第一組編碼數(shù)據(jù)和所述第二組編碼數(shù)據(jù)進行簽名,得到第一簽名值和第二簽名值;步驟Sll :將所述第一簽名值和所述第二簽名值順序組合為簽名結(jié)果并將其返回給所述主機,返回步驟SI。其中,在所述步驟SI和步驟S2之間包括判斷是否接收完全部的數(shù)據(jù)包,是則執(zhí)行步驟S2,否則返回步驟SI。其中,所述步驟SI和步驟S2分別替換為步驟SI’ ’和步驟S2’ ’ ;步驟SI’ ’ 等待并接收主機發(fā)送的數(shù)據(jù)包,對接收到的數(shù)據(jù)包進行解析;
步驟S2’ ’ 判斷解析結(jié)果是否為交易報文,是則執(zhí)行步驟S4,否則執(zhí)行步驟S3。其中,所述數(shù)據(jù)包中包含報文長度,所述數(shù)據(jù)包分包進行接收;所述判斷是否接收完全部的數(shù)據(jù)包具體為判斷所有數(shù)據(jù)包的總長度是否等于所述報文長度,是則接收完全部的數(shù)據(jù)包,否則未接收完全部的數(shù)據(jù)包。其中,所述步驟SI和步驟S2分別替換為步驟SI’和步驟S2’ ;步驟SI,:等待并接收主機發(fā)送的數(shù)據(jù)包,當接收到一個數(shù)據(jù)包后逐個字符進行解析;步驟S2’ 判斷所述解析結(jié)果是否為交易報文,是則執(zhí)行步驟S4,否則執(zhí)行步驟S3。其中,在所述步驟SI’和步驟S2’之間包括判斷是否接收完全部的數(shù)據(jù)包,是則執(zhí)行步驟S2’,否則返回步驟SI,。其中,所述判斷是否接收完全部的數(shù)據(jù)包具體為判斷接收到的指令中Pl的值是否為OxFF,是則執(zhí)行步驟S2’,否則返回步驟SI,。其中,在所述步驟S4中提取所述關(guān)鍵信息與輸出所述關(guān)鍵信息之間包括判斷所述關(guān)鍵信息是否大于輸出空間,是則,結(jié)束本次操作,返回步驟Si,否則將所述關(guān)鍵信息通過所述液晶顯示屏輸出。其中,在所述步驟S2與步驟S3之間、所述步驟S4中提取所述關(guān)鍵信息與輸出所述關(guān)鍵信息之間包括判斷是否已經(jīng)通過認證,是則繼續(xù),否則結(jié)束本次操作,返回步驟SI。其中,在所述步驟S2和所述步驟S3之間、在所述步驟S6和所述步驟S7之前包括步驟al :判斷是否存在指定摘要標識,是則根據(jù)所述摘要標識獲取對應(yīng)的所述第一摘要算法,繼續(xù),否則,結(jié)束本次操作,返回步驟Si ;步驟a2 :判斷是否存在有效的所述當前用戶私鑰,是則繼續(xù),否則,結(jié)束本次操作,返回步驟SI。本發(fā)明又提供了一種簽名裝置,包括接收模塊,用于接收主機發(fā)送的數(shù)據(jù)包;解析模塊,用于對接收到的數(shù)據(jù)包進行解析;第一判斷模塊,用于判斷解析結(jié)果是否為交易報文,是則提取模塊工作,否則第一計算模塊工作;
所述第一計算模塊,用于按照第一摘要算法對所述解析結(jié)果進行計算得到第一摘要值,使用當前用戶私鑰對所述第一摘要值進行簽名得到簽名結(jié)果;所述提取模塊,用于從所述交易報文中提取關(guān)鍵信息;輸出模塊,用于將所述關(guān)鍵信息通過液晶顯示屏輸出;第二判斷模塊,用于判斷是否接收到按鍵信息,是則檢測模塊工作,否則結(jié)束本次操作;所述檢測模塊,用于檢測所述按鍵信息的類型,如是確認鍵則第二計算模塊工作,如是取消鍵則結(jié)束,如是其他鍵則所述第二判斷模塊工作; 所述第二計算模塊,用于使用所述第一摘要算法對所述交易報文進行計算得到第一摘要值,并按照預(yù)設(shè)規(guī)定將所述第一摘要值拆分成第一組數(shù)據(jù)和第二組數(shù)據(jù);補位組合模塊,用于按照第一預(yù)設(shè)規(guī)則對所述第二組數(shù)據(jù)的高位進行補位得到補位后的第二組數(shù)據(jù),并將所述第一組數(shù)據(jù)和所述補位后的第二組數(shù)據(jù)順序組合為第一數(shù)據(jù);編碼模塊,用于根據(jù)所述第一摘要算法獲取對應(yīng)的算法標識,根據(jù)預(yù)設(shè)編碼方式對所述算法標識和所述第一數(shù)據(jù)進行編碼得到第一編碼數(shù)據(jù);拆分簽名模塊,用于按照第二預(yù)設(shè)規(guī)則對所述第一編碼數(shù)據(jù)進行補位得到第二編碼數(shù)據(jù),將補位后的第二編碼數(shù)據(jù)拆分成等長的第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù),使用所述當前用戶私鑰分別對所述第一組編碼數(shù)據(jù)和所述第二組編碼數(shù)據(jù)進行簽名,得到第一簽名值和第二簽名值;組合模塊,用于將所述第一簽名值和所述第二簽名值順序組合為簽名結(jié)果;返回模塊,用于將所述第一計算模塊或所述組合模塊的簽名結(jié)果返回給所述主機。其中,所述裝置還包括第三判斷模塊,用于判斷是否接收完全部的數(shù)據(jù)包,是則所述解析模塊工作,否則所述接收模塊工作。其中,所述接收模塊還用于接收所述主機下發(fā)的報文長度指令;所述解析模塊還用于對接收到報文長度指令時對其進行解析得到報文長度;所述第三判斷模塊具體用于判斷所有數(shù)據(jù)包的總長度是否等于所述報文長度,是則所述解析模塊工作,否則所述接收模塊工作。其中,所述解析模塊還用于對接收到的一個數(shù)據(jù)包后逐個字符進行解析。其中,所述第三判斷模塊具體用于判斷接收到的指令中Pl的值是否為OxFF,是則所述解析模塊工作,否則所述接收模塊工作。其中,所述裝置還包括第四判斷模塊,用于判斷所述關(guān)鍵信息是否大于輸出空間,是則結(jié)束本次操作,否則所述輸出模塊工作。其中,所述裝置還包括第五判斷模塊,用于判斷是否已經(jīng)通過認證,是則所述第一計算模塊或所述輸出模塊工作,否則結(jié)束本次操作。其中,所述裝置還包括第六判斷模塊,用于判斷是否存在指定摘要標識,是則根據(jù)所述摘要標識獲取對應(yīng)的所述第一摘要算法;第七判斷模塊,用于判斷是否存在有效的所述當前用戶私鑰。
本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點本發(fā)明提供了一種使用SM2算法對交易報文進行簽名的方法及裝置,簽名過程中指定預(yù)設(shè)算法,通過補位方式分兩次對交易信息進行簽名,提高了安全強度,有效防止騙簽和偽簽名。
圖I為本發(fā)明實施例一提供的一種簽名方法的流程圖;圖2為本發(fā)明實施例二提供的一種簽名方法的流程圖;圖3為本發(fā)明實施例三提供的一種SM2簽名方法的流程圖;圖4為本發(fā)明實施例四提供的一種簽名裝置的方框示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。實施例一本發(fā)明實施例一提供一種簽名方法,如圖I所示,包括步驟SI :等待并接收主機發(fā)送的數(shù)據(jù)包;步驟S2 :對接收到的數(shù)據(jù)包進行解析,并判斷解析結(jié)果是否為交易報文,是則執(zhí)行步驟S3,否則執(zhí)行步驟S4;本實施例中在步驟SI和步驟S2之間包括判斷是否接收完全部的數(shù)據(jù)包,是則執(zhí)行步驟S2,否則返回步驟SI。 本實施例中可以接收到一個數(shù)據(jù)包就進行解析,或者接收完全部的數(shù)據(jù)包再進行解析;優(yōu)選的,本實施例中以接收完全部的數(shù)據(jù)包再進行解析為例進行說明;則在步驟Si之前包括等待并接收主機下發(fā)的報文長度指令,當接收到報文長度指令時對其進行解析得到報文長度;判斷是否接收完全部的數(shù)據(jù)包具體為判斷所有數(shù)據(jù)包的總長度是否等于報文長度,是則接收完全部的數(shù)據(jù)包,否則未接收完全部的數(shù)據(jù)包;本實施例中,如接收到一個數(shù)據(jù)包就進行解析則有兩種實現(xiàn)方案,(一)步驟SI和步驟S2分別替換為步驟SI’’和步驟S2’ ’ ;步驟SI’ ’ 等待并接收主機發(fā)送的數(shù)據(jù)包,對接收到的數(shù)據(jù)包進行解析;步驟S2’’ 判斷解析結(jié)果是否為交易報文,是則執(zhí)行步驟S3,否則,結(jié)束;在步驟SI’’和步驟S2’’之間也可包括判斷是否接收完全部的數(shù)據(jù)包,是則執(zhí)行步驟S2’ ’,否則返回步驟SI”。具體判斷是否接收完全部的數(shù)據(jù)包的方法和上述方法一致;(二)步驟SI和步驟S2分別替換為步驟SI’和步驟S2’ ;步驟SI,:等待并接收主機發(fā)送的數(shù)據(jù)包,當接收到一個數(shù)據(jù)包后逐個字符進行解析;步驟S2’ 判斷解析結(jié)果是否為交易報文,是則執(zhí)行步驟S3,否則,結(jié)束。
在步驟SI’和步驟S2’之間也可包括判斷是否接收完全部的數(shù)據(jù)包,是則執(zhí)行步驟S2’,否則返回步驟SI’。判斷是否接收完全部的數(shù)據(jù)包具體為判斷接收到的指令中Pl的值是否為OxFF,是則執(zhí)行步驟S2’,否則返回步驟SI,。本實施例中判斷解析結(jié)果是否為交易報文具體為判斷交易報文中是否有<F>1</F>標簽和<SX/S>標簽,是則為交易報文,否則不為交易報文;步驟S3 :按照第一摘要算法對解析結(jié)果進行計算得到第一摘要值,使用當前用戶私鑰對第一摘要值進行簽名得到簽名結(jié)果 ,并將簽名結(jié)果返回給主機,返回步驟SI ;步驟S4 :從解析結(jié)果中提取關(guān)鍵信息,將關(guān)鍵信息通過液晶顯示屏輸出;本實施例中在提取關(guān)鍵信息與輸出關(guān)鍵信息之間包括判斷關(guān)鍵信息是否大于輸出空間,是則,結(jié)束,否則將關(guān)鍵信息通過液晶顯示屏輸出;步驟S5 :判斷是否接收到按鍵信息,是則執(zhí)行步驟S6,否則結(jié)束本次操作,返回步驟SI ;步驟S6 :檢測按鍵信息的類型,如是確認鍵則執(zhí)行步驟S7,如是取消鍵則結(jié)束本次操作,返回步驟SI,如是其他鍵則返回步驟S5 ;步驟S7 :使用第一摘要算法對交易報文進行計算得到第一摘要值,并按照預(yù)設(shè)規(guī)定將第一摘要值拆分成第一組數(shù)據(jù)和第二組數(shù)據(jù);步驟S8 :按照第一預(yù)設(shè)規(guī)則對第二組數(shù)據(jù)的高位進行補位得到補位后的第二組數(shù)據(jù),并將第一組數(shù)據(jù)和補位后的第二組數(shù)據(jù)順序組合為第一數(shù)據(jù);步驟S9 :根據(jù)第一摘要算法獲取對應(yīng)的算法標識,根據(jù)預(yù)設(shè)編碼方式對算法標識和第一數(shù)據(jù)進行編碼得到第一編碼數(shù)據(jù);步驟SlO :按照第二預(yù)設(shè)規(guī)則對第一編碼數(shù)據(jù)進行補位得到第二編碼數(shù)據(jù),將補位后的第二編碼數(shù)據(jù)拆分成等長的第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù),使用當前用戶私鑰分別對第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù)進行簽名,得到第一簽名值和第二簽名值;步驟Sll :將第一簽名值和第二簽名值順序組合為簽名結(jié)果并將其返回給主機,返回步驟SI。本實施例方法的實現(xiàn)過程中,在進行簽名之前需判斷是否通過認證、指定摘要算法和有效用戶私鑰是否存在;即在步驟S3與步驟S4之間、步驟S5中提取關(guān)鍵信息與輸出關(guān)鍵信息之間判斷是否已經(jīng)通過認證,是則繼續(xù),否則結(jié)束。在步驟S3和步驟S4之間、在步驟S7和步驟S8之間包括步驟al :判斷是否存在指定摘要標識,是則根據(jù)指定摘要標識獲取對應(yīng)的第一摘要算法,繼續(xù),否則,結(jié)束本次操作,返回步驟SI ;步驟a2 :判斷是否存在有效的用戶私鑰,是則繼續(xù),否則,結(jié)束本次操作,返回步驟SI ;本實施例中可以先執(zhí)行步驟al后執(zhí)行步驟a2,或者先執(zhí)行步驟a2后執(zhí)行步驟
al ο本實施例中也可只進行一次簽名,則在步驟S6中判斷為否時就結(jié)束,S7中如為取消鍵則結(jié)束,步驟S3和步驟Sll后都結(jié)束,如要再次進行簽名,需要重新插入Key。實施例二
本發(fā)明實施例二提供一種簽名方法,如圖2所示,包括步驟101 :等待并接收主機發(fā)送的數(shù)據(jù)包;本實施例中如主機發(fā)送的數(shù)據(jù)大于1024字節(jié),則需要進行分包發(fā)送;具體的,設(shè)備接收到的主機發(fā)送的第一包數(shù)據(jù)為報文長度的數(shù)據(jù)包;步驟102 :判斷是否接收完全部的數(shù)據(jù)包,是則執(zhí)行步驟103,否則返回步驟101 ;本實施例中步驟102具體為判斷所有數(shù)據(jù)包的總長度是否等于報文長度,是則接收完全部的數(shù)據(jù)包,否則沒有接收完,返回步驟101繼續(xù)接收;本實施例中接收到的第一個數(shù)據(jù)中包含報文長度;如未接收到包含報文長度的數(shù)據(jù)包則不接收剩余數(shù)據(jù)包;步驟103 :對接收到的數(shù)據(jù)包進行解析,并判斷解析結(jié)果是否為交易報文,是則執(zhí) 行步驟106,否則執(zhí)行步驟104 ;本實施例中,可全部接收完所有的數(shù)據(jù)包再進行解析,實現(xiàn)過程參見步驟101-步驟103 ;也可接收到一個數(shù)據(jù)包先對該數(shù)據(jù)包進行解析再接收剩余的數(shù)據(jù)包,即將步驟101和步驟103分別替換為步驟101”和步驟103,,;步驟101’’ 等待并接收主機發(fā)送的數(shù)據(jù)包,對接收到的數(shù)據(jù)包進行解析;步驟103’ ’ 判斷解析結(jié)果是否為交易報文,是則執(zhí)行步驟106,否則執(zhí)行步驟104 ;本實施例中,步驟101-步驟103還可替換為步驟101’ 等待接收主機發(fā)送的數(shù)據(jù)包,當接收到一個數(shù)據(jù)包后逐個字符進行解析;步驟102’ 判斷是否接收完全部的數(shù)據(jù)包,是則執(zhí)行步驟103’,否則返回步驟101,;本實施例中步驟102’具體為判斷接收到的APDU指令中Pl的值是否為OxFF,是則執(zhí)行步驟103’,否則返回步驟101’ ;步驟103’ 判斷解析結(jié)果是否為交易報文,是則執(zhí)行步驟106,否則執(zhí)行步驟104 ;本實施例中步驟103’的實現(xiàn)過程參照步驟103中的判斷方法,在此不再贅述;例如解析結(jié)果格式如下< xml version="l. O" encoding="UTF_8" >〈Trade〉<B>原始交易包</B><F>1</F><S> 帳號HB0200009280365金額100.00 RMB姓名張三</S>〈/Trade〉上述解析結(jié)果中具有第一預(yù)設(shè)字符串<F>1〈/F>標簽和<SX/S>標簽,所以解析結(jié)果為交易報文;例如解析結(jié)果的格式為< xml version="l. O" encoding="UTF_8" >〈Trade〉
〈B〉原始交易包〈/B〉<F>0</F>〈S〉帳號HB0200009280365金額100.00 RMB姓名張三〈/S〉〈/Trade〉上述解析結(jié)果中只有<F>1〈/F>標簽而沒有<SX/S>標簽,所以上述解析結(jié)果不是交易報文; 步驟104 :判斷是否已經(jīng)通過認證,是則執(zhí)行步驟105,否則結(jié)束本次操作,返回步驟 101 ;具體的,本實施例中步驟104包括將接收到的用戶PIN碼通過內(nèi)部RSA密鑰進行加密,將加密結(jié)果發(fā)送給COS程序進行認證,并判斷COS程序返回的認證結(jié)果,如認證結(jié)果為認證成功,則通過認證,如認證結(jié)果為認證失敗,則未通過認證;步驟105 :按照第一摘要算法對解析結(jié)果進行計算得到第一摘要值,使用當前用戶私鑰對第一摘要值進行簽名得到簽名結(jié)果,并將簽名結(jié)果返回給主機,返回步驟101 ;本實施例中,在步驟104和步驟105之間還包括步驟al :判斷是否存在指定摘要標識,是則根據(jù)指定摘要標識獲取對應(yīng)的第一摘要算法,執(zhí)行步驟a2,否則,結(jié)束本次操作,返回步驟SI ;本實施例中的指定摘要標識可以為本次簽名過程中主機下發(fā)的,也可以為上幾次簽名過程主機下發(fā)的;步驟a2 :判斷是否存在有效的當前用戶私鑰,是則執(zhí)行步驟105,否則,結(jié)束本次操作,返回步驟Si ;上述步驟al和步驟a2的順序可調(diào)用,即可先執(zhí)行步驟a2,判斷為是時再執(zhí)行步驟al ;如本實施例在設(shè)備中有多個用戶私鑰時,則需根據(jù)主機下發(fā)的密鑰標識獲取對應(yīng)的用戶私鑰;具體的,本實施例中有效的用戶私鑰為SM2私鑰;具體的,第一摘要算法包括SHA256或SM3 Hash算法,優(yōu)選地,本實施中的第一摘要算法為SM3 Hash算法;本實施例中第一摘要值的長度為32字節(jié),簽名結(jié)果的長度為64字節(jié);優(yōu)選地,本實施例中使用SM3 Hash算法,對解析結(jié)果進行計算得到的第一摘要值為692CCE2A0AFD335E2CEBE186FC54EF06DD7E0AD3A07B1A4869D18932CE9047CC ;得到的簽名結(jié)果為000E9AA35E60FA421607E0A743B8D78D48DD00BA9E005514B556D9F1DBCDCEE53900FE1DA955374814FA034ACEA7FB0F7AEE4CB422543A7CA0BC78B8C903E865 ;如使用SHA256算法,對解析結(jié)果進行計算得到第一摘要值為AAF213FF61DFEAC214D53R)B76BFA7EDA080899B8099E516BBECDC63DC9D58B6,得到的簽名結(jié)果為 AB88EDDF6338BA6DA3A13D2E5D3A247C4AE502BE41390FF473FD8CE5798748E2F6A1636637104690148377EBDA77B0310C9AEB46978EEE8355656CD675653579 ;步驟106 :從解析結(jié)果中提取關(guān)鍵信息,并判斷關(guān)鍵信息是否大于輸出空間,是則結(jié)束本次操作,返回步驟101,否則執(zhí)行步驟107 ;
具體的,本實施例中的顯示空間為1024字節(jié);步驟107 :判斷是否已經(jīng)通過認證,是則執(zhí)行步驟108,否則結(jié)束本次操作,返回步驟 101 ;本實施例中該步驟的認證過程與步驟104的實現(xiàn)方法相同,在此不再贅述;步驟108 :將關(guān)鍵/[目息通過液晶顯不屏輸出;步驟109 :判斷是否接收到按鍵信息,是則執(zhí)行步驟110,否則結(jié)束本次操作,返回步驟101 ;優(yōu)選的,在本實施例中,判斷在預(yù)設(shè)時間內(nèi)是否收到按鍵信息,是則執(zhí)行步驟110,否則結(jié)束本次操作,返回步驟101 ;步驟110 :檢測按鍵信息的類型,如是確認鍵則執(zhí)行步驟111,如是取消鍵則結(jié)束 本次操作,返回步驟101,如是其他鍵則返回步驟109 ;步驟111 :使用第一摘要算法對解析結(jié)果進行計算得到第一摘要值;本實施例中在步驟110和步驟111之間可包括步驟al :判斷是否存在摘要標識,是則根據(jù)摘要標識獲取對應(yīng)的第一摘要算法,執(zhí)行步驟a2,否則,結(jié)束本次操作,返回步驟101 ;本實施例中的摘要標識可以為本次簽名過程中主機下發(fā)的,也可以為上幾次簽名過程主機下發(fā)的;步驟a2 :判斷是否存在有效的用戶私鑰,是則執(zhí)行步驟111,否則,結(jié)束本次操作,返回步驟101 ;上述步驟al和步驟a2的順序可調(diào)用,即可先執(zhí)行步驟a2,判斷為是時再執(zhí)行步驟al ;如本實施例在設(shè)備中有多個用戶私鑰時,則需根據(jù)主機下發(fā)的密鑰標識獲取對應(yīng)的用戶私鑰;具體的,本實施例中有效的用戶私鑰為SM2私鑰;具體的,本實施例中的第一摘要算法包括SHA256或SM3 Hash算法,優(yōu)選地,本實施例中的第一摘要算法為SM3 Hash算法;本實施例中第一摘要值為32字節(jié)數(shù)據(jù),使用SM3 Hash算法對解析結(jié)果進行計算得到的第一摘要值具體為16658E684B1CDFADD60048151C63F260EDE2709E09B123D5740939609C156CEE ;如使用SHA256算法對解析結(jié)果進行計算得到的第一摘要值為B97B104DEF62D3A842D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步驟112 :按照預(yù)設(shè)規(guī)定將第一摘要值拆分成第一組數(shù)據(jù)和第二組數(shù)據(jù);本實施例中,第一組數(shù)據(jù)為第一摘要值的前8個字節(jié)數(shù)據(jù),第二組數(shù)據(jù)為第一摘要值剩余的24個字節(jié)數(shù)據(jù);如步驟111中使用SM3 Hash,則第一組數(shù)據(jù)具體為16658E684B1CDFAD,第二組數(shù)據(jù)具體為D60048151C63F260EDE2709E09B123D5740939609C156CEE ;如步驟111中使用SHA256算法,則步驟112中得到的第一組數(shù)據(jù)為B97B104DEF62D3A8,得到的第二組數(shù)據(jù)為42D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步驟113 :按照第一預(yù)設(shè)規(guī)則對第二組數(shù)據(jù)的高位進行補位得到補位后的第二組數(shù)據(jù);本實施例中第一預(yù)設(shè)規(guī)則為在第二組數(shù)據(jù)的高位進行補位的數(shù)據(jù)為0009FFFFFFFFFF00,補位后的第二組數(shù)據(jù)長度為32字節(jié);如步驟112中得到的第二組數(shù)據(jù)為 D60048151C63F260EDE2709E09B123D5740939609C156CEE,則補位后的數(shù)據(jù)具體為0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE ;如步驟112 中得到的第二組數(shù)據(jù)為 42D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;則補位后的第二組數(shù) 據(jù)為0009FFFFFFFFFF0042D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步驟114 :將第一組數(shù)據(jù)和補位后的第二組數(shù)據(jù)順序組合為第一數(shù)據(jù);具體的,本實施例中的第一數(shù)據(jù)長度為40個字節(jié),在步驟111中使用SM3 Hash計算的,在該步驟中得到的第一數(shù)據(jù)具體為16658E684B1CDFAD0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE ;在步驟 111 中使用 SHA256算法進行計算的,在該步驟中得到的第一數(shù)據(jù)具體為B97B104DEF62D3A80009FFFFFFFFFF0042D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步驟115 :根據(jù)第一摘要算法獲取對應(yīng)的算法標識,根據(jù)預(yù)設(shè)編碼方式對算法標識和第一數(shù)據(jù)進行編碼得到第一編碼數(shù)據(jù);具體的,本實施例中在步驟111中使用SM3 Hash計算的,在該步驟中得到的第一編碼數(shù)據(jù)為3038300c06082A811CCF550183110500042816658E684BlCDFAD0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE ;如本實施例中在步驟111中使用SHA256算法進行計算的,在該步驟中得到的第一編碼數(shù)據(jù)為3039300d060960864801650304020105000428 B97B104DEF62D3A80009FFFFFFFFFF0042D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步驟116 :按照第二預(yù)設(shè)規(guī)則對第一編碼數(shù)據(jù)進行補位得到第二編碼數(shù)據(jù),將補位后的第二編碼數(shù)據(jù)拆分成等長的第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù);在本實施例中的第二預(yù)設(shè)規(guī)則為第二編碼數(shù)據(jù)的長度為64字節(jié),用于補位的數(shù)據(jù)為0009FFFFFF00 ;第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù)的長度為32字節(jié);如步驟111中使用SM3 Hash計算的,在該步驟中得到的第二編碼數(shù)據(jù)具體為0009FFFFFF003038300c06082A811CCF550183110500042816658E684B1CDFAD0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE,第一組編碼數(shù)據(jù)為0009FFFFFF003038300c06082A811CCF550183110500042816658E684B1CDFAD,第二組編碼數(shù)據(jù)為0009FFFFFFFFFF00D60048151C63F260EDE2709E09B123D5740939609C156CEE ;如步驟111中使用SHA256算法進行計算的,在該步驟中得到的第二編碼數(shù)據(jù)具體為0009FFFF003039300d060960864801650304020105000428 B97B104DEF62D3A80009FFFFFFFFFF0042D9556A6A14E100061DC494056837B163BB0BAF94087B5F,第一組編碼數(shù)據(jù)為0009FFFF003039300d060960864801650304020105000428B97B104DEF62D3A8,第二組編碼數(shù)據(jù)為0009FFFFFFFFFF00 42D9556A6A14E100061DC494056837B163BB0BAF94087B5F ;步驟117 :使用內(nèi)部存儲的當前用戶私鑰分別對第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù)進行簽名,得到第一簽名值和第二簽名值;在本實施例中,如步驟111中使用SM3 Hash計算的,在該步驟中得到的第一簽名值具體為83FB83A31DEB21F3AF9DC4CC16CD1912C6^F0DCB68A943A7392D29341C18DE37059835951D3A4B9A061889B0B598D6DBC99BD1A749A6AA970F15A278DF96FCB ;第二簽名值具體為:6A4865D6F7DC5407FD4DB35D7DDF83DF386F92814078EF8A15A5259721CC69A637A56575C0E81B00650E45FCF80662DDD94869256848AAF7A4FF3B363C3BF7E2 ;如步驟111中使用SHA256算法進行計算的,在該步驟中得到的第一簽名值具體為:2F88779CD873E910AF2A02D67F2E4976F1C444D8A14EEAF6A6F1F5EF9BC4291D192D82D2149776BE78D659371194A429AB233FB59BD43BE4B462A34D3C229EBE ;第二簽名值具體為AE28C906A32D12011764D514B55A835E36D65B26C897BF84D018F1B86D7AA7D1DEEA0EC364A03C85D28BC77F5F7E4399CF04DCE0FC8A73D5C1ACF2EA34F0881D ;步驟118 :將第一簽名值和第二簽名值順序組合為簽名結(jié)果并將其返回給主機,返回步驟101 ;在本實施例中,結(jié)果簽名值為128字節(jié)的數(shù)據(jù),如步驟111中使用SM3 Hash計算 的,在該步驟中得到的簽名結(jié)果具體為83FB83A31DEB21F3AF9DC4CC16CD1912C6^F0DCB68A943A7392D29341C18DE37059835951D3A4B9A061889B0B598D6DBC99BD1A749A6AA970F15A278DF96FCB6A4865D6F7DC5407FD4DB35D7DDF83DF386F92814078EF8A15A5259721CC69A637A56575C0E81B00650E45FCF80662DDD94869256848AAF7A4FF3B363C3BF7E2 ;如步驟111中使用SHA256算法進行計算的,在該步驟中得到的簽名結(jié)果具體為2F88779CD873E910AF2A02D67F2E4976F1C444D8A14EEAF6A6F1F5EF9BC4291D192D82D2149776BE78D659371194A429AB233FB59BD43BE4B462A34D3C229EBEAE28C906A32D12011764D514B55A835E36D65B26C897BF84D018F1B86D7AA7D1DEEA0EC364A03C85D28BC77F5F7E4399CF04DCE0FC8A73D5C1ACF2EA34F088ID。本實施例的方法在簽名過程中指定預(yù)設(shè)算法,通過補位方式分兩次對交易信息進行簽名,提高了安全強度,有效防止騙簽和偽簽名。實施例三本發(fā)明實施例三提供一種SM2的簽名方法,在該方法中均以二進制數(shù)進行計算和處理;如圖3所示,本實施例方法包括步驟201 :對待簽名數(shù)據(jù)進行摘要算法得到第一摘要值;本實施例中的摘要算法為SHA256或SM3 ;步驟202 :用隨機數(shù)發(fā)生器生成隨機數(shù);步驟203 :判斷隨機數(shù)是否大于預(yù)設(shè)數(shù)值,是則返回步驟202,否則執(zhí)行步驟204 ;步驟204 :從橢圓曲線上獲取一點值;步驟205 :用預(yù)設(shè)數(shù)值對點值的橫坐標與第一摘要值的和進行取余得到第一余數(shù);步驟206 :判斷第一余數(shù)是否為O或者第一余數(shù)與隨機數(shù)的模加結(jié)果是否等于預(yù)設(shè)數(shù)值,是則返回步驟202,否則執(zhí)行步驟207 ;步驟207 :用I與用戶私鑰進行模加得到模加值,用第一余數(shù)與用戶私鑰進行模乘得到模乘值,用隨機數(shù)與模乘值進行模減得到模減值;用預(yù)設(shè)數(shù)值對模加值的逆與模減值的模乘結(jié)果進行取余得到第二余數(shù);步驟208 :判斷第二余數(shù)是否為0,是則返回步驟202,否則根據(jù)第一余數(shù)和第二余數(shù)生成簽名結(jié)果。實施例四本發(fā)明實施例四提供一種簽名裝置,如圖4所示,包括接收模塊401,用于接收主機發(fā)送的數(shù)據(jù)包;解析模塊402,用于對接收到的數(shù)據(jù)包進行解析;第一判斷模塊403,用于判斷解析結(jié)果是否為交易報文,是則提取模塊405工作,否則第一計算模塊404工作;在本實施例中,第一判斷模塊403具體用于判斷所有數(shù)據(jù)包的解析結(jié)果中是否包含〈F〉I〈F〉標簽和<SX/S>標簽;
第一計算模塊404,用于按照第一摘要算法對解析結(jié)果進行計算得到第一摘要值,使用當前用戶私鑰對第一摘要值進行簽名得到簽名結(jié)果,并將簽名結(jié)果返回給主機;提取模塊405,用于從交易報文中提取關(guān)鍵信息;輸出模塊406,用于將關(guān)鍵信息通過液晶顯示屏輸出;第二判斷模塊407,用于判斷是否接收到按鍵信息,是則檢測模塊408工作,否則結(jié)束本次操作;檢測模塊408,用于檢測按鍵信息的類型,如是確認鍵則第二計算模塊409工作,如是取消鍵則結(jié)束,如是其他鍵則第二判斷模塊407工作;第二計算模塊409,用于使用第一摘要算法對交易報文進行計算得到第一摘要值,并按照預(yù)設(shè)規(guī)定將第一摘要值拆分成第一組數(shù)據(jù)和第二組數(shù)據(jù);補位組合模塊410,用于按照第一預(yù)設(shè)規(guī)則對第二組數(shù)據(jù)的高位進行補位得到補位后的第二組數(shù)據(jù),并將第一組數(shù)據(jù)和補位后的第二組數(shù)據(jù)順序組合為第一數(shù)據(jù);編碼模塊411,用于根據(jù)第一摘要算法獲取對應(yīng)的算法標識,根據(jù)預(yù)設(shè)編碼方式對算法標識和第一數(shù)據(jù)進行編碼得到第一編碼數(shù)據(jù);拆分簽名模塊412,用于按照第二預(yù)設(shè)規(guī)則對第一編碼數(shù)據(jù)進行補位得到第二編碼數(shù)據(jù),將補位后的第二編碼數(shù)據(jù)拆分成等長的第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù),使用當前用戶私鑰分別對第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù)進行簽名,得到第一簽名值和第二簽名值;組合模塊413,用于將第一簽名值和第二簽名值順序組合為簽名結(jié)果;返回模塊414,用于將第一計算模塊或組合模塊的簽名結(jié)果返回給主機。本實施例中的裝置還可包括第三判斷模塊,用于判斷是否接收完全部的數(shù)據(jù)包,是則解析模塊402工作,否則接收模塊401工作。本實施例中的接收模塊401還用于接收主機下發(fā)的報文長度指令;解析模塊402還用于對接收到報文長度指令時對其進行解析得到報文長度;第三判斷模塊具體用于判斷所有數(shù)據(jù)包的總長度是否等于報文長度,是則解析模塊402工作,否則接收模塊401工作。本實施例中的解析模塊402還用于對接收到的一個數(shù)據(jù)包后逐個字符進行解析;第三判斷模塊具體用于判斷接收到的指令中Pl的值是否為OxFF,是則解析模塊402工作,否則接收模塊401工作。本實施例中的裝置還包括第四判斷模塊、第五判斷模塊、第六判斷模塊和第七判斷模塊;其中,
第四判斷模塊,用于判斷關(guān)鍵信息是否大于輸出空間,是則結(jié)束本次操作,否則輸出模塊406工作;第五判斷模塊,用于判斷是否已經(jīng)通過認證,是則第一計算模塊405或輸出模塊406工作,否則結(jié)束本次操作;第六判斷模塊,用于判斷是否存在指定摘要標識,是則根據(jù)摘要標識獲取對應(yīng)的
第一摘要算法;第七判斷模塊,用于判斷是否存在有效的用戶私鑰;
本實施例中在第一計算模塊404或第二計算模塊409工作之前,需先第六判斷模塊和第七判斷模塊進行工作,優(yōu)選的,本實施例中,第六判斷模塊先工作,判斷為是時第七判斷模塊再工作,第七判斷模塊判斷為是時第一計算模塊404或第二計算模塊409工作。以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明公開的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準。
權(quán)利要求
1.一種簽名方法,其特征在于,包括 步驟Si:等待并接收主機發(fā)送的數(shù)據(jù)包; 步驟S2 :對所述接收到的數(shù)據(jù)包進行解析,并判斷解析結(jié)果是否為交易報文,是則執(zhí)行步驟S4,否則執(zhí)行步驟S3; 步驟S3 :按照第一摘要算法對所述解析結(jié)果進行計算得到第一摘要值,使用當前用戶私鑰對所述第一摘要值進行簽名得到簽名結(jié)果,并將所述簽名結(jié)果返回給所述主機,返回步驟SI ; 步驟S4 :從所述解析結(jié)果中提取關(guān)鍵信息,將所述關(guān)鍵信息通過液晶顯示屏輸出; 步驟S5 :判斷是否接收到按鍵信息,是則執(zhí)行步驟S6,否則結(jié)束本次操作,返回步驟 SI; 步驟S6 :檢測所述按鍵信息的類型,如是確認鍵則執(zhí)行步驟S7,如是取消鍵則結(jié)束本次操作,返回步驟SI,如是其他鍵則返回步驟S5 ; 步驟S7 :使用所述第一摘要算法對所述交易報文進行計算得到第一摘要值,并按照預(yù)設(shè)規(guī)定將所述第一摘要值拆分成第一組數(shù)據(jù)和第二組數(shù)據(jù); 步驟S8 :按照第一預(yù)設(shè)規(guī)則對所述第二組數(shù)據(jù)的高位進行補位得到補位后的第二組數(shù)據(jù),并將所述第一組數(shù)據(jù)和所述補位后的第二組數(shù)據(jù)順序組合為第一數(shù)據(jù); 步驟S9 :根據(jù)所述第一摘要算法獲取對應(yīng)的算法標識,根據(jù)預(yù)設(shè)編碼方式對所述算法標識和所述第一數(shù)據(jù)進行編碼得到第一編碼數(shù)據(jù); 步驟SlO :按照第二預(yù)設(shè)規(guī)則對所述第一編碼數(shù)據(jù)進行補位得到第二編碼數(shù)據(jù),將補位后的第二編碼數(shù)據(jù)拆分成等長的第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù),使用所述當前用戶私鑰分別對所述第一組編碼數(shù)據(jù)和所述第二組編碼數(shù)據(jù)進行簽名,得到第一簽名值和第二簽名值; 步驟Sll :將所述第一簽名值和所述第二簽名值順序組合為簽名結(jié)果并將其返回給所述主機,返回步驟SI。
2.如權(quán)利要求I所述的方法,其特征在于,在所述步驟SI和步驟S2之間包括判斷是否接收完全部的數(shù)據(jù)包,是則執(zhí)行步驟S2,否則返回步驟SI。
3.如權(quán)利要求2所述的方法,其特征在于,所述步驟SI和步驟S2分別替換為步驟SI’’和步驟S2’’ ; 步驟SI’’ 等待并接收主機發(fā)送的數(shù)據(jù)包,對接收到的數(shù)據(jù)包進行解析; 步驟S2’ ’ 判斷解析結(jié)果是否為交易報文,是則執(zhí)行步驟S4,否則執(zhí)行步驟S3。
4.如權(quán)利要求2或3所述的方法,其特征在于,所述數(shù)據(jù)包中包含報文長度,所述數(shù)據(jù)包分包進行接收; 所述判斷是否接收完全部的數(shù)據(jù)包具體為判斷所有數(shù)據(jù)包的總長度是否等于所述報文長度,是則接收完全部的數(shù)據(jù)包,否則未接收完全部的數(shù)據(jù)包。
5.如權(quán)利要求I所述的方法,其特征在于,所述步驟SI和步驟S2分別替換為步驟SI,和步驟S2’ ; 步驟SI,:等待并接收主機發(fā)送的數(shù)據(jù)包,當接收到一個數(shù)據(jù)包后逐個字符進行解析; 步驟S2’ 判斷所述解析結(jié)果是否為交易報文,是則執(zhí)行步驟S4,否則執(zhí)行步驟S3。
6.如權(quán)利要求5所述的方法,其特征在于,在所述步驟SI,和步驟S2’之間包括判斷是否接收完全部的數(shù)據(jù)包,是則執(zhí)行步驟S2’,否則返回步驟SI’。
7.如權(quán)利要求6所述的方法,其特征在于,所述判斷是否接收完全部的數(shù)據(jù)包具體為判斷接收到的指令中Pl的值是否為OxFF,是則執(zhí)行步驟S2’,否則返回步驟SI,。
8.如權(quán)利要求1、3、5任意一項所述的方法,其特征在于,在所述步驟S4中提取所述關(guān)鍵信息與輸出所述關(guān)鍵信息之間包括判斷所述關(guān)鍵信息是否大于輸出空間,是則,結(jié)束本次操作,返回步驟SI,否則將所述關(guān)鍵信息通過所述液晶顯示屏輸出。
9.如權(quán)利要求1、3、5任意一項所述的方法,其特征在于,在所述步驟S2與步驟S3之間、所述步驟S4中提取所述關(guān)鍵信息與輸出所述關(guān)鍵信息之間包括判斷是否已經(jīng)通過認證,是則繼續(xù),否則結(jié)束本次操作,返回步驟SI。
10.如權(quán)利要求1、3、5任意一項所述的方法,其特征在于,在所述步驟S2和所述步驟S3之間、在所述步驟S6和所述步驟S7之前包括 步驟al :判斷是否存在指定摘要標識,是則根據(jù)所述摘要標識獲取對應(yīng)的所述第一摘要算法,繼續(xù),否則,結(jié)束本次操作,返回步驟SI ; 步驟a2 :判斷是否存在有效的所述當前用戶私鑰,是則繼續(xù),否則,結(jié)束本次操作,返回步驟SI。
11.一種簽名裝置,其特征在于,包括 接收模塊,用于接收主機發(fā)送的數(shù)據(jù)包; 解析模塊,用于對接收到的數(shù)據(jù)包進行解析; 第一判斷模塊,用于判斷解析結(jié)果是否為交易報文,是則提取模塊工作,否則第一計算模塊工作; 所述第一計算模塊,用于按照第一摘要算法對所述解析結(jié)果進行計算得到第一摘要值,使用當前用戶私鑰對所述第一摘要值進行簽名得到簽名結(jié)果; 所述提取模塊,用于從所述交易報文中提取關(guān)鍵信息; 輸出模塊,用于將所述關(guān)鍵信息通過液晶顯示屏輸出; 第二判斷模塊,用于判斷是否接收到按鍵信息,是則檢測模塊工作,否則結(jié)束本次操作; 所述檢測模塊,用于檢測所述按鍵信息的類型,如是確認鍵則第二計算模塊工作,如是取消鍵則結(jié)束,如是其他鍵則所述第二判斷模塊工作; 所述第二計算模塊,用于使用所述第一摘要算法對所述交易報文進行計算得到第一摘要值,并按照預(yù)設(shè)規(guī)定將所述第一摘要值拆分成第一組數(shù)據(jù)和第二組數(shù)據(jù); 補位組合模塊,用于按照第一預(yù)設(shè)規(guī)則對所述第二組數(shù)據(jù)的高位進行補位得到補位后的第二組數(shù)據(jù),并將所述第一組數(shù)據(jù)和所述補位后的第二組數(shù)據(jù)順序組合為第一數(shù)據(jù);編碼模塊,用于根據(jù)所述第一摘要算法獲取對應(yīng)的算法標識,根據(jù)預(yù)設(shè)編碼方式對所述算法標識和所述第一數(shù)據(jù)進行編碼得到第一編碼數(shù)據(jù); 拆分簽名模塊,用于按照第二預(yù)設(shè)規(guī)則對所述第一編碼數(shù)據(jù)進行補位得到第二編碼數(shù)據(jù),將補位后的第二編碼數(shù)據(jù)拆分成等長的第一組編碼數(shù)據(jù)和第二組編碼數(shù)據(jù),使用所述當前用戶私鑰分別對所述第一組編碼數(shù)據(jù)和所述第二組編碼數(shù)據(jù)進行簽名,得到第一簽名值和第二簽名值; 組合模塊,用于將所述第一簽名值和所述第二簽名值順序組合為簽名結(jié)果;返回模塊,用于將所述第一計算模塊或所述組合模塊的簽名結(jié)果返回給所述主機。
12.如權(quán)利要求11所述的裝置,其特征在于,還包括 第三判斷模塊,用于判斷是否接收完全部的數(shù)據(jù)包,是則所述解析模塊工作,否則所述接收模塊工作。
13.如權(quán)利要求12所述的裝置,其特征在于,所述接收模塊還用于接收所述主機下發(fā)的報文長度指令; 所述解析模塊還用于對接收到報文長度指令時對其進行解析得到報文長度; 所述第三判斷模塊具體用于判斷所有數(shù)據(jù)包的總長度是否等于所述報文長度,是則所 述解析模塊工作,否則所述接收模塊工作。
14.如權(quán)利要求12所述的裝置,其特征在于,所述解析模塊還用于對接收到的一個數(shù)據(jù)包后逐個字符進行解析。
15.如權(quán)利要求14所述的裝置,其特征在于,所述第三判斷模塊具體用于判斷接收到的指令中Pl的值是否為OxFF,是則所述解析模塊工作,否則所述接收模塊工作。
16.如權(quán)利要求11、13、15任意一項所述的裝置,其特征在于,還包括第四判斷模塊,用于判斷所述關(guān)鍵信息是否大于輸出空間,是則結(jié)束本次操作,否則所述輸出模塊工作。
17.如權(quán)利要求11、13、15任意一項所述的裝置,其特征在于,還包括第五判斷模塊,用于判斷是否已經(jīng)通過認證,是則所述第一計算模塊或所述輸出模塊工作,否則結(jié)束本次操作。
18.如權(quán)利要求11、13、15任意一項所述的裝置,其特征在于,還包括 第六判斷模塊,用于判斷是否存在指定摘要標識,是則根據(jù)所述摘要標識獲取對應(yīng)的所述第一摘要算法; 第七判斷模塊,用于判斷是否存在有效的所述當前用戶私鑰。
全文摘要
本發(fā)明公開一種簽名方法及裝置,該方法包括對接收到的數(shù)據(jù)包進行解析,判斷解析結(jié)果是否為交易報文,否則對解析結(jié)果進行計算,使用當前用戶私鑰對計算結(jié)果進行簽名并將簽名結(jié)果返回給主機;是則從解析結(jié)果中提取關(guān)鍵信息并輸出;如接收到確認按鍵信息,對交易報文進行計算并將計算結(jié)果拆分成兩組數(shù)據(jù);將第一組數(shù)據(jù)和補位后的第二組數(shù)據(jù)組合為第一數(shù)據(jù);根據(jù)預(yù)設(shè)編碼方式對算法標識和第一數(shù)據(jù)進行編碼;對編碼結(jié)果進行補位后拆成等長的兩個數(shù)據(jù)段,使用用戶私鑰分別對兩個數(shù)據(jù)段進行簽名,將兩個簽名值順序組合為簽名結(jié)果返回給主機。在簽名過程中指定預(yù)設(shè)算法,通過補位方式分兩次對交易信息進行簽名,提高了安全強度,有效防止騙簽和偽簽名。
文檔編號H04L9/32GK102970145SQ201210564398
公開日2013年3月13日 申請日期2012年12月21日 優(yōu)先權(quán)日2012年12月21日
發(fā)明者陸舟, 于華章 申請人:飛天誠信科技股份有限公司