版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
河南理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)報(bào)告2014—2015學(xué)年第一學(xué)期課程名稱網(wǎng)絡(luò)安全設(shè)計(jì)題目實(shí)現(xiàn)加解密程序姓名_____________學(xué)號(hào)__________專業(yè)班級(jí)網(wǎng)絡(luò)1203_指導(dǎo)教師________2014年12月目錄1.1設(shè)計(jì)目的21.2設(shè)計(jì)要求22.1設(shè)計(jì)前提22.2關(guān)于DES算法的介紹32.3DES算法原理32.4功能需求33.1系統(tǒng)模塊圖43.2主函數(shù)流程圖43.3內(nèi)部函數(shù)流程圖 54.1程序使用運(yùn)行 55.1關(guān)于對(duì)程序編寫的心得76.1參考文獻(xiàn) 81.1設(shè)計(jì)目的通過課程設(shè)計(jì),使學(xué)生了解高級(jí)程序設(shè)計(jì)語言的結(jié)構(gòu),逐漸培養(yǎng)學(xué)生的編程能力、用計(jì)算機(jī)解決實(shí)際問題的能力,掌握基本的程序設(shè)計(jì)過程和技巧,掌握基本的分析問題和利用計(jì)算機(jī)求解問題的能力,具備初步的高級(jí)語言程序設(shè)計(jì)能力。為后續(xù)各門計(jì)算機(jī)課程的學(xué)習(xí)和畢業(yè)設(shè)計(jì)打下堅(jiān)實(shí)基礎(chǔ)。程序設(shè)計(jì)的主要任務(wù)是要求學(xué)生遵循軟件開發(fā)過程的基本規(guī)范,運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的方法,按照課程設(shè)計(jì)的題目要求,分析、設(shè)計(jì)、編寫、調(diào)試和測(cè)試程序及編寫設(shè)計(jì)報(bào)告。本課程設(shè)計(jì)的目標(biāo):1.鞏固《Java面向?qū)ο蟪绦蛟O(shè)計(jì)》課程學(xué)習(xí)的內(nèi)容和加深學(xué)生對(duì)基本知識(shí)的理解和掌握。同時(shí)加深對(duì)《網(wǎng)絡(luò)信息安全》中的密碼技術(shù)有了更深得理解。2.掌握編程和程序調(diào)試的基本技能。3.掌握軟件設(shè)計(jì)的方法。4.提高運(yùn)用程序設(shè)計(jì)解決實(shí)際問題的能力。5.培養(yǎng)獨(dú)立思考、綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力。6.強(qiáng)化上機(jī)動(dòng)手編程能力,闖過理論與實(shí)踐相結(jié)合的難關(guān)!1.2設(shè)計(jì)要求1.分析課程設(shè)計(jì)題目的要求,根據(jù)所要求的程序功能,畫出程序的流程圖。2.對(duì)系統(tǒng)功能模塊進(jìn)行分析,寫出詳細(xì)設(shè)計(jì)說明文檔。3.對(duì)程序源代碼進(jìn)行調(diào)試與測(cè)試,使其能正確運(yùn)行。4.設(shè)計(jì)完成的軟件要便于操作和使用。5.設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告。2.1設(shè)計(jì)前提通過本學(xué)期對(duì)《網(wǎng)絡(luò)信息安全》這本書的學(xué)習(xí),學(xué)到了很多關(guān)于文件數(shù)據(jù)安全方面的知識(shí),信息化、網(wǎng)絡(luò)化普及的今天,給我們帶來了諸多方便,但隨之而來的安全問題我們不得不重視。這次設(shè)計(jì)題目是簡(jiǎn)單的加密小程序,我是用的是java高級(jí)編程語言來做代碼的實(shí)現(xiàn)。首先要了解加密技術(shù);它是電子商務(wù)采取的主要的安全保密措施,是最常用的安全保密手段,利用技術(shù)可以將數(shù)據(jù)變?yōu)閬y碼進(jìn)行傳送;到達(dá)目的之后再將該文件以同樣的手段進(jìn)行還原也就是解密,其中不會(huì)破壞數(shù)據(jù)的完整性。加密技術(shù)包括兩個(gè)元素:算法和密鑰。算法就是將普通的信息與一串?dāng)?shù)字的結(jié)合,產(chǎn)生不可理解的信息密文的步驟,密鑰是用來對(duì)數(shù)據(jù)進(jìn)行編碼和解碼的一種算法。在安全保密中,可以通過適當(dāng)?shù)拿荑€加密技術(shù)和管理機(jī)制來保證網(wǎng)絡(luò)的信息通訊安全。2.2關(guān)于DES算法的介紹:DES算法是美國(guó)國(guó)家標(biāo)準(zhǔn)局在1973年開始研究除國(guó)防部門外的計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)加密標(biāo)準(zhǔn);于1973年5月提供高質(zhì)量的數(shù)據(jù)保護(hù),防止數(shù)據(jù)未經(jīng)授權(quán)的泄露和未被察覺的修改;具有較高的復(fù)雜性,使得破譯開銷超過可能獲得的利益,同時(shí)又要便于理解和掌握。DES密碼體制的安全性應(yīng)該不依賴算法的保密,其安全性僅以加密密鑰的保密為基礎(chǔ)。實(shí)現(xiàn)經(jīng)濟(jì),運(yùn)行有效并且適用于多種不同的應(yīng)用。1977年1月,美國(guó)政府正式許可以IBM公司設(shè)計(jì)的方案作為非機(jī)密數(shù)據(jù)的數(shù)據(jù)加密標(biāo)準(zhǔn)。DES算法已經(jīng)應(yīng)用于許多需要安全加密的場(chǎng)合,UNIX的密碼保護(hù)算法就是以DES算法為基礎(chǔ)的。2.3.DES算法工作原理DES算法是這樣工作的:如Mode為加密,則用Key去把數(shù)據(jù)Date進(jìn)行加密,生成Date的密碼形式作為DES的輸入結(jié)果;如果Mode為解密,則用Key去把密碼形式的數(shù)據(jù)Date解密,還原為Date的明碼形式作為輸出結(jié)果。在通信網(wǎng)絡(luò)的兩端,雙方約定一致的Key,在通信的源點(diǎn)用Key對(duì)核心數(shù)據(jù)進(jìn)行加密,然后以密碼形式在公共通信網(wǎng)中傳輸?shù)酵ㄐ啪W(wǎng)絡(luò)的終點(diǎn),數(shù)據(jù)到達(dá)目的地后用同樣的Key進(jìn)行解密;再現(xiàn)了核心數(shù)據(jù)。保證了核心數(shù)據(jù)的安全傳輸。簡(jiǎn)單地說,算法只不過是加密的兩個(gè)技術(shù)混亂和擴(kuò)散的組合。DES基本組件分組是這些技術(shù)的一個(gè)組合。它基于密鑰作用于明文,這就是眾所周知的輪。DES有十六輪,這意味著在明文分組上16次實(shí)施相同的組合技術(shù)。DES對(duì)64bit的明文分組進(jìn)行操作。通過一個(gè)初始置換,將明文分為左半部分和右半部分,各長(zhǎng)32bit然后進(jìn)行16輪完全相同的迭代,在迭代過程中數(shù)據(jù)與密鑰結(jié)合。經(jīng)過16輪后,左右部分合在一起經(jīng)過一個(gè)置換,該算法就完成了。DES的算法特點(diǎn):分組比較短,密鑰太短,密碼生命周期短,運(yùn)算速度慢。2.4功能需求1.首先是能夠有可視化的圖形化界面。2.能夠查看選擇本地文件。3.能夠隨機(jī)產(chǎn)生大于等于48位的隨機(jī)密碼。用戶自行輸入也可以。4.能夠?qū)⒓用芎蟮奈募暮缶Y名生成到當(dāng)前文件夾中。5.能夠解密曾經(jīng)加密后的文件。3.1系統(tǒng)模塊圖文件選擇類I/O方法對(duì)象文件選擇類I/O方法對(duì)象系統(tǒng)模系統(tǒng)模塊Random方法Random方法密碼隨機(jī)產(chǎn)生類密碼隨機(jī)產(chǎn)生類DES加密/解密DES加密/解密加密類事件監(jiān)聽器/加密類事件監(jiān)聽器/響應(yīng)器JavaJava中各種api方法解密類解密類3.2主函數(shù)流程圖PublicstaticvoidMain主方法在java主函數(shù)中,通過調(diào)用一個(gè)類中的方法來實(shí)現(xiàn)調(diào)用各個(gè)類方法,體現(xiàn)了PublicstaticvoidMain主方法FileEncrypterFileEncrypter方法show();IOIO讀寫方法類FileFile文件操作方法類ActionListener監(jiān)聽器ActionListener監(jiān)聽器java.awt.Container圖形化界面3.3內(nèi)部函數(shù)流程圖3.3內(nèi)部函數(shù)流程圖開始開始輸入加密碼輸入加密碼輸入解密碼輸入解密碼DES方法解密DES方法加密DES方法解密DES方法加密生成指定后綴名的加密文件生成指定后綴名的加密文件刪除制定后后綴名文件是否繼續(xù)加密?刪除制定后后綴名文件是否繼續(xù)加密?是是否否是是否解密?是是否解密?否結(jié)束否結(jié)束4.1.程序使用運(yùn)行當(dāng)把代碼編譯好之后,點(diǎn)擊運(yùn)行,系統(tǒng)會(huì)彈出如下圖界面,然后根據(jù)說明就可以實(shí)現(xiàn)對(duì)指定的文件進(jìn)行加密了,加密的過程中可以選擇任何類型的文件進(jìn)行加密,既然是加密那么就必須輸入加密密碼,該加密密碼我們?cè)O(shè)置成48位的了,數(shù)字大寫英文字母混合的類型;用戶也可以自行的輸入自己的密碼,記住就可以。然后運(yùn)行加密,這時(shí)會(huì)在這個(gè)文件夾下生成一個(gè)后綴名為.tdes文件;那么這就是你加密后的文件。要解密的話只需要選中改后綴名的文件輸入密碼解密即可。如圖一,運(yùn)行后出現(xiàn)程序界面。圖二,選擇待加密的文件圖三,輸入你的密碼或者隨機(jī)產(chǎn)生圖四,加密成功并生成文件圖五,解密成功5.1關(guān)于對(duì)程序編寫的心得這個(gè)程序看起來挺簡(jiǎn)單的,但對(duì)于對(duì)java語言還是初學(xué)者的我,還是顯得有些難度的。在編寫的過程中,由于粗心經(jīng)常出現(xiàn)一些比較簡(jiǎn)單的錯(cuò)誤,比如遺漏逗號(hào)、雙引號(hào)、小括號(hào),以及項(xiàng)目名稱,從而導(dǎo)致出現(xiàn)亂碼。我是使用的MyEclipse5.0編輯器下編寫調(diào)試的,通過幾次摸索學(xué)習(xí)對(duì)這個(gè)軟件的使用方法逐漸熟練起來,我以前學(xué)過《Java面向?qū)ο蠡A(chǔ)設(shè)計(jì)》這個(gè)課程,當(dāng)時(shí)只是懵懵懂懂的了解一些,知道了什么是多態(tài)什么是繼承,接口,api之類的。這次課程設(shè)計(jì)我覺得可以試試java語言水平了,非常感謝這個(gè)課程設(shè)計(jì),它能夠把我們所學(xué)到的《網(wǎng)絡(luò)信息安全》這門課和所學(xué)的語言深入的結(jié)合,在實(shí)踐中理解了安全的原理以及java代碼的實(shí)現(xiàn)。有時(shí)候會(huì)遇到一些錯(cuò)誤但不知道錯(cuò)在哪,更不知道怎么解決;看著有錯(cuò)的程序,不知該如何改起!但是,通過上網(wǎng)查詢還有在老師、同學(xué)的幫助下,我最終還是完成了程序的編寫。經(jīng)過一個(gè)周的網(wǎng)絡(luò)安全課程設(shè)計(jì),我認(rèn)識(shí)到編程是一項(xiàng)很慎密的工作,來不得一點(diǎn)馬虎,否則就會(huì)給編程工作帶來很多不必要的麻煩。這次的課程設(shè)計(jì)加深了我對(duì)java語言的理解,也了解了加密算法的一些原理和使用方法。并且提高了我查閱相關(guān)參考資料和獨(dú)立分析解決問題以及自己上機(jī)動(dòng)手的能力。課程設(shè)計(jì)為學(xué)生提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來,鍛煉學(xué)生的分析解決實(shí)際問題的能力。應(yīng)實(shí)際,實(shí)踐編程的能力。6.1參考文件:《網(wǎng)絡(luò)信息安全》安葳鵬劉沛騫主編《Java基礎(chǔ)程序設(shè)計(jì)》吳正江主編百度百科附錄一、源代碼:ernal.ws.api.server.Container;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;importjava.security.*;importjavax.crypto.*;importjavax.crypto.spec.*;publicclassFileEncrypterextendsJFrame{ publicstaticfinalintWIDTH=550; publicstaticfinalintHEIGHT=200; publicstaticvoidmain(Stringargs[]){ FileEncrypterfe=newFileEncrypter(); fe.show();} FileEncrypter(){ this.setSize(WIDTH,HEIGHT); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); this.setTitle("文件加密器(TriDES)"); java.awt.Containerc=this.getContentPane(); c.setLayout(newFlowLayout());finalFilePanelfp=newFilePanel("文件選擇"); c.add(fp); finalKeyPanelpp=newKeyPanel("密碼"); c.add(pp);JButtonjbE=newJButton("加密"); c.add(jbE); jbE.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){ Filefile=newFile(fp.getFileName()); if(file.exists())encrypt(file.getAbsoluteFile(),pp.getKey()); else JOptionPane.showMessageDialog(null,"請(qǐng)選擇文件!","提示", JOptionPane.OK_OPTION); } }); JButtonjbD=newJButton("解密"); c.add(jbD); jbD.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventevent){ Filefile=newFile(fp.getFileName()); if(file.exists
()) decrypt(file.getAbsoluteFile(),pp.getKey()); else
JOptionPane.showMessageDialog(null,"請(qǐng)選擇文件!
","提示", JOptionPane.OK_OPTION); } }); } /** *加密函數(shù)輸入:要加密的文件,密碼(由
0-F組成,共48個(gè)字符,表示3個(gè)8位的密碼)如: *AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746
其中:AD67EA2F3BE6E5AD *DES密碼一D368DFE03120B5DFDES密碼二92A8FD8FEC2F0746DES密碼三輸出: *對(duì)輸入的文件加密后,保存到同一文件夾下增加了".tdes"擴(kuò)展名的文件中。 */ privatevoidencrypt(FilefileIn,String
sKey){ try{ if(sKey.length()==48)
{byte[]bytK1=getKeyByStr(sKey.substring(0,16));byte[]bytK2=getKeyByStr(sKey.substring(16,32));byte[]bytK3=getKeyByStr(sKey.substring(32,48));FileInputStreamfis=newFileInputStream(fileIn);byte[]bytIn=newbyte[(int)fileIn.length()];for(inti=0;i<fileIn.length();i++){ bytIn[i]=(byte)fis.read(); } //加密byte[]bytOut=encryptByDES(encryptByDES(encryptByDES(bytIn, bytK1),bytK2),bytK3);StringfileOut=fileIn.getPath()+".tdes";FileOutputStreamfos=newFileOutputStream(fileOut); for(inti=0;i<bytOut.length;i++){ fos.write((int)bytOut[i]); } fos.close(); JOptionPane.showMessageDialog(this,"加密成功!","提示", JOptionPane.OK_OPTION); }else JOptionPane.showMessageDialog(this,"密碼長(zhǎng)度必須等于48!","錯(cuò)誤信息" JOptionPane.ERROR_MESSAGE); }catch(Exceptione){ e.printStackTrace(); } } /** *解密函數(shù)輸入:要解密的文件,密碼(由
0-F組成,共48個(gè)字符,表示3個(gè)8位的密碼)如: *
AD67EA2F3BE6E5ADD368DFE03120B5DF92A8FD8FEC2F0746
其中:AD67EA2F3BE6E5AD *DES密碼一D368DFE03120B5DFDES密碼二
92A8FD8FEC2F0746DES密碼三輸出: *對(duì)輸入的文件解密后,保存到用戶指定的文件中。 */ privatevoiddecrypt(FilefileIn,String
sKey){ try{ if(sKey.length()==48)
{ StringstrPath=
fileIn.getPath(); if(strPath.substring(strPath.length()-
5).toLowerCase()
.equals(".tdes")) strPath=strPath.substring(0,strPath.length()-5); else{
JOptionPane.showMessageDialog(this,"不是合法的加密文件!","提示",
JOptionPane.OK_OPTION); return; } JFileChooser
chooser=newJFileChooser();chooser.setCurrentDirectory(newFile("."));chooser.setSelectedFile(newFile(strPath)); //用戶指定要保存
的文件 intret=chooser.showSaveDialog(this); if(ret==
JFileChooser.APPROVE_OPTION){byte[]bytK1=getKeyByStr(sKey.substring(0,16));byte[]bytK2=getKeyByStr(sKey.substring(16,32));byte[]bytK3=getKeyByStr(sKey.substring(32,48)); FileInputStreamfis=newFileInputStream(fileIn);byte[]bytIn=newbyte[(int)fileIn.length()];for(inti=0;i<fileIn.length();i++){ bytIn[i]=(byte)fis.read(); } //解密 byte[]
bytOut=decryptByDES(decryptByDES(decryptByDES(
bytIn,bytK3),bytK2),bytK1); File
fileOut=chooser.getSelectedFile();
fileOut.createNewFile();
FileOutputStreamfos=newFileOutputStream
(fileOut); for(int
i=0;i<bytOut.length;i++){ fos.write((int)bytOut[i]); } fos.close();
JOptionPane.showMessageDialog(this,"解密成功!","提示",JOptionPane.OK_OPTION); } }else JOptionPane.showMessageDialog(this,"密碼長(zhǎng)度必須
等于48!","錯(cuò)誤信息",
JOptionPane.ERROR_MESSAGE); }catch(Exceptione){
JOptionPane.showMessageDialog(this,"解密失敗,請(qǐng)
核對(duì)密碼!","提示",
JOptionPane.OK_OPTION); } } /** *用DES方法加密輸入的字節(jié)bytKey需為8字
節(jié)長(zhǎng),是加密的密碼 */ privatebyte[]encryptByDES(byte[]bytP,
byte[]bytKey)throwsException{ DESKeySpecdesKS=new
DESKeySpec(bytKey); SecretKeyFactoryskf=
SecretKeyFactory.getInstance("DES"); SecretKeysk=
skf.generateSecret(desKS); Ciphercip=Cipher.getInstance
("DES"); cip.init(Cipher.ENCRYPT_MODE,
sk); returncip.doFinal(bytP); } /** *用DES方法解密輸入的字節(jié)bytKey需為8字
節(jié)長(zhǎng),是解密的密碼 */ privatebyte[]decryptByDES(byte[]bytE,
byte[]bytKey)throwsException{ DESKeySpecdesKS=new
DESKeySpec(bytKey); SecretKeyFactoryskf=
SecretKeyFactory.getInstance("DES"); SecretKeysk=
skf.generateSecret(desKS); Ciphercip=Cipher.getInstance
("DES"); cip.init(Cipher.DECRYPT_MODE,
sk); returncip.doFinal(bytE); } /** *輸入密碼的字符形式,返回字節(jié)數(shù)組形式。
如輸入字符串:AD67EA2F3BE6E5AD返回字節(jié)數(shù)組:{ *173,103,234,47,59,230,229,173} */ privatebyte[]getKeyByStr(Stringstr){ byte[]bRet=newbyte
[str.length()/2]; for(inti=0;i<str.length()
/2;i++){ Integeritg=new
Integer(16*getChrInt(str.charAt(2*i)) +
getChrInt(str.charAt(2*i+1))); bRet[i]=itg.byteValue
(); } returnbRet; } /** *計(jì)算一個(gè)16進(jìn)制字符的10進(jìn)制值輸入:0-F */ privateintgetChrInt(charchr){ intiRet=0; if(chr=="0".charAt(0)) iRet=0; if(chr=="1".charAt(0)) iRet=1; if(chr=="2".charAt(0)) iRet=2; if(chr=="3".charAt(0)) iRet=3; if(chr=="4".charAt(0)) iRet=4; if(chr=="5".charAt(0)) iRet=5; if(chr=="6".charAt(0)) iRet=6; if(chr=="7".charAt(0)) iRet=7; if(chr=="8".charAt(0)) iRet=8; if(chr=="9".charAt(0)) iRet=9; if(chr=="A".charAt(0)) iRet=10; if(chr=="B".charAt(0)) iRet=11; if(chr=="C".charAt(0)) iRet=12; if(chr=="D".charAt(0)) iRet=13; if(chr=="E".charAt(0)) iRet=14; if(chr=="F".charAt(0)) iRet=15; returniRet; }}/***文件選擇組件。*/classFilePanelextendsJPanel{ FilePanel(Stringstr){ JLabellabel=newJLabel(str); JTextFieldfileText=new
JTextField(35); JButtonchooseButton=new
JButton("瀏覽..."); this.add(label); this.add(fileText); this.add(chooseButton); clickActionca=new
clickAction(this); chooseButton.addActionListener
(ca); } publicStringgetFileName(){ JTextFieldjtf=(JTextField)
this.getComponent(1); returnjtf.getText(); } privateclassclickActionimplements
ActionListener{ clickAction(Componentc){ cmpt=c; } publicvoidactionPerformed
(ActionEventevent){ JFileChooserchooser=
newJFileChooser();
chooser.setCurrentDirectory(newFile(".")); intret=
chooser.showOpenDialog(cmpt); if(ret==
JFileChooser.APPROVE_OPTION){ JPaneljp=
(JPanel)cmpt; JTextFieldjtf=
(JTextField)jp.getComponent(1); jtf.setText
(chooser.getSelectedFile().getPath()); } } privateComponentcmpt; }}/***密碼生成組件。*/classKeyPanelextendsJPanel{ KeyPanel(Stringstr){ JLabellabel=newJLabel(str); JTextFieldfileText=new
JTextField(35); JButtonchooseButton=new
JButton("隨機(jī)產(chǎn)生"); this.add(label); this.add(fileText); this.add(chooseButton); clickActionca=new
clickAction(this); chooseButton.addActionListener
(ca); } //返回生成的密碼(48個(gè)字符長(zhǎng)度) publicStringgetKey(){ JTextFieldjtf=(JTextField)
this.getComponent(1); returnjtf.getText(); } privateclassclickActionimplements
ActionListener{ clickAction(Componentc){ cmpt=c; } publicvoidactionPerformed
(ActionEventevent){ try{ KeyGeneratorkg
=KeyGenerator.getInstance("DES"); kg.init(56); Keyke=
kg.generateKey(); byte[]bytK
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2021年陜西省咸陽市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2022年甘肅省天水市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年高速公路建設(shè)征地協(xié)議3篇
- 2024年苗木采購、種植及養(yǎng)護(hù)一體化服務(wù)協(xié)議3篇
- 2024年跨國(guó)產(chǎn)品代理協(xié)議
- 2024水污染治理設(shè)施運(yùn)營(yíng)承包合同
- 2023-2024年檢驗(yàn)類之臨床醫(yī)學(xué)檢驗(yàn)技術(shù)(中級(jí))試題及答案二
- 2022年中考化學(xué)模擬卷2(南京專用)
- 2024版新婚姻法的協(xié)議離婚規(guī)定
- 2022年中級(jí)茶藝師試題(含答案)
- 齊魯名家 談方論藥智慧樹知到期末考試答案2024年
- 小學(xué)六年級(jí)數(shù)學(xué)100道題解分?jǐn)?shù)方程
- 南京工業(yè)大學(xué)橋梁工程課程設(shè)計(jì)
- 閱讀題賒小雞
- 中國(guó)風(fēng)圍棋對(duì)弈雅致文藝教育培訓(xùn)活動(dòng)策劃版
- 鋼管購銷合同
- 基于51單片機(jī)的簡(jiǎn)易計(jì)算器時(shí)間顯示(LCD1602顯示)
- 2022國(guó)開大學(xué)電大??啤掇r(nóng)科基礎(chǔ)化學(xué)》期末試題及答案
- 《眼睛結(jié)構(gòu)與功能》PPT課件.ppt
- 村委會(huì)實(shí)虛線信紙.
- GB∕T 39757-2021 建筑施工機(jī)械與設(shè)備 混凝土泵和泵車安全使用規(guī)程
評(píng)論
0/150
提交評(píng)論