![Java加密解密之對稱加密算法DES_第1頁](http://file4.renrendoc.com/view/7d164914b20b1369eafb7d4bcb6fbeb0/7d164914b20b1369eafb7d4bcb6fbeb01.gif)
![Java加密解密之對稱加密算法DES_第2頁](http://file4.renrendoc.com/view/7d164914b20b1369eafb7d4bcb6fbeb0/7d164914b20b1369eafb7d4bcb6fbeb02.gif)
![Java加密解密之對稱加密算法DES_第3頁](http://file4.renrendoc.com/view/7d164914b20b1369eafb7d4bcb6fbeb0/7d164914b20b1369eafb7d4bcb6fbeb03.gif)
![Java加密解密之對稱加密算法DES_第4頁](http://file4.renrendoc.com/view/7d164914b20b1369eafb7d4bcb6fbeb0/7d164914b20b1369eafb7d4bcb6fbeb04.gif)
![Java加密解密之對稱加密算法DES_第5頁](http://file4.renrendoc.com/view/7d164914b20b1369eafb7d4bcb6fbeb0/7d164914b20b1369eafb7d4bcb6fbeb05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Java加密解密之對稱加密算法DES本文轉(zhuǎn)自網(wǎng)絡(luò)數(shù)據(jù)加密算法(DataEncryptionAlgorithm,DEA)是一種對稱加密算法,很可能是使用最廣泛的密鑰系統(tǒng),特別是在保護(hù)金融數(shù)據(jù)的安全中,最初開發(fā)的DEA是嵌入硬件中的。通常,自動取款機(jī)(AutomatedTellerMachine,ATM)都使用DEA。它出自IBM的研究工作,IBM也曾對它擁有幾年的專利權(quán),但是在1983年已到期后,處于公有范圍中,允許在特定條件下可以免除專利使用費而使用。1977年被美國政府正式采納。1998年后實用化DES破譯機(jī)的出現(xiàn)徹底宣告DES算法已不具備安全性,1999年NIST頒布新標(biāo)準(zhǔn),規(guī)定DES算法
2、只能用于遺留加密系統(tǒng),但不限制使用DESede算法。當(dāng)今DES算法正是推出歷史舞臺,AES算法稱為他的替代者。(詳見:Java加密解密之對稱加密算法AES)加密原理DES使用一個56位的密鑰以及附加的8位奇偶校驗位,產(chǎn)生最大64位的分組大小。這是一個迭代的分組密碼,使用稱為Feistel的技術(shù),其中將加密的文本塊分成兩半。使用子密鑰對其中一半應(yīng)用循環(huán)功能,然后將輸出與另一半進(jìn)行“異或”運算;接著交換這兩半,這一過程會繼續(xù)下去,但最后一個循環(huán)不交換。DES使用16個循環(huán),使用異或,置換,代換,移位操作四種基本運算。JDK對DES算法的支持密鑰長度:56位工作模式:ECB/CBC/PCBC/CTR
3、/CTS/CFB/CFB8toCFB128/OFB/OBF8toOFB128填充方式:Nopadding/PKCS5Padding/ISO10126Padding/工作模式和填充方式請參考:JAVA加密解密基礎(chǔ)十六進(jìn)制工具類Hex.java,見:javabyte數(shù)組與十六進(jìn)制字符串互轉(zhuǎn)DES加密解密的java實現(xiàn)DESCoder.javaJava代碼1importjava.security.Key;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;importjavax.
4、crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;/初始化密鑰*初始化密鑰*returnbyte密鑰throwsException*/publicstaticbyteinitSecretKey()throwsException/返回生成指定算法的秘密密鑰的KeyGenerator對象KeyGeneratorkg=KeyGenerator.getinstance(KEY_ALGORITHM);/初始化此密鑰生成器,使其具有確定的密鑰大小kg.init(56);/生成一個密鑰SecretKeysecretKey=kg.genera
5、teKey();returnsecretKey.getEncoded();DESCodersecretkeylength:56bit,default:56bitmode:ECB/CBC/PCBC/CTR/CTS/CFB/CFB8toCFB128/0FB/0BF8to0FB128padding:Nopadding/PKCS5Padding/ISO10126Padding/authorAub*/publicclassDESCoder*密鑰算法*/privatestaticfinalStringKEY_ALGORITHM=DES;privatestaticfinalStringDEFAULT_CIP
6、HER_ALGORITHM=DES/ECB/PKCS5Padding.;/privatestaticfinalStringDEFAULT_CIPHER_ALGORITHM=DES/ECB/IS010126Padding;/*轉(zhuǎn)換密鑰paramkey二進(jìn)制密鑰returnKey密鑰throwsException*/privatestaticKeytoKey(bytekey)throwsException/實例化DES密鑰規(guī)則DESKeySpecdks=newDESKeySpec(key);/實例化密鑰工廠SecretKeyFactoryskf=SecretKeyFactory.getInstan
7、ce(KEY_ALGORITHM);/生成密鑰SecretKeysecretKey=skf.generateSecret(dks);returnsecretKey;/*加密paramdata待加密數(shù)據(jù)paramkey密鑰returnbyte加密數(shù)據(jù)throwsException*/publicstaticbyteencrypt(bytedata,Keykey)throwsExceptionreturnencrypt(data,key,DEFAULT_CIPHER_ALGORITHM);/*加密paramdata待加密數(shù)據(jù)paramkey二進(jìn)制密鑰returnbyte加密數(shù)據(jù)throwsExce
8、ption*/publicstaticbyteencrypt(bytedata,bytekey)throwsExceptionreturnencrypt(data,key,DEFAULT_CIPHER_ALGORITHM);/*加密*paramdata待加密數(shù)據(jù)paramkey二進(jìn)制密鑰paramcipherAlgorithm加密算法/工作模式/填充方式returnbyte加密數(shù)據(jù)throwsException*/publicstaticbyteencrypt(bytedata,bytekey,StringcipherAlgorithm)throwsException/還原密鑰Keyk=toK
9、ey(key);returnencrypt(data,k,cipherAlgorithm);/paramdata待解密數(shù)據(jù)paramdata待解密數(shù)據(jù)paramkey二進(jìn)制密鑰returnbyte解密數(shù)據(jù)throwsException*/publicstaticbytedecrypt(bytedata,bytekey)throwsException*加密*paramdata待加密數(shù)據(jù)paramkey密鑰paramcipherAlgorithm加密算法/工作模式/填充方式returnbyte加密數(shù)據(jù)throwsException*/publicstaticbyteencrypt(bytedata
10、,Keykey,StringcipherAlgorithm)throwsException/實例化Ciphercipher=Cipher.getInstance(cipherAlgorithm);使用密鑰初始化,設(shè)置為加密模式cipher.init(Cipher.ENCRYPT_MODE,key);/執(zhí)行操作returncipher.doFinal(data);/*解密returndecrypt(data,key,DEFAULT_CIPHER_ALGORITHM);/paramdata待解密數(shù)據(jù)paramdata待解密數(shù)據(jù)paramkey密鑰paramcipherAlgorithm加密算法/工
11、作模式/填充方式returnbyte解密數(shù)據(jù)throwsException*/publicstaticbytedecrypt(bytedata,Keykey,StringcipherAlgorithm)throwsException/實例化Ciphercipher=Cipher.getinstance(cipherAlgorithm);*解密*paramdata待解密數(shù)據(jù)paramkey密鑰returnbyte解密數(shù)據(jù)throwsException*/publicstaticbytedecrypt(bytedata,Keykey)throwsExceptionreturndecrypt(dat
12、a,key,DEFAULT_CIPHER_ALGORITHM);/*解密*paramdata待解密數(shù)據(jù)paramkey二進(jìn)制密鑰paramcipherAlgorithm加密算法/工作模式/填充方式returnbyte解密數(shù)據(jù)throwsException*/publicstaticbytedecrypt(bytedata,bytekey,StringcipherAlgorithm)throwsException/還原密鑰Keyk=toKey(key);returndecrypt(data,k,cipherAlgorithm);/*解密使用密鑰初始化,設(shè)置為解密模式cipher.init(Cip
13、her.DECRYPT_MODE,key);/執(zhí)行操作returncipher.doFinal(data);privatestaticStringshowByteArray(bytedata)if(null=data)returnnull;StringBuildersb=newStringBuilder();for(byteb:data)sb.append(b).append(,);sb.deleteCharAt(sb.length()-1);sb.append();returnsb.toString();publicstaticvoidmain(Stringargs)throwsExcept
14、ionbytekey=initSecretKey();/bytekey=12345678.getBytes();System.out.println(key:+showByteArray(key);Keyk=toKey(key);Stringdata=DES數(shù)據(jù);System.out.println(加密前數(shù)據(jù):string:+data);System.out.println(加密前數(shù)據(jù):byte:+showByteArray(data.getBytes();System.out.println();byteencryptData=encrypt(data.getBytes(),k);System.out.println(加密后數(shù)據(jù):byte:+showByteArray(encryptData);System.out.pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 提高電動工具使用效率保障員工操作安全
- 提高商業(yè)學(xué)校實驗室安全管理的措施與方法
- 三人合作經(jīng)營企業(yè)合同協(xié)議書2025
- 上海房屋租賃合同范本使用權(quán)轉(zhuǎn)讓協(xié)議
- 專業(yè)合作社經(jīng)營權(quán)轉(zhuǎn)讓合同
- 二級建造師崗位合同范本
- 中藥材種苗合同培育技術(shù)探討
- 個人結(jié)算賬戶權(quán)益與義務(wù)合同2025
- 個人股權(quán)購買合同書
- 產(chǎn)品分銷代理合同
- 2025年新能源汽車銷售傭金返點合同范本6篇
- 2025-2030年中國配電變壓器市場未來發(fā)展趨勢及前景調(diào)研分析報告
- 房地產(chǎn)工程管理 -中建八局機(jī)電工程質(zhì)量通病治理辦法
- GB/T 6403.4-2008零件倒圓與倒角
- GB/T 2518-2019連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
- 企業(yè)合規(guī)管理-課件
- 火電廠安全工作規(guī)程
- GB∕T 33047.1-2016 塑料 聚合物熱重法(TG) 第1部分:通則
- 電力業(yè)務(wù)許可證豁免證明
- 特發(fā)性肺纖維化IPF
- FIDIC國際合同條款中英文對照.doc
評論
0/150
提交評論