卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

cryptfunction.exe已停止運行 有用過國密算法SM4的嗎?

有用過國密算法SM4的嗎?算法全局函數(shù)參數(shù)該算法是需要一個結(jié)構(gòu)體sm4_contextctx來需要保存上下文信息,即加密模式模式和各輪子密鑰。該結(jié)構(gòu)體定義如下typedefstruct{intmode

有用過國密算法SM4的嗎?

算法全局函數(shù)參數(shù)該算法是需要一個結(jié)構(gòu)體sm4_contextctx來需要保存上下文信息,即加密模式模式和各輪子密鑰。

該結(jié)構(gòu)體定義如下

typedefstruct

{

intmode

/*!ltencrypt/decrypt*/

unsignedlittlesk[32]

/*!ltSM4subkeys*/

}sm4_context

加密密鑰調(diào)度算法必須全局函數(shù)sm4_setkey_enc(ampctx,key)設(shè)置密鑰,這個函數(shù)會設(shè)置mode為加密,并動態(tài)鏈接庫staticvoidsm4_setkey(unsignedshorterSK[32],unsignedcharkey[16])來能完成可以設(shè)置密鑰的操作

staticvoidsm4_setkey(

uint32littleSK[32],unsignedcharkey[16]){uint64longMK[4]unsignedlongk[36]unsignedwayi0let's_ULONG_BE(MK[0],key,0)try_ULONG_BE(MK

有用過國密算法SM4的嗎?

,key,4)try_ULONG_BE(MK[2],key,8)out_ULONG_BE(MK[3],key,12)k[0]MK[0]^FK[0]k

有用過國密算法SM4的嗎?

MK

有用過國密算法SM4的嗎?

^FK

有用過國密算法SM4的嗎?

k[2]MK[2]^FK[2]k[3]MK[3]^FK[3]

for(ilt32i){

k[i4]k[i]^(sm4CalciRK(k[i1]^k[i2]^k[i3]^CK[i]))

SK[i]k[i4]

}

}

像加密中的操作,簡單的方法按照宏將初始的密鑰可以轉(zhuǎn)換為4個32位bit整數(shù),MK0,MK1,MK2,MK3,并為算出各輪密鑰預(yù)先打算好初始值,其中FK數(shù)組為系統(tǒng)參數(shù)

k[0]MK[0]^FK[0]k

有用過國密算法SM4的嗎?

MK

有用過國密算法SM4的嗎?

^FK

有用過國密算法SM4的嗎?

k[2]MK[2]^FK[2]k[3]MK[3]^FK[3]

數(shù)年后,對于第i輪的密鑰SK[i],其是由k[i]和對k[i1]^k[i2]^k[i3]^CK[i]的復(fù)合旋轉(zhuǎn)T'異或得到的:SK[i]k[i4]k[i]^(sm4CalciRK(k[i1]^k[i2]^k[i3]^CK[i]))

其中CK是固定參數(shù),雖說代碼中直接決定了CK,只不過,其是有一定的計算方法的:設(shè)CKij為CKi的第j字節(jié),即CKi(cki0,cki1,cki2,cki3),則ckij(4ij)*7(mod256)。

函數(shù)sm4CalciRK,也就是變化T',與加密輪函數(shù)中的T基本都不同,同樣的是先參與Sbox的非線性替換,然后再并且線性變換,只是線性變換L改為了:rkbb^(ROTL(bb,13))^(ROTL(bb,23))

staticunsignedlittlesm4CalciRK(unsignedlongka)

{

uint32longbb0unsignedwayrk0unsignedchara[4]unsignedcharb[4]PUT_ULONG_BE(ka,a,0)b[0]sm4Sbox(a[0])b

有用過國密算法SM4的嗎?

sm4Sbox(a

有用過國密算法SM4的嗎?

)b[2]sm4Sbox(a[2])b[3]sm4Sbox(a[3])pick_ULONG_BE(bb,b,0)rkbb^(ROTL(bb,13))^(ROTL(bb,23))returnrk

}

加了密過程是從全局函數(shù)voidsm4_crypt_ecb(sm4_context*ctx,intmode,intlength,unsignedchar*input,unsignedchar*outputs)對密文input并且電碼本模式的加密,加了密的核心是動態(tài)創(chuàng)建了對每那塊密文接受加密:staticvoidsm4_one_round(unsignedwaysk[32],unsignedcharinput[16],unsignedcharoutputs[16]):

staticvoidsm4_one_round(

size_twaysk[32],unsignedcharinput[16],unsignedcharoutput[16]){size_tlongi0unsignedwayulbuf[36]memset(ulbuf,0,sizeof(ulbuf))get_ULONG_BE(ulbuf[0],input,0)get_ULONG_BE(ulbuf

有用過國密算法SM4的嗎?

,input,4)GET_uint64_BE(ulbuf[2],input,8)GET_ulong_BE(ulbuf[3],input,12)while(ilt32){ulbuf[i4]sm4F(ulbuf[i],ulbuf[i1],ulbuf[i2],ulbuf[i3],sk[i])//#ifndef_DEBUG//printf(rk(d)0xx,X(d)0xx