亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于SM4的認(rèn)證加密算法和解密算法的制作方法

文檔序號(hào):12908099閱讀:456來源:國知局
一種基于SM4的認(rèn)證加密算法和解密算法的制作方法與工藝

本發(fā)明涉及加密算法技術(shù)領(lǐng)域,具體涉及一種基于sm4的認(rèn)證加密算法和解密算法。



背景技術(shù):

近些年,國家對(duì)信息安全的關(guān)注已經(jīng)上升到一個(gè)空前的高度。由于黑客技術(shù)的迅猛發(fā)展,人們的日常生活受到嚴(yán)重的影響,如陌生詐騙電話、銀行卡密碼盜取、支付寶余額不翼而飛以及個(gè)人身份信息泄露等。身邊的信息危害無處不在,那么如何保障數(shù)據(jù)的機(jī)密性和真實(shí)性儼然成為社會(huì)討論的熱點(diǎn)話題,也是大家高度關(guān)注的課題。

原來用于無線局域網(wǎng)的國密算法sms4被定義為sm4作為密碼行業(yè)標(biāo)準(zhǔn)發(fā)布。sm4是一個(gè)分組對(duì)稱密鑰算法,明文、密鑰、密文都是16字節(jié),加密和解密密鑰相同。通過32次循環(huán)的非線性迭代輪函數(shù)來實(shí)現(xiàn)加密和解密。其中包括非線性變換s盒,以及由移位異或構(gòu)成的線性變換。除了256字節(jié)的s盒之外,還定義了另外兩組參數(shù)fk以及ck(具體數(shù)據(jù)參考密碼局網(wǎng)站)。基本過程是首先把16字節(jié)密鑰按照4字節(jié)一組分成4組,然后根據(jù)密鑰擴(kuò)展算法,生成32組4字節(jié)輪密鑰;再把輸入的16字節(jié)數(shù)據(jù)也按照4字節(jié)一組分成4組然后進(jìn)行循環(huán)運(yùn)算(這點(diǎn)和aes算法類似)。

認(rèn)證加密算法是基于對(duì)稱密碼的密碼技術(shù)。它能夠保證數(shù)據(jù)在信道傳輸過程中數(shù)據(jù)的機(jī)密性和真實(shí)性,讓不法分子難以偽造篡改數(shù)據(jù),在一定程度上能夠解決上述問題。

針對(duì)目前數(shù)據(jù)在傳輸過程中,無法保證其傳輸信道的安全性和完整性。那么在傳輸?shù)倪^程中,數(shù)據(jù)有可能被竊取或篡改,導(dǎo)致數(shù)據(jù)的不可信。目前,手機(jī)驗(yàn)證碼已經(jīng)全面普及到我們的生活中,很多登錄信息、支付信息以及驗(yàn)證信息都是通過驗(yàn)證碼傳輸?shù)绞謾C(jī)上,那這個(gè)過程就非常危險(xiǎn)。為了解決這一問題,本發(fā)明提出一種基于國標(biāo)對(duì)稱密碼sm4的認(rèn)證加密算法smae,該算法能夠保證數(shù)據(jù)的機(jī)密性和完整性,能夠在一定程度上解決該問題。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于sm4的認(rèn)證加密算法和解密算法,以解決現(xiàn)有技術(shù)中數(shù)據(jù)傳輸過程中無法保證其傳輸數(shù)據(jù)的安全性和完整性的問題。

為實(shí)現(xiàn)以上目的,本發(fā)明采用如下技術(shù)方案:

一種基于sm4的認(rèn)證加密算法,包括:

步驟s1、定義加密算法所需要的變量參數(shù);其中,所述變量參數(shù)包括:用戶密鑰key、系統(tǒng)參數(shù)iv、斐波那契數(shù)列模256后的32字節(jié)16進(jìn)制序列const;

步驟s2、輸入用戶密鑰key、系統(tǒng)參數(shù)iv和斐波那契數(shù)列模256后的32字節(jié)16進(jìn)制序列const,利用狀態(tài)更新函數(shù)得到數(shù)據(jù)初始化后的狀態(tài)值su;

步驟s3、將明文p和su輸入到狀態(tài)更新函數(shù)中進(jìn)行v輪狀態(tài)更新,得到狀態(tài)值su+v;同時(shí),將明文p和su利用對(duì)稱密碼算法sm4進(jìn)行加密,得到密文c;

步驟s4、定義臨時(shí)參數(shù)tmp,將臨時(shí)參數(shù)tmp和su+v輸入到狀態(tài)更新函數(shù)中進(jìn)行7輪狀態(tài)更新,得到狀態(tài)值su+v+7;

步驟s5、根據(jù)狀態(tài)值su+v+7,按預(yù)設(shè)認(rèn)證碼生成算法得到明文p的認(rèn)證碼tag。

優(yōu)選地,所述步驟s2包括:

步驟s21、輸入用戶密鑰key、系統(tǒng)參數(shù)iv和斐波那契數(shù)列模256后的32字節(jié)16進(jìn)制序列const,對(duì)初始狀態(tài)s-10,j,j=0,1,2,3,4進(jìn)行賦值;

s-10,1=const1

s-10,2=const0

步驟s22、載入用戶密鑰key和系統(tǒng)參數(shù)iv初始化16字節(jié)的數(shù)據(jù)集mi={m2k,m2k+1,k=-5,-4,-3,...,-1};

m2k=key

步驟s23、將數(shù)據(jù)集mi和初始狀態(tài)s-10,i的賦值輸入到狀態(tài)更新函數(shù)中進(jìn)行10輪狀態(tài)更新,得到10輪狀態(tài)更新后的狀態(tài)值s0;

步驟s24、將相關(guān)數(shù)據(jù)ad按照128bit分為u組,記為ad={adi,i=0,1,...u-1}后,將adi和步驟s23輸出的狀態(tài)值輸入到狀態(tài)更新函數(shù)中進(jìn)行u輪狀態(tài)更新,得到u輪狀態(tài)更新后的狀態(tài)值su。

優(yōu)選地,所述步驟s23具體為:

將數(shù)據(jù)集mi和初始狀態(tài)s-10,i的賦值輸入狀態(tài)更新函數(shù):

si+1,1=sm4round(si,0,t(si,1))

si+1,2=sm4round(si,1,t(si,2))

si+1,3=sm4round(si,2,t(si,3))

si+1,4=sm4round(si,3,t(si,4))

其中,i=-10,-9,...,-1,其中為線性變換;經(jīng)過10輪狀態(tài)更新后的狀態(tài)值為:

優(yōu)選地,所述步驟s24具體為:

將相關(guān)數(shù)據(jù)ad按照128bit分為u組,記為ad={adi,i=0,1,...u-1};

將adi和步驟s23輸出的狀態(tài)值輸入到狀態(tài)更新函數(shù)中進(jìn)行u輪狀態(tài)更新:

si+1,1=sm4round(si,0,t(si,1))

si+1,2=sm4round(si,1,t(si,2))

si+1,3=sm4round(si,2,t(si,3))

si+1,4=sm4round(si,3,t(si,4))

其中,i=0,1,2,...,u-1;經(jīng)過u輪狀態(tài)更新后的狀態(tài)值為:

優(yōu)選地,所述步驟s3包括:

步驟s31、將輸入的明文p按16-byte分為v組,記為p={pm,m=0,1,...v-1},若最后一個(gè)明文分組pv-1不足128bits,用0進(jìn)行填充補(bǔ)齊;

步驟s32、將pm和步驟s2輸出的狀態(tài)值su輸入到狀態(tài)更新函數(shù)中進(jìn)行v輪狀態(tài)更新,得到狀態(tài)值su+v;

步驟s33、利用對(duì)稱密碼算法sm4加密pm和步驟s1輸出的狀態(tài)值su,得到密文c=c0||c1||...||cv-1,cm=sm4(pm,su+m),其中,su+m作為加密密鑰,su+m根據(jù)步驟s22中的狀態(tài)更新函數(shù)求解su+m+1=stateupdate(su+m,pm)。

優(yōu)選地,所述步驟s4包括:

步驟s41、定義臨時(shí)參數(shù)tmp,其中,msglen為明文p的消息長度,adlen為相關(guān)數(shù)據(jù)ad的數(shù)據(jù)長度;

步驟s42、將臨時(shí)參數(shù)tmp和步驟s3輸出的狀態(tài)值su+v輸入到狀態(tài)更新函數(shù)中進(jìn)行7輪狀態(tài)更新,得到狀態(tài)值su+v+7=(su+v+7,0,su+v+7,1,su+v+7,2,su+v+7,3,su+v+7,4)。

優(yōu)選地,所述步驟s5具體為:

計(jì)算取t的前t位作為明文p的認(rèn)證碼tag,64≤t≤128。

一種基于sm4的認(rèn)證解密算法,與上述的基于sm4的認(rèn)證加密算法配套使用,包括:

步驟s101、輸入密文c、密鑰key以及認(rèn)證碼tag,利用狀態(tài)更新函數(shù)得到數(shù)據(jù)初始化后的狀態(tài)值;

步驟s102、對(duì)密文c進(jìn)行分組,對(duì)分組后的密文順序解密,然后再利用狀態(tài)更新函數(shù)更新狀態(tài)值;

步驟s103、執(zhí)行加密算法中的認(rèn)證碼生成算法,得到新的認(rèn)證碼tag’;

步驟s104、比對(duì)tag’和tag,如果兩個(gè)認(rèn)證碼相匹配,那么系統(tǒng)解密出正確的明文p,否則加密失敗,解密出的消息無效,說明明文p可能被篡改。

優(yōu)選地,所述步驟s102中,對(duì)密文c按128bit進(jìn)行分組。

優(yōu)選地,所述步驟s102中,對(duì)分組后的密文按sm4解密算法順序解密。

本發(fā)明采用以上技術(shù)方案,至少具備以下有益效果:

由上述技術(shù)方案可知,本發(fā)明提供的這種基于sm4的認(rèn)證加密算法,利用國標(biāo)對(duì)稱密碼算法sm4構(gòu)造了一種認(rèn)證加密算法,該算法并不是簡(jiǎn)單地將加密算法和認(rèn)證碼生成算法組合在一起,而是讓加密算法和認(rèn)證碼生成算法進(jìn)行步驟共享(例如:都利用了狀態(tài)更新函數(shù)更新狀態(tài)值,而本發(fā)明提供的這種狀態(tài)更新函數(shù)是發(fā)明人在現(xiàn)有技術(shù)的基礎(chǔ)上探索構(gòu)建的,安全性能高,黑客很難基于現(xiàn)有技術(shù)進(jìn)行破解),這種認(rèn)證加密算法能夠提高算法效率,安全性高,是一種能夠同時(shí)保證數(shù)據(jù)安全性和完整性的算法。

可以理解的是,在日常生活中,手機(jī)驗(yàn)證碼已經(jīng)普及到我們每一個(gè)人中,無論是電子支付、身份認(rèn)證、用戶注冊(cè)等等都必須要使用手機(jī)驗(yàn)證碼。由此可見,驗(yàn)證碼在日常事務(wù)中扮演著很重要的角色。但是,一般情況下,短信驗(yàn)證碼都是以明文的形式發(fā)送到用戶的手機(jī)上,如此高風(fēng)險(xiǎn)的驗(yàn)證碼也是導(dǎo)致了近年來網(wǎng)絡(luò)詐騙事件頻頻發(fā)生,不法分子憑借截取短信驗(yàn)證碼,就可以實(shí)施轉(zhuǎn)賬操作。而本發(fā)明的技術(shù)方案,對(duì)明文加密的同時(shí),對(duì)驗(yàn)證碼的生成方式進(jìn)行了改進(jìn),針對(duì)驗(yàn)證碼的安全漏洞,能夠提供相應(yīng)的安全解決方案(本發(fā)明提供的是算法改進(jìn)后的認(rèn)證碼),保障了驗(yàn)證碼的安全性和完整性。同時(shí),sm4是我國對(duì)稱密碼國標(biāo)算法,具有自主可控權(quán),能夠在一定程度上防止國外惡意攻擊。進(jìn)一步提高了數(shù)據(jù)傳輸過程中數(shù)據(jù)的安全性。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明一實(shí)施例提供的基于sm4的認(rèn)證加密算法的流程示意圖;

圖2為本發(fā)明一實(shí)施例提供的基于sm4的認(rèn)證解密算法的流程示意圖。

具體實(shí)施方式

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)的描述。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所得到的所有其它實(shí)施方式,都屬于本發(fā)明所保護(hù)的范圍。

下面通過附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。

參見圖1,本發(fā)明一實(shí)施例提供的一種基于sm4的認(rèn)證加密算法,包括:

步驟s1、定義加密算法所需要的變量參數(shù)(參見如下表一);其中,所述變量參數(shù)包括:用戶密鑰key、系統(tǒng)參數(shù)iv、斐波那契數(shù)列模256后的32字節(jié)16進(jìn)制序列const;

步驟s2、輸入用戶密鑰key、系統(tǒng)參數(shù)iv和斐波那契數(shù)列模256后的32字節(jié)16進(jìn)制序列const,利用狀態(tài)更新函數(shù)得到數(shù)據(jù)初始化后的狀態(tài)值su;

步驟s3、將明文p和su輸入到狀態(tài)更新函數(shù)中進(jìn)行v輪狀態(tài)更新,得到狀態(tài)值su+v;同時(shí),將明文p和su利用對(duì)稱密碼算法sm4進(jìn)行加密,得到密文c;

步驟s4、定義臨時(shí)參數(shù)tmp,將臨時(shí)參數(shù)tmp和su+v輸入到狀態(tài)更新函數(shù)中進(jìn)行7輪狀態(tài)更新,得到狀態(tài)值su+v+7;

步驟s5、根據(jù)狀態(tài)值su+v+7,按預(yù)設(shè)認(rèn)證碼生成算法得到明文p的認(rèn)證碼tag。

表一

由上述技術(shù)方案可知,本發(fā)明提供的這種基于sm4的認(rèn)證加密算法,利用國標(biāo)對(duì)稱密碼算法sm4構(gòu)造了一種認(rèn)證加密算法,該算法并不是簡(jiǎn)單地將加密算法和認(rèn)證碼生成算法組合在一起,而是讓加密算法和認(rèn)證碼生成算法進(jìn)行步驟共享(例如:都利用了狀態(tài)更新函數(shù)更新狀態(tài)值,而本發(fā)明提供的這種狀態(tài)更新函數(shù)是發(fā)明人在現(xiàn)有技術(shù)的基礎(chǔ)上探索構(gòu)建的,安全性能高,黑客很難基于現(xiàn)有技術(shù)進(jìn)行破解),這種認(rèn)證加密算法能夠提高算法效率,安全性高,是一種能夠同時(shí)保證數(shù)據(jù)安全性和完整性的算法。

可以理解的是,在日常生活中,手機(jī)驗(yàn)證碼已經(jīng)普及到我們每一個(gè)人中,無論是電子支付、身份認(rèn)證、用戶注冊(cè)等等都必須要使用手機(jī)驗(yàn)證碼。由此可見,驗(yàn)證碼在日常事務(wù)中扮演著很重要的角色。但是,一般情況下,短信驗(yàn)證碼都是以明文的形式發(fā)送到用戶的手機(jī)上,如此高風(fēng)險(xiǎn)的驗(yàn)證碼也是導(dǎo)致了近年來網(wǎng)絡(luò)詐騙事件頻頻發(fā)生,不法分子憑借截取短信驗(yàn)證碼,就可以實(shí)施轉(zhuǎn)賬操作。而本發(fā)明的技術(shù)方案,對(duì)明文加密的同時(shí),對(duì)驗(yàn)證碼的生成方式進(jìn)行了改進(jìn),針對(duì)驗(yàn)證碼的安全漏洞,能夠提供相應(yīng)的安全解決方案(本發(fā)明提供的算法改進(jìn)后的認(rèn)證碼),保障了驗(yàn)證碼的安全性和完整性。同時(shí),sm4是我國對(duì)稱密碼國標(biāo)算法,具有自主可控權(quán),能夠在一定程度上防止國外惡意攻擊。進(jìn)一步提高了數(shù)據(jù)傳輸過程中數(shù)據(jù)的安全性。

優(yōu)選地,所述步驟s2包括:

步驟s21、輸入用戶密鑰key、系統(tǒng)參數(shù)iv和斐波那契數(shù)列模256后的32字節(jié)16進(jìn)制序列const,對(duì)初始狀態(tài)s-10,j,j=0,1,2,3,4進(jìn)行賦值;

s-10,1=const1

s-10,2=const0

步驟s22、載入用戶密鑰key和系統(tǒng)參數(shù)iv初始化16字節(jié)的數(shù)據(jù)集mi={m2k,m2k+1,k=-5,-4,-3,...,-1};

m2k=key

步驟s23、將數(shù)據(jù)集mi和初始狀態(tài)s-10,i的賦值輸入到狀態(tài)更新函數(shù)中進(jìn)行10輪狀態(tài)更新,得到10輪狀態(tài)更新后的狀態(tài)值s0;

步驟s24、將相關(guān)數(shù)據(jù)ad按照128bit分為u組,記為ad={adi,i=0,1,...u-1}后,將adi和步驟s23輸出的狀態(tài)值輸入到狀態(tài)更新函數(shù)中進(jìn)行u輪狀態(tài)更新,得到u輪狀態(tài)更新后的狀態(tài)值su。

優(yōu)選地,所述步驟s23具體為:

將數(shù)據(jù)集mi和初始狀態(tài)s-10,i的賦值輸入狀態(tài)更新函數(shù):

si+1,1=sm4round(si,0,t(si,1))

si+1,2=sm4round(si,1,t(si,2))

si+1,3=sm4round(si,2,t(si,3))

si+1,4=sm4round(si,3,t(si,4))

其中,i=-10,-9,...,-1,其中為線性變換;經(jīng)過10輪狀態(tài)更新后的狀態(tài)值為:

優(yōu)選地,所述步驟s24具體為:

將相關(guān)數(shù)據(jù)ad按照128bit分為u組,記為ad={adi,i=0,1,...u-1};

將adi和步驟s23輸出的狀態(tài)值輸入到狀態(tài)更新函數(shù)中進(jìn)行u輪狀態(tài)更新:

si+1,1=sm4round(si,0,t(si,1))

si+1,2=sm4round(si,1,t(si,2))

si+1,3=sm4round(si,2,t(si,3))

si+1,4=sm4round(si,3,t(si,4))

其中,i=0,1,2,...,u-1;經(jīng)過u輪狀態(tài)更新后的狀態(tài)值為:

優(yōu)選地,所述步驟s3包括:

步驟s31、將輸入的明文p按16-byte分為v組,記為p={pm,m=0,1,...v-1},若最后一個(gè)明文分組pv-1不足128bits,用0進(jìn)行填充補(bǔ)齊;

步驟s32、將pm和步驟s2輸出的狀態(tài)值su輸入到狀態(tài)更新函數(shù)中進(jìn)行v輪狀態(tài)更新,得到狀態(tài)值su+v;

步驟s33、利用對(duì)稱密碼算法sm4加密pm和步驟s1輸出的狀態(tài)值su,得到密文c=c0||c1||...||cv-1,cm=sm4(pm,su+m),其中,su+m作為加密密鑰,su+m根據(jù)步驟s22中的狀態(tài)更新函數(shù)求解su+m+1=stateupdate(su+m,pm)。

優(yōu)選地,所述步驟s4包括:

步驟s41、定義臨時(shí)參數(shù)tmp,其中,msglen為明文p的消息長度,adlen為相關(guān)數(shù)據(jù)ad的數(shù)據(jù)長度;

步驟s42、將臨時(shí)參數(shù)tmp和步驟s3輸出的狀態(tài)值su+v輸入到狀態(tài)更新函數(shù)中進(jìn)行7輪狀態(tài)更新,得到狀態(tài)值su+v+7=(su+v+7,0,su+v+7,1,su+v+7,2,su+v+7,3,su+v+7,4)。

優(yōu)選地,所述步驟s5具體為:

計(jì)算取t的前t位作為明文p的認(rèn)證碼tag,64≤t≤128。

參見圖2,本發(fā)明還提出了一種基于sm4的認(rèn)證解密算法,與上述的基于sm4的認(rèn)證加密算法配套使用,包括:

步驟s101、輸入密文c、密鑰key以及認(rèn)證碼tag,利用狀態(tài)更新函數(shù)得到數(shù)據(jù)初始化后的狀態(tài)值;

步驟s102、對(duì)密文c進(jìn)行分組,對(duì)分組后的密文順序解密,然后再利用狀態(tài)更新函數(shù)更新狀態(tài)值;

步驟s103、執(zhí)行加密算法中的認(rèn)證碼生成算法,得到新的認(rèn)證碼tag’;

步驟s104、比對(duì)tag’和tag,如果兩個(gè)認(rèn)證碼相匹配,那么系統(tǒng)解密出正確的明文p,否則加密失敗,解密出的消息無效,說明明文p可能被篡改。

優(yōu)選地,所述步驟s102中,對(duì)密文c按128bit進(jìn)行分組。

優(yōu)選地,所述步驟s102中,對(duì)分組后的密文按sm4解密算法順序解密。

以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性。術(shù)語“多個(gè)”指兩個(gè)或兩個(gè)以上,除非另有明確的限定。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1