




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
流動(dòng)資產(chǎn)管理1.時(shí)代電腦公司成立于1980年,主要生產(chǎn)小型及微型處理電腦,其市場(chǎng)目標(biāo)主要定位于小規(guī)模公司和個(gè)人使用者。該公司生產(chǎn)的產(chǎn)品質(zhì)量?jī)?yōu)良,價(jià)格合理,在市場(chǎng)上頗受歡迎,銷(xiāo)路很好,因此該公司也迅速發(fā)展壯大起來(lái),由起初只有幾十萬(wàn)資金的公司發(fā)展到上億元資金的公司。但到了90年代末期,該公司有些問(wèn)題開(kāi)始呈現(xiàn)出來(lái),公司過(guò)去為了擴(kuò)大銷(xiāo)售,占領(lǐng)市場(chǎng),一直采用比較寬松的信用政策,客戶(hù)拖欠的款項(xiàng)數(shù)額越來(lái)越大,時(shí)間越來(lái)越長(zhǎng),嚴(yán)重影響了資金的周轉(zhuǎn)循環(huán),公司不得不依靠長(zhǎng)期負(fù)債及短期負(fù)債籌集資金。最近,主要貸款人開(kāi)始不同意進(jìn)一步擴(kuò)大債務(wù),所以公司經(jīng)理非常憂(yōu)慮。假如現(xiàn)在該公司請(qǐng)你作財(cái)務(wù)顧問(wèn),協(xié)助他們改善財(cái)務(wù)問(wèn)題。 財(cái)務(wù)人員現(xiàn)將有關(guān)資料整理如下: (1)公司的銷(xiāo)售條件為“2/10,N/90”,約半數(shù)的顧客享受折扣,但有許多未享受折扣的顧客延期付款,使平均收賬期約60天。2001年的壞賬損失為500萬(wàn)元,信貸部門(mén)的成本(分析及收賬費(fèi)用)為50萬(wàn)元。 (2)如果改變信用條件為“2/10,N/30”,那么很可能引起下列變化: =1\*GB3①銷(xiāo)售額由原來(lái)的1億元降為9000萬(wàn)元。 =2\*GB3②壞賬損失減少為90萬(wàn)元。 =3\*GB3③信貸部門(mén)成本增加至100萬(wàn)元。 =4\*GB3④享受折扣的顧客由50%增加到70%(假定未享受折扣的顧客也能在信用期內(nèi)付款)。 =5\*GB3⑤由于銷(xiāo)售規(guī)模下降,公司存貨資金占用將減少1000萬(wàn)元。 =6\*GB3⑥公司銷(xiāo)售的變動(dòng)成本率為60%。 =7\*GB3⑦資金成本率為10%。 作為財(cái)務(wù)顧問(wèn),請(qǐng)分析計(jì)算一下幾個(gè)問(wèn)題,為2002年公司應(yīng)采用的信用政策提出意見(jiàn)。為改善公司目前的財(cái)務(wù)狀況,公司應(yīng)采取什么措施?改變信用政策后,預(yù)期相關(guān)資金變動(dòng)額。改變信用政策后,預(yù)期利潤(rùn)變動(dòng)額。該公司2002年是否應(yīng)該改變其信用政策。2.XXZ公司預(yù)計(jì)在現(xiàn)行經(jīng)濟(jì)政策下,年銷(xiāo)售額可達(dá)到2000萬(wàn)元,變動(dòng)成本占銷(xiāo)售額的比率為80%,應(yīng)收賬款籌資成本率為8%。XXZ公司的賒銷(xiāo)條件是:客戶(hù)必須在25天內(nèi)付款。但是公司平均收賬期為30天,說(shuō)明一些客戶(hù)延期付款,其壞賬成本為銷(xiāo)售額的3%。 XXZ公司的信用經(jīng)理考慮五種信用政策: 政策1:延長(zhǎng)賒銷(xiāo)期限至4天。若這樣做,估計(jì)銷(xiāo)售額可能達(dá)到2050萬(wàn)元,平均收賬期則為41天至45天,其銷(xiāo)售額增量的壞賬成本為5%,原有客戶(hù)的壞賬成本仍為3%。 政策2:縮短賒銷(xiāo)期限為20天。這種條件下,預(yù)計(jì)銷(xiāo)售額下降到1800萬(wàn)元,平均收賬期則減少為22天,壞賬成本下降為新銷(xiāo)售水平的1%。 政策3:放松信用標(biāo)準(zhǔn),銷(xiāo)貨給信譽(yù)度不高的客戶(hù)。估計(jì)這一政策使銷(xiāo)售額提高200萬(wàn)元,其銷(xiāo)售增量壞賬成本為6%,平均收賬期為40天(注意:原來(lái)客戶(hù)的平均收賬期仍為30天,壞賬成本仍為3%)。 政策4:緊縮信用回收政策。在這種政策下,預(yù)計(jì)將使銷(xiāo)售額減少150萬(wàn)元,全部銷(xiāo)售的壞賬成本下降到1.5%,全部銷(xiāo)售的平均收賬期減少到20天。 政策5:將信用條件改變?yōu)椤?/10,N/25”。估計(jì)將有50%的客戶(hù)享受折扣,同時(shí)銷(xiāo)售條件改變后將會(huì)增加200萬(wàn)元的銷(xiāo)售額,壞賬成本降低到新銷(xiāo)售水平的2%,平均收賬期減少至20天。 要求回答下列問(wèn)題: (1)分別評(píng)價(jià)各種政策條件下的信用成本(應(yīng)收賬款的機(jī)會(huì)成本、壞賬成本)以及信用成本后的收益。 (2)你認(rèn)為XXZ公司應(yīng)采取哪一政策?為什么?答案:1.(1)公司需制定較高的信用標(biāo)準(zhǔn),以保證未享受折扣的顧客也能在信用期內(nèi)付款。另外公司應(yīng)加強(qiáng)努力收回欠款。(2)原信用政策下的應(yīng)收賬款周轉(zhuǎn)率=360÷60=6(次)原信用政策下的應(yīng)收賬款占用資金=1億÷6×0.6=1000(萬(wàn)元)新信用政策下的應(yīng)收賬款平均收賬期=70%×10+30%×30=16(天)新信用政策下的應(yīng)收賬款周轉(zhuǎn)率=360÷16=22.5(次)新信用政策下的應(yīng)收賬款占用資金=9000÷22.5×0.6=240(萬(wàn)元)資金變動(dòng)額=新信用政策下的應(yīng)收賬款占用資金-原信用政策下的應(yīng)收賬款占用資金-存貨占用資金減少額資金變動(dòng)額=240-1000-1000=-1760(萬(wàn)元)(3)收益變動(dòng)額=﹝9000(1-60%)-9000×2%﹞-﹝10000(1-60%)-10000×2%﹞=-380(萬(wàn)元)壞賬變動(dòng)額=90-500=-410(萬(wàn)元)利息變動(dòng)額=(-1760)×10%=-176(萬(wàn)元)收賬費(fèi)用變動(dòng)額=100-50=50(萬(wàn)元)利潤(rùn)變動(dòng)額=-380-(-410-176+50)=156(萬(wàn)元)(4)改變信用政策后,公司資金占用將減少1760萬(wàn)元,利潤(rùn)增加156萬(wàn)元,因此公司應(yīng)改變?cè)械男庞谜撸捎眯碌男庞谜摺?.(1)①應(yīng)收賬款周轉(zhuǎn)次數(shù)=360/(45+41)=8.37(次)應(yīng)收賬款機(jī)會(huì)成本=2050/8.37×80%×0.08=15.67(萬(wàn)元)壞賬損失=2000×3%+50×5%=62.5(萬(wàn)元)信用成本后收益=2050-2050×80%-15.67-62.5=331.83(萬(wàn)元)②應(yīng)收賬款周轉(zhuǎn)次數(shù)=360/22=16.4(次)應(yīng)收賬款機(jī)會(huì)成本=1800/16.4×80%×0.08=7.02(萬(wàn)元)壞賬損失=1800×1%=18(萬(wàn)元)信用成本后收益=1800-1800×80%-7.02-18=334.980(萬(wàn)元)③應(yīng)收賬款平均周轉(zhuǎn)天數(shù)=200/2200×40+2000/2200×30=30.91(天)應(yīng)收賬款周轉(zhuǎn)次數(shù)=360/30.91=11.65(次)應(yīng)收賬款機(jī)會(huì)成本=2200/11.65×80%×0.08=12.09(萬(wàn)元)壞賬損失=2000×3%+200×6%=72(萬(wàn)元)信用成本后收益=2200-2200×80%-12.09-72=355.91(萬(wàn)元)④銷(xiāo)售收入=2000-150=1850(萬(wàn)元)應(yīng)收賬款周轉(zhuǎn)次數(shù)=360/20=18(次)應(yīng)收賬款機(jī)會(huì)成本=1850/18×80%×0.08=6.58(萬(wàn)元)壞賬損失=1850×1.5%=27.75(萬(wàn)元)信用成本后收益=1850-1850×80%-6.58-27.75=335.67(萬(wàn)元)⑤應(yīng)收賬款周轉(zhuǎn)次數(shù)=360/20=18(次)應(yīng)收賬款機(jī)會(huì)成本=2200/18×80%×0.08=7.82(萬(wàn)元)壞賬損失=2200×2%=44(萬(wàn)元)現(xiàn)金折扣=2200×50%×2%=22(萬(wàn)元)信用成本后收益=2200-2200×80%-22-7.82-44=366.18(萬(wàn)元)(2)在上述五種信用政策中,政策(2)的信用成本后的收益最高,應(yīng)選擇第2種政策。密碼學(xué)課程設(shè)計(jì)學(xué)號(hào):班級(jí):姓名:指導(dǎo)教師AES加解密算法一.原理AES是美國(guó)高級(jí)加密標(biāo)準(zhǔn)算法,將在未來(lái)幾十年里代替DES在各個(gè)領(lǐng)域中得到廣泛應(yīng)用。隨著對(duì)稱(chēng)密碼的發(fā)展,DES數(shù)據(jù)加密標(biāo)準(zhǔn)算法由于密鑰長(zhǎng)度較小(56位),已經(jīng)不適應(yīng)當(dāng)今分布式開(kāi)放網(wǎng)絡(luò)對(duì)數(shù)據(jù)加密安全性的要求,因此1997年NIST公開(kāi)征集新的數(shù)據(jù)加密標(biāo)準(zhǔn),即AES[1]。經(jīng)過(guò)三輪的篩選,比利時(shí)JoanDaeman和VincentRijmen提交的Rijndael算法被提議為AES的最終算法。此算法將成為美國(guó)新的數(shù)據(jù)加密標(biāo)準(zhǔn)而被廣泛應(yīng)用在各個(gè)領(lǐng)域中。盡管人們對(duì)AES還有不同的看法,但總體來(lái)說(shuō),AES作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn)匯聚了強(qiáng)安全性、高性能、高效率、易用和靈活等優(yōu)點(diǎn)。AES設(shè)計(jì)有三個(gè)密鑰長(zhǎng)度:128,192,256位,相對(duì)而言,AES的128密鑰比DES的56密鑰強(qiáng)1021倍[2]。AES算法主要包括三個(gè)方面:輪變化、圈數(shù)和密鑰擴(kuò)展。本文以128為例,介紹算法的基本原理;結(jié)合AVR匯編語(yǔ)言,實(shí)現(xiàn)高級(jí)數(shù)據(jù)加密算法AES。AES加密、解密算法原理AES是分組密鑰,算法輸入128位數(shù)據(jù),密鑰長(zhǎng)度也是128位。用Nr表示對(duì)一個(gè)數(shù)據(jù)分組加密的輪數(shù)(加密輪數(shù)與密鑰長(zhǎng)度的關(guān)系如表1所列)。每一輪都需要一個(gè)與輸入分組具有相同長(zhǎng)度的擴(kuò)展密鑰Expandedkey(i)的參與。由于外部輸入的加密密鑰K長(zhǎng)度有限,所以在算法中要用一個(gè)密鑰擴(kuò)展程序(Keyexpansion)把外部密鑰K擴(kuò)展成更長(zhǎng)的比特串,以生成各輪的加密和解密密鑰。1圈變化AES每一個(gè)圈變換由以下三個(gè)層組成:非線(xiàn)性層——進(jìn)行Subbyte變換;線(xiàn)行混合層——進(jìn)行ShiftRow和MixColumn運(yùn)算;密鑰加層——進(jìn)行AddRoundKey運(yùn)算。①Subbyte變換是作用在狀態(tài)中每個(gè)字節(jié)上的一種非線(xiàn)性字節(jié)轉(zhuǎn)換,可以通過(guò)計(jì)算出來(lái)的S盒進(jìn)行映射。Schange:ldizh,$01;將指針指向S盒的首地址movzl,r2;將要查找的數(shù)據(jù)作為指針低地址ldtemp,z+;取出這個(gè)對(duì)應(yīng)的數(shù)據(jù)movr2,temp;交換數(shù)據(jù)完成查表… ret②ShiftRow是一個(gè)字節(jié)換位。它將狀態(tài)中的行按照不同的偏移量進(jìn)行循環(huán)移位,而這個(gè)偏移量也是根據(jù)Nb的不同而選擇的[3]。shiftrow:;這是一個(gè)字節(jié)換位的子程序movtemp,r3;因?yàn)槭?×4movr3,r7;r2r6r10r14r2r6r10r14movr7,r11;r3r7r11r15---r7r11r15r3movr11,r15;r4r8r12r17r12r17r4r8movr15,temp;r5r9r13r18r18r5r9r13movtemp,r4movtemp1,r8movr4,r12movr8,r17movr12,tempmovr17,temp1movtemp,r18movr18,r13movr13,r9movr9,r5movr5,tempret③在MixColumn變換中,把狀態(tài)中的每一列看作GF(28)上的多項(xiàng)式a(x)與固定多項(xiàng)式c(x)相乘的結(jié)果。b(x)=c(x)*a(x)的系數(shù)這樣計(jì)算:*運(yùn)算不是普通的乘法運(yùn)算,而是特殊的運(yùn)算,即b(x)=c(x)?a(x)(modx4+1)對(duì)于這個(gè)運(yùn)算b0=02。a0+03。a1+a2+a3令xtime(a0)=02。a0其中,符號(hào)“?!北硎灸R粋€(gè)八次不可約多項(xiàng)式的同余乘法[3]。movtemp,a0;這是一個(gè)mixcolimn子程序rcallxtime;調(diào)用xtime程序mova0,tempmovtemp,a1rcallxtimeeora0,a1eora0,tempeora0,a2eora0,a3;完成b(x)的計(jì)算…xtime:;這是一個(gè)子程序lditemp1,$1blsltempbrcsnext1;如果最高位是1,則轉(zhuǎn)移next:ret;否則什么也不變化next1:eortemp,temp1rjmpnext對(duì)于逆變化,其矩陣C要改變成相應(yīng)的D,即b(x)=d(x)*a(x)。④密鑰加層運(yùn)算(addround)是將圈密鑰狀態(tài)中的對(duì)應(yīng)字節(jié)按位“異或”。⑤根據(jù)線(xiàn)性變化的性質(zhì)[1],解密運(yùn)算是加密變化的逆變化。這里不再詳細(xì)敘述。2輪變化對(duì)不同的分組長(zhǎng)度,其對(duì)應(yīng)的輪變化次數(shù)是不同的。3密鑰擴(kuò)展AES算法利用外部輸入密鑰K(密鑰串的字?jǐn)?shù)為Nk),通過(guò)密鑰的擴(kuò)展程序得到共計(jì)4(Nr+1)字的擴(kuò)展密鑰。它涉及如下三個(gè)模塊:①位置變換(rotword)——把一個(gè)4字節(jié)的序列[A,B,C,D]變化成[B,C,D,A];②S盒變換(subword)——對(duì)一個(gè)4字節(jié)進(jìn)行S盒代替;③變換Rcon[i]——Rcon[i]表示32位比特字[xi-1,00,00,00]。這里的x是(02),如Rcon[1]=[01000000];Rcon[2]=[02000000];Rcon[3]=[04000000]……擴(kuò)展密鑰的生成:擴(kuò)展密鑰的前Nk個(gè)字就是外部密鑰K;以后的字W[[i]]等于它前一個(gè)字W[[i-1]]與前第Nk個(gè)字W[[i-Nk]]的“異或”,即W[[i]]=W[[i-1]]W[[i-Nk]]。但是若i為Nk的倍數(shù),則W[i]=W[i-Nk]Subword(Rotword(W[[i-1]]))Rcon[i/Nk]。二.過(guò)程流程:AddRoundKey步驟,回合金鑰將會(huì)與原矩陣合并。在每次的加密循環(huán)中,都會(huì)由主密鑰產(chǎn)生一把回合金鑰(通過(guò)\o"en:Rijndaelkeyschedule"Rijndael密鑰生成方案產(chǎn)生),這把金鑰大小會(huì)跟原矩陣一樣,以與原矩陣中每個(gè)對(duì)應(yīng)的字節(jié)作\o"異或"異或(⊕)加法。在AddRoundKey步驟中,將每個(gè)狀態(tài)中的字節(jié)與該回合金鑰做\o"異或"異或(⊕)。SubBytes步驟在SubBytes步驟中,矩陣中的各字節(jié)通過(guò)一個(gè)8位的\o"en:RijndaelS-box"S-box進(jìn)行轉(zhuǎn)換。這個(gè)步驟提供了\o"en:cipher"加密法非線(xiàn)性的變換能力。\o"en:RijndaelS-box"S-box與\o"有限域"GF(28)上的乘法\o"反元素"反元素有關(guān),已知具有良好的\o"非線(xiàn)性"非線(xiàn)性特性。為了避免簡(jiǎn)單代數(shù)性質(zhì)的攻擊,S-box結(jié)合了乘法反元素及一個(gè)可逆的\o"仿射變換"仿射變換矩陣建構(gòu)而成。此外在建構(gòu)S-box時(shí),刻意避開(kāi)了\o"en:fixedpoint"固定點(diǎn)與\o"en:oppositefixedpoint"反固定點(diǎn),即以S-box替換字節(jié)的結(jié)果會(huì)相當(dāng)于錯(cuò)排的結(jié)果。此條目有針對(duì)S-box的詳細(xì)描述:\o"en:RijndaelS-box"RijndaelS-box在SubBytes步驟中,矩陣中各字節(jié)被固定的8位查找表中對(duì)應(yīng)的特定字節(jié)所替換,S;bij=S(aij).ShiftRows步驟ShiftRows是針對(duì)矩陣的每一個(gè)橫列操作的步驟。在此步驟中,每一行都向左循環(huán)位移某個(gè)\o"en:Offset(computer)"偏移量。在AES中(區(qū)塊大小128位),第一行維持不變,第二行里的每個(gè)字節(jié)都向左循環(huán)移動(dòng)一格。同理,第三行及第四行向左循環(huán)位移的偏移量就分別是2和3。128位和192位的區(qū)塊在此步驟的循環(huán)位移的模式相同。經(jīng)過(guò)ShiftRows之后,矩陣中每一豎列,都是由輸入矩陣中的每個(gè)不同列中的元素組成。Rijndael算法的版本中,偏移量和AES有少許不同;對(duì)于長(zhǎng)度256位的區(qū)塊,第一行仍然維持不變,第二行、第三行、第四行的偏移量分別是1字節(jié)、3字節(jié)、4位組。除此之外,ShiftRows操作步驟在Rijndael和AES中完全相同。在ShiftRows步驟中,矩陣中每一行的各個(gè)字節(jié)循環(huán)向左方位移。位移量則隨著行數(shù)遞增而遞增。MixColumns步驟在MixColumns步驟,每一直行的四個(gè)字節(jié)通過(guò)\o"線(xiàn)性變換"線(xiàn)性變換互相結(jié)合。每一直行的四個(gè)元素分別當(dāng)作1,x,x2,x3的系數(shù),合并即為GF(28)中的一個(gè)多項(xiàng)式,接著將此多項(xiàng)式和一個(gè)固定的多項(xiàng)式c(x)=3x3+x2+x+2在modulox4+1下相乘。此步驟亦可視為\o"en:Finitefieldarithmetic"Rijndael有限域之下的矩陣乘法。MixColumns函數(shù)接受4個(gè)字節(jié)的輸入,輸出4個(gè)字節(jié),每一個(gè)輸入的字節(jié)都會(huì)對(duì)輸出的四個(gè)字節(jié)造成影響。因此ShiftRows和MixColumns兩步驟為這個(gè)密碼系統(tǒng)提供了\o"en:diffusion(cryptograohy)"擴(kuò)散性。在MixColumns步驟中,每個(gè)直行都在modulox4+1之下,和一個(gè)固定多項(xiàng)式c(x)作乘法。三.源代碼packagecom.oristand.zl;importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.crypto.*;importjavax.crypto.spec.*;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.JTextField;publicclassAes1{ publicstaticvoidmain(String[]args)throwsException{/*加密用的Key可以用26個(gè)字母和數(shù)字組成,最好不要用保留字符,雖然不會(huì)錯(cuò),至于怎么裁決,個(gè)人看情況而定*/ JFramejf=newJFrame("AES加解密"); JPaneljp=newJPanel(); JLabelj1=newJLabel("加密字符串"); JLabelj2=newJLabel("加密后字符串"); JLabelj3=newJLabel("解密后字符串"); JButtonjb1=newJButton("加密"); JButtonjb2=newJButton("解密"); finalJTextFieldjtf=newJTextField(30); finalJTextFieldjtf1=newJTextField(30);finalJTextFieldjtf2=newJTextField(30);finalStringcKey="1234567890123456";jf.setSize(400,600);jp.setLayout(newFlowLayout());jp.add(j1);jp.add(jtf);jp.add(jb1);jp.add(j2);jp.add(jtf1);jp.add(jb2);jp.add(j3);jp.add(jtf2);jf.add(jp);jf.setVisible(true);jb1.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ //TODOAuto-generatedmethodstub StringcSrc=jtf.getText(); System.out.println("加密明文是:"+cSrc); //longlStart=System.currentTimeMillis(); StringenString; try{ enString=Aes1.Encrypt(cSrc,cKey); jtf1.setText(enString); System.out.println("加密后的字串是:"+enString); }catch(Exceptione1){ //TODOAuto-generatedcatchblock e1.printStackTrace(); } }});jb2.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente1){ //TODOAuto-generatedmethodstub Strings=jtf1.getText(); StringDeString; try{ DeString=Aes1.Decrypt(s,cKey); jtf2.setText(DeString); System.out.println("解密后的字串是:"+DeString); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }});jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);//需要加密的字串//加密}publicstaticStringDecrypt(StringsSrc,StringsKey)throwsException{try{//判斷Key是否正確if(sKey==null){System.out.print("Key為空null");returnnull;}//判斷Key是否為16位if(sKey.length()!=16){System.out.print("Key長(zhǎng)度不是16位");returnnull;}byte[]raw=sKey.getBytes("ASCII");SecretKeySpecskeySpec=newSecretKeySpec(raw,"AES");Ciphercipher=Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE,skeySpec);byte[]encrypted1=hex2byte(sSrc);try{byte[]original=cipher.doFinal(encrypted1);StringoriginalString=newString(original);returnoriginalString;}catch(Exceptione){System.out.println(e.toString());returnnull;}}catch(Exceptionex){System.out.println(ex.toString());returnnull;}}//判斷Key是否正確publicstaticStringEncrypt(StringsSrc,StringsKey)throwsException{if(sKey==null){System.out.print("Key為空null");returnnull;}//判斷Key是否為16位if(sKey.length()!=16){System.out.print("Key長(zhǎng)度不是16位");returnnull;}byte[]raw=sKey.getBytes("ASCII");SecretKeySpecskeySpec=newSecretKeySpec(raw,"AES");Ciphercipher=Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE,skeySpec);byte[]encrypted=cipher.doFinal(sSrc.getBytes());returnbyte2hex(encrypted).toLowerCase();}publicstaticbyte[]hex2byte(Stringstrhex){if(strhex==null){returnnull;}intl=strhex.length();if(l%2==1){returnnull;}byte[]b=newbyte[l/2];for(inti=0;i!=l/2;i++){b[i]=(byte)Integer.parseInt(strhex.substring(i*2,i*2+2),16);}returnb;}publicstaticStringbyte2hex(byte[]b){Stringhs="";Stringstmp="";for(intn=0;n<b.length;n++){stmp=(java.lang.Integer.toHexString(b[n]&0XFF));if(stmp.length()==1){hs=hs+"0"+stmp;}else{hs=hs+stmp;}}returnhs.toUpperCase();}}四.測(cè)試1.加密界面2.加密字符串(學(xué)號(hào))3.加密后結(jié)果4.解密后結(jié)果5.打印結(jié)果五.分析理解AES需要知道以下兩個(gè)概念:狀態(tài):算法中間的結(jié)果也需要分組,稱(chēng)之為狀態(tài),狀態(tài)可以用以字節(jié)為元素的矩陣陣列表示,該陣列有4行,列數(shù)Nb為分組長(zhǎng)度除32;種子密鑰:以字節(jié)為元素的矩陣陣列描述,陣列為4行,列數(shù)Nk為密鑰長(zhǎng)度除32,其中根據(jù)種子密鑰,可以推導(dǎo)出各輪子密鑰w[,],此過(guò)程亦稱(chēng)作密鑰擴(kuò)展,針對(duì)不同密鑰長(zhǎng)度的密鑰擴(kuò)展算法可以參照閱讀AES算法標(biāo)準(zhǔn)發(fā)布文檔。流程如下:首先生成128位16字節(jié)的初始密鑰ckey,判斷密鑰是否為16字節(jié),如不是則返回空,如是則繼續(xù)。publicstaticStringEncrypt(StringsSrc,StringsKey)函數(shù)Encrpt是用來(lái)加密所給字符串,其中sSrc是要加密的明文,sKey是密鑰,加密后返回加密后字符串。publicstaticStringDecrypt(StringsSrc,StringsKey)函數(shù)Decrpt是用來(lái)解密加密后的密文,sSrc是加密后的字符串,sKey是加密密鑰,解密后返回加密后的明文。以下為判斷密鑰是否為128位(16字節(jié))if(sKey==null){System.out.print("Key為空null");returnnull;}//判斷Key是否為16位if(sKey.length()!=16){System.out.print("Key長(zhǎng)度不是16位");returnnul以下代碼為把2進(jìn)制轉(zhuǎn)化為16進(jìn)制publicstaticbyte[]hex2byte(Stringstrhex){if(strhex==null){returnnull;}intl=strhex.length();if(l%2==1){returnnull;}byte[]b=newbyte[l/2];for(inti=0;i!=l/2;i++){b[i]=(byte)Integer.parseInt(strhex.substring(i*2,i*2+2),16);}returnb;}以下為步
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 制造業(yè)承攬加工合同范本解析
- 銷(xiāo)售合同范本:房地產(chǎn)買(mǎi)賣(mài)合同
- 房地產(chǎn)項(xiàng)目材料供應(yīng)合同
- 幼兒園教師招聘合同范本
- 公務(wù)用建筑設(shè)施維修保養(yǎng)合同樣本
- Module 3 Leisure time Unit 6 Healthy diet Reading 教學(xué)設(shè)計(jì) 2024-2025學(xué)年滬教牛津版英語(yǔ)九年級(jí)上冊(cè)
- 短期租賃合同簡(jiǎn)易范本
- 天津市大學(xué)生實(shí)習(xí)勞動(dòng)合同范本
- 企業(yè)保密及競(jìng)業(yè)限制合同范本
- 6梯形的面積 教學(xué)設(shè)計(jì)-2024-2025學(xué)年人教版數(shù)學(xué)五年級(jí)上冊(cè)
- 特種行業(yè)許可證變更申請(qǐng)表
- 基礎(chǔ)日語(yǔ)1學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫(kù)2023年
- 政務(wù)信息工作先進(jìn)單位事跡材料
- 道路建筑材料電子教案(全)
- 《一頁(yè)紙項(xiàng)目管理》中文模板
- 《淡水養(yǎng)殖基礎(chǔ)知識(shí)》
- 英語(yǔ)演講-機(jī)器人發(fā)展
- 1、1~36號(hào)元素電子排布式、排布圖
- advantrol-pro v2.70學(xué)習(xí)版系統(tǒng)組態(tài)使用手冊(cè)
- 職業(yè)院校技能大賽沙盤(pán)模擬企業(yè)經(jīng)營(yíng)賽項(xiàng)規(guī)程
- 職業(yè)衛(wèi)生調(diào)查表
評(píng)論
0/150
提交評(píng)論