本發(fā)明涉及數(shù)據(jù)加密,尤其涉及一種基于并行度可配置的sm3算法的數(shù)據(jù)加密方法及裝置。
背景技術(shù):
1、近年來,隨著我國數(shù)字經(jīng)濟(jì)加快發(fā)展,全社會(huì)數(shù)據(jù)總量爆發(fā)式增長,對算力的提升即數(shù)據(jù)處理能力的提升,提高數(shù)據(jù)的存儲(chǔ)速度已經(jīng)有了較高要求,同樣在高速的數(shù)據(jù)傳輸與處理過程中信息安全不可忽視,因此提高保障信息安全的能力具有重要意義。
2、密碼技術(shù)是現(xiàn)代信息安全技術(shù)產(chǎn)業(yè)發(fā)展的核心,其中,密碼雜湊算法(sm3)以其安全性、高效性、適用性廣泛應(yīng)用于網(wǎng)絡(luò)安全和數(shù)字簽名中。隨著技術(shù)的不斷發(fā)展,對sm3算法的硬件加密效率需求也隨之提高。目前,sm3算法主要借助流水線技術(shù)提高執(zhí)行效率與速度,由于相鄰的迭代計(jì)算之間存在依賴關(guān)系,光靠流水線技術(shù)難以提高硬件設(shè)計(jì)的吞吐率。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供一種基于并行度可配置的sm3算法的數(shù)據(jù)加密方法及裝置,用以解決難以提高硬件設(shè)計(jì)的吞吐率的問題。
2、本發(fā)明提供一種基于并行度可配置的sm3算法的數(shù)據(jù)加密方法,包括:
3、對待加密消息進(jìn)行消息填充之后得到的填充后的消息進(jìn)行分組,得到多個(gè)消息分組;
4、基于預(yù)先配置的第一并行度,對各所述消息分組進(jìn)行消息擴(kuò)展,得到各所述消息分組對應(yīng)的多個(gè)消息字;其中,所述第一并行度表示至少一個(gè)消息擴(kuò)展模塊級(jí)聯(lián),所述消息擴(kuò)展模塊用于生成所述消息字;
5、基于各所述消息分組分別對應(yīng)的各所述消息字,對所述待加密消息進(jìn)行數(shù)據(jù)加密,得到加密后的數(shù)據(jù)。
6、根據(jù)本發(fā)明提供的一種基于并行度可配置的sm3算法的數(shù)據(jù)加密方法,所述基于各所述消息分組分別對應(yīng)的各所述消息字,對所述待加密消息進(jìn)行數(shù)據(jù)加密,得到加密后的數(shù)據(jù),包括:
7、基于預(yù)先配置的第二并行度和各所述消息分組分別對應(yīng)的各所述消息字,對所述待加密消息進(jìn)行數(shù)據(jù)加密,得到所述加密后的數(shù)據(jù);所述第二并行度表示至少一個(gè)消息迭代模塊級(jí)聯(lián),所述消息迭代模塊用于生成所述加密后的數(shù)據(jù)。
8、根據(jù)本發(fā)明提供的一種基于并行度可配置的sm3算法的數(shù)據(jù)加密方法,所述基于預(yù)先配置的第一并行度,對各所述消息分組進(jìn)行消息擴(kuò)展,得到各所述消息分組對應(yīng)的多個(gè)消息字,包括:
9、針對每個(gè)所述消息分組,將所述消息分組劃分為多個(gè)第一消息字;
10、基于所述第一并行度表示的級(jí)聯(lián)的消息擴(kuò)展模塊的數(shù)量,確定消息擴(kuò)展所需的時(shí)鐘周期;
11、基于所述消息擴(kuò)展所需的時(shí)鐘周期、各所述第一消息字和預(yù)先配置的第一并行度表示的所述至少一個(gè)消息擴(kuò)展模塊,得到多個(gè)第二消息字;
12、將各所述第一消息字和各所述第二消息字,確定為所述消息分組對應(yīng)的多個(gè)消息字。
13、根據(jù)本發(fā)明提供的一種基于并行度可配置的sm3算法的數(shù)據(jù)加密方法,所述基于所述時(shí)鐘周期、各所述第一消息字和預(yù)先配置的第一并行度表示的所述至少一個(gè)消息擴(kuò)展模塊,得到多個(gè)第二消息字,包括:
14、在當(dāng)前消息擴(kuò)展所需的時(shí)鐘周期內(nèi),將各所述第一消息字輸入至所述至少一個(gè)消息擴(kuò)展模塊中的第一個(gè)消息擴(kuò)展模塊,得到所述至少一個(gè)消息擴(kuò)展模塊中的最后一個(gè)消息擴(kuò)展模塊輸出的多個(gè)第三消息字;
15、在下一個(gè)消息擴(kuò)展所需的時(shí)鐘周期內(nèi),將各所述第三消息字和各所述第一消息字輸入至所述至少一個(gè)消息擴(kuò)展模塊中的所述第一個(gè)消息擴(kuò)展模塊,得到所述至少一個(gè)消息擴(kuò)展模塊中的最后一個(gè)消息擴(kuò)展模塊輸出的多個(gè)第四消息字;
16、重復(fù)執(zhí)行上述步驟,直至所有的消息擴(kuò)展所需的時(shí)鐘周期執(zhí)行完成,得到多個(gè)第五消息字;
17、將各所述第三消息字、各所述第四消息字和各所述第五消息字,確定為各所述第二消息字。
18、根據(jù)本發(fā)明提供的一種基于并行度可配置的sm3算法的數(shù)據(jù)加密方法,所述基于預(yù)先配置的第二并行度和各所述消息分組分別對應(yīng)的各所述消息字,對所述待加密消息進(jìn)行數(shù)據(jù)加密,得到所述加密后的數(shù)據(jù),包括:
19、基于所述第二并行度表示的級(jí)聯(lián)的消息迭代模塊的數(shù)量,確定消息迭代所需的時(shí)鐘周期;
20、基于所述消息迭代所需的時(shí)鐘周期、各所述消息分組分別對應(yīng)的各所述消息字和預(yù)先配置的第二并行度表示的所述至少一個(gè)消息迭代模塊,對所述待加密消息進(jìn)行數(shù)據(jù)加密,得到所述加密后的數(shù)據(jù)。
21、根據(jù)本發(fā)明提供的一種基于并行度可配置的sm3算法的數(shù)據(jù)加密方法,所述基于所述消息迭代所需的時(shí)鐘周期、各所述消息分組分別對應(yīng)的各所述消息字和預(yù)先配置的第二并行度表示的所述至少一個(gè)消息迭代模塊,對所述待加密消息進(jìn)行數(shù)據(jù)加密,得到所述加密后的數(shù)據(jù),包括:
22、在當(dāng)前消息迭代所需的時(shí)鐘周期內(nèi),將上一輪迭代的結(jié)果、各所述消息分組分別對應(yīng)的各所述消息字和尋址變量輸入至所述至少一個(gè)消息迭代模塊中的第一個(gè)消息迭代模塊,得到所述至少一個(gè)消息迭代模塊中的最后一個(gè)消息迭代模塊輸出的迭代結(jié)果;
23、在所述消息迭代所需的下一個(gè)時(shí)鐘周期內(nèi),將上個(gè)時(shí)鐘周期的迭代結(jié)果、各所述消息分組分別對應(yīng)的各所述消息字和新的尋址變量輸入至所述至少一個(gè)消息迭代模塊中的所述第一個(gè)消息迭代模塊,得到所述至少一個(gè)消息迭代模塊中的最后一個(gè)消息迭代模塊輸出的迭代結(jié)果;
24、重復(fù)執(zhí)行上述步驟,直至所有的消息迭代所需的時(shí)鐘周期執(zhí)行完成,最終得到所述加密后的數(shù)據(jù)。
25、本發(fā)明還提供一種基于并行度可配置的sm3算法的數(shù)據(jù)加密裝置,包括:
26、分組模塊,用于對待加密消息進(jìn)行消息填充之后得到的填充后的消息進(jìn)行分組,得到多個(gè)消息分組;
27、擴(kuò)展模塊,用于基于預(yù)先配置的第一并行度,對各所述消息分組進(jìn)行消息擴(kuò)展,得到各所述消息分組對應(yīng)的多個(gè)消息字;其中,所述第一并行度表示至少一個(gè)消息擴(kuò)展模塊級(jí)聯(lián),所述消息擴(kuò)展模塊用于生成所述消息字;
28、加密模塊,用于基于各所述消息分組分別對應(yīng)的各所述消息字,對所述待加密消息進(jìn)行數(shù)據(jù)加密,得到加密后的數(shù)據(jù)。
29、本發(fā)明還提供一種電子設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如上述任一種所述基于并行度可配置的sm3算法的數(shù)據(jù)加密方法。
30、本發(fā)明還提供一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述任一種所述基于并行度可配置的sm3算法的數(shù)據(jù)加密方法。
31、本發(fā)明還提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述任一種所述基于并行度可配置的sm3算法的數(shù)據(jù)加密方法。
32、本發(fā)明提供的基于并行度可配置的sm3算法的數(shù)據(jù)加密方法及裝置,通過對待加密消息進(jìn)行消息填充之后得到的填充后的消息進(jìn)行分組,得到多個(gè)消息分組;基于預(yù)先配置的第一并行度,對各所述消息分組進(jìn)行消息擴(kuò)展,得到各所述消息分組對應(yīng)的多個(gè)消息字;其中,所述第一并行度表示至少一個(gè)消息擴(kuò)展模塊級(jí)聯(lián),所述消息擴(kuò)展模塊用于生成所述消息字;基于各所述消息分組分別對應(yīng)的各所述消息字,對所述待加密消息進(jìn)行數(shù)據(jù)加密,得到加密后的數(shù)據(jù)。通過預(yù)先配置的第一并行度,實(shí)現(xiàn)各消息分組的消息擴(kuò)展,而且預(yù)先配置第一并行度可根據(jù)實(shí)際情況進(jìn)行調(diào)整,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)加密,能夠提高硬件設(shè)計(jì)的吞吐率。