資源描述:
《如何實現(xiàn)DES算法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、如何實現(xiàn)DES算法原文:MatthewFischer翻譯:小榕軟件實驗室DES(DataEncryptionStandard)算法,于1977年得到美國政府的正式許可,是一種用56位密鑰來加密64位數(shù)據(jù)的方法。DES算法以被應(yīng)用于許多需要安全加密的場合。(如:UNIX的密碼算法就是以DES算法為基礎(chǔ)的)。下面是關(guān)于如何實現(xiàn)DES算法的語言性描述,如果您要其源代碼,可以到Http//Assassin.yeah.net下載,后者您有任何問題也可以寫信給我(Assassin@ynmail.com)。1-1、變換密鑰取得64位的密鑰,每個第8
2、位作為奇偶校驗位。1-2、變換密鑰。1-2-1、舍棄64位密鑰中的奇偶校驗位,根據(jù)下表(PC-1)進行密鑰變換得到56位的密鑰,在變換中,奇偶校驗位以被舍棄。PermutedChoice1(PC-1)574941332517915850423426181025951433527191136052443663554739312315762544638302214661534537292113528201241-2-2、將變換后的密鑰分為兩個部分,開始的28位稱為C[0],最后的28位稱為D[0]。1-2-3、生成16個子密鑰,初始I=1
3、。1-2-3-1、同時將C[I]、D[I]左移1位或2位,根據(jù)I值決定左移的位數(shù)。見下表I:12345678910111213141516左移位數(shù):11222222122222211-2-3-2、將C[I]D[I]作為一個整體按下表(PC-2)變換,得到48位的K[I] PermutedChoice2(PC-2)14171124153281562110231912426816727201324152313747553040514533484449395634534642503629321-2-3-3、從1-2-3-1處循環(huán)執(zhí)行,直到K
4、[16]被計算完成?!?、處理64位的數(shù)據(jù)2-1、取得64位的數(shù)據(jù),如果數(shù)據(jù)長度不足64位,應(yīng)該將其擴展為64位(例如補零)2-2、將64位數(shù)據(jù)按下表變換(IP)InitialPermutation(IP)585042342618102605244362820124625446383022146645648403224168574941332517915951433527191136153453729211356355473931231572-3、將變換后的數(shù)據(jù)分為兩部分,開始的32位稱為L[0],最后的32位稱為R[0]。2-4、用
5、16個子密鑰加密數(shù)據(jù),初始I=1。2-4-1、將32位的R[I-1]按下表(E)擴展為48位的E[I-1]Expansion(E)32123454567898910111213121314151617161718192021202122232425242526272829282930313212-4-2、異或E[I-1]和K[I],即E[I-1]XORK[I]2-4-3、將異或后的結(jié)果分為8個6位長的部分,第1位到第6位稱為B[1],第7位到第12位稱為B[2],依此類推,第43位到第48位稱為B[8]。2-4-4、按S表變換所有的B
6、[J],初始J=1。所有在S表的值都被當(dāng)作4位長度處理。2-4-4-1、將B[J]的第1位和第6位組合為一個2位長度的變量M,M作為在S[J]中的行號。2-4-4-2、將B[J]的第2位到第5位組合,作為一個4位長度的變量N,N作為在S[J]中的列號。2-4-4-3、用S[J][M][N]來取代B[J]。SubstitutionBox1(S[1])1441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S[2]151
7、8146113497213120510313471528141201106911501471110413158126932151381013154211671205149S[3]1009146315511312711428137093461028514121115113649815301112125101471101306987415143115212S[4]7131430691012851112415138115615034721211014910690121171315131452843150610113894511127214S
8、[5]2124171011685315130149141121247131501510398642111101378159125630141181271142136150910453S[6]121101592680133