des算法課程設計_第1頁
已閱讀1頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  摘 要</b></p><p>  隨著計算機的應用和網(wǎng)絡技術的不斷發(fā)展,網(wǎng)絡間的通訊量不斷的加大,人們的個人信息、網(wǎng)絡間的文件傳遞、電子商務等方面都需要大力的保護,文件加密技術也就隨之產(chǎn)生。文件的加密主要是由加密算法實現(xiàn),加密算法有多種,常見的有RSA、DES、MD5等。本程序設計對文件的加密使用的是DES加密算法。</p><p>

2、;  DES是分塊加密的。DES用軟件進行解碼需要用很長時間,而用硬件解碼速度非???,1977年,人們估計要耗資兩千萬美元才能建成一個專門計算機用于DES的解密,而且需要12個小時的破解才能得到結果。所以,當時DES被認為是一種十分強壯的加密方法。但今天, 只需 二十萬美元就可以制造一臺破譯DES的特殊的計算機,所以現(xiàn)在 DES 對要求“強壯”加密的場合已經(jīng)不再適用了。</p><p>  Java語言具有簡單、

3、安全、可移植、面向對象、健壯、多線程、體系結構中立、解釋執(zhí)行、高性能、分布式和動態(tài)等主要特點。利用Java語言中秘密密鑰工廠對DES算法的支持,使程序實現(xiàn)文件加密、解密兩大功能更簡單。</p><p>  本程序設計所采用的就是DES算法。同時利用Java的GUI編程,生成文本對話框,對文件的路徑進行選擇、提供密鑰框、加密和解密按鈕。</p><p>  使用本程序可以對txt,word等

4、多種文件進行加密解密,使用便捷實用,功能完善,滿足了用戶對文件安全性的需求。</p><p>  關鍵詞:JAVA , DES, 加密, 解密。</p><p><b>  目 錄</b></p><p><b>  1題目分析1</b></p><p>  1.1課程設計的要求和內容1&l

5、t;/p><p>  1.2 DES算法描述1</p><p><b>  2概要設計3</b></p><p>  2.1抽象數(shù)據(jù)類型的定義3</p><p>  2.1.1 程序所需要引入的包3</p><p>  2.1.2 其他定義3</p><p>  2.

6、2主程序流程圖4</p><p>  2.3各程序模塊之間的層次(調用)關系4</p><p><b>  3詳細設計6</b></p><p>  3.1 窗體的設計與實現(xiàn)6</p><p>  3.2文件導入模塊8</p><p>  4測試分析與結果9</p>&l

7、t;p>  4.1. 測試結果9</p><p>  4.1.1運行程序9</p><p><b>  4.1.2加密9</b></p><p>  4.1.3解密11</p><p><b>  總 結13</b></p><p><b> 

8、 參考文獻14</b></p><p><b>  附 錄15</b></p><p><b>  1題目分析</b></p><p>  1.1課程設計的要求和內容</p><p><b>  基本要求:</b></p><p>  

9、1.利用某種加密算法對指定的文本文件進行加密(應判斷其是否已經(jīng)加密,若已加密則結束該步驟,否則提示輸入加密口令,對文件進行加密);</p><p>  2.加密解密方法:本設計采用DES加密算法。</p><p>  3.還應該提供解密功能。</p><p>  1.2 DES算法描述</p><p>  DES ( data encrypt

10、ion Standard) 是一種世界標準的加密形式,已經(jīng)15 年歷史了,雖然有些老,可還算是比較可靠的算法。在七十的初期, 隨著計算機之間的通信發(fā)展, 需要有一種標準密碼算法為了限制不同算法的激增使它們之間不能互相對話。為解決這個問題, 美國國家安全局(N.S.A ) 進行招標。 I.B.M 公司開發(fā)了一種算法, 稱為:Lucifer。 經(jīng)過幾年的研討和修改, 這種算法, 成為了今天的D.E.S,1976 年11月23 日, 終于被美

11、國國家安全局采用。</p><p>  DES是一種分組加密算法,他以64位為分組對數(shù)據(jù)加密。64位一組的明文從算法的一端 輸入,64位的密文從另一端輸出。DES是一個對稱算法:加密和解密用的是同一個算法(除密鑰編排不同以外)。 </p><p>  密鑰的長度為56位(密鑰通常表示為64位的數(shù),但每個第8位都用作奇偶檢驗,可以忽 略)。密鑰可以是任意的56位數(shù),且可以在任意的時候改變。&

12、lt;/p><p>  DES算法的入口參數(shù)有3個:Key,Data,Mode。其中Key為8個字節(jié)共64位,是DES算法 的工作密鑰;Data也為8個字節(jié)64位,是要被加密或解密的數(shù)據(jù):Mode為DES的工作方式,有兩種:加密或解密。 </p><p>  DES算法的工作過程:若Mode為加密,則用Key對數(shù)據(jù)Data進行加密,生成Data的密碼 形式(64位)作為DES的輸出結果;若Mo

13、de為解密,則用Key對密碼形式的數(shù)據(jù)Data解密,還 原為Data的明碼形式(64位)作為DES的輸出結果。 </p><p>  在通信網(wǎng)絡的兩端,雙方約定了一致的Key,在通信的源點用Key對核心數(shù)據(jù)進行DES加密 ,然后以密碼形式通過公共通信網(wǎng)(如電話網(wǎng))傳輸?shù)酵ㄐ啪W(wǎng)絡的終點,數(shù)據(jù)達到目的 地后,用同樣的Key對密碼數(shù)據(jù)進行解密,便再現(xiàn)了明碼形式的核心數(shù)據(jù)。這樣便保證了核 心數(shù)據(jù)(如PIN,MAC等)在公

14、共通信網(wǎng)中傳輸?shù)陌踩院涂煽啃?。通過定期在通信網(wǎng)絡的源 端和目的端同時改用新的Key,便能更進一步提高數(shù)據(jù)的保密性,這正是現(xiàn)在金融界交易網(wǎng)絡的流行作法。 </p><p>  隨著計算機網(wǎng)絡的發(fā)展,加密技術也在迅速的發(fā)展中,加密解密技術的實現(xiàn)主要靠性能好的加密算法,而DES就是在實踐中被證明的很好的算法,目前此算法已被廣泛運用,且在使用中有了一些改進,DES算法給網(wǎng)絡文件帶來了可靠的安全性保證。</p>

15、;<p><b>  2概要設計</b></p><p>  2.1抽象數(shù)據(jù)類型的定義</p><p>  2.1.1 程序所需要引入的包</p><p>  import java.awt.*; //包含用于創(chuàng)建用戶界面和繪制圖形圖像的所有類。</p><p>  import ja

16、va.awt.event.*; //提供處理由 AWT 組件所激發(fā)的各類事件的接口和類。</p><p>  import javax.swing.*; //提供一組“輕量級”(全部是 Java 語言)組件,盡量讓這些組件在所有平臺上的工作方式都相同。</p><p>  import java.io.*; //通過數(shù)據(jù)流、序列化和文件系統(tǒng)提供

17、系統(tǒng)輸入和輸出。</p><p>  2.1.2 其他定義</p><p>  new BorderLayout() 對文件加密器對話框采用BorderLayout管理器。</p><p>  new ActionListener() 對文件的加密和解密設置事件監(jiān)聽器。</p><p>  new ButtonGroup

18、() 定義一個按鈕組。</p><p>  new JRadioButton() 將此按鈕設置為屬于一個按鈕組的成員。</p><p>  new FileInputStream() 建立文件輸入流以便進行文件的讀操作,取其數(shù)據(jù)</p><p>  new FileOutputStream() 建立文件輸出流以便將數(shù)據(jù)寫入文件&

19、lt;/p><p>  shu1 用整形數(shù)據(jù)保存該密鑰。2.2主程序流程圖</p><p><b>  圖2 主程序流程圖</b></p><p>  2.3各程序模塊之間的層次(調用)關系</p><p><b>  模塊定義</b></p>&

20、lt;p><b>  (1)主函數(shù)模塊:</b></p><p>  生成加密器框體;獲取數(shù)據(jù)的輸入;調用加密或解密函數(shù)。</p><p><b>  (2)加密模塊:</b></p><p>  判斷密鑰是否合法和文件是否已加密,啟動加密操作,顯示操作結果,并在與源文件同一文件夾下生成密文。</p>

21、<p>  (3)加密操作模塊:</p><p>  用DES方法加密輸入的字節(jié)并返回。</p><p><b>  (4)解密模塊:</b></p><p>  判斷密鑰是否合法,啟動解密操作,顯示操作結果,并在指定的文件路徑下生成明文。</p><p>  (5)解密操作模塊:</p><

22、;p>  用DES方法解密輸入的字節(jié)并返回。</p><p><b>  3詳細設計</b></p><p>  3.1 窗體的設計與實現(xiàn)</p><p>  窗體的總體布局包含按鈕、畫布、文本框、標簽等,合理分布達到視覺的美感。</p><p><b>  代碼實現(xiàn):</b></p&g

23、t;<p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import java.io.*;</p><p>  import javax.swing.*;</p><p>  public class key加密 extends JFrame

24、 {</p><p><b>  int shu1;</b></p><p>  JLabel jl1,jl2;</p><p>  String cc;</p><p>  JButton queding, xuanz, jiami, jiemi;</p><p>  JTextField lu

25、jin,key;</p><p>  JTextArea nr;</p><p>  JRadioButton qu,xie;</p><p>  ButtonGroup fz;</p><p><b>  File f;</b></p><p>  public key加密(){</p&g

26、t;<p>  Container c = getContentPane();</p><p>  JPanel jp1 = new JPanel();</p><p>  jl1 = new JLabel("輸入路徑");</p><p>  lujin = new JTextField(15);</p><p

27、>  xuanz = new JButton("選擇");</p><p>  jp1.add(jl1);</p><p>  jp1.add(lujin);</p><p>  jp1.add(xuanz);</p><p>  c.add(jp1, BorderLayout.NORTH);</p>

28、<p>  nr = new JTextArea();</p><p>  c.add(new JScrollPane(nr), BorderLayout.CENTER);</p><p>  qu = new JRadioButton("寫入");</p><p>  xie = new JRadioButton("取出&q

29、uot;, true);</p><p>  fz = new ButtonGroup();</p><p>  fz.add(qu);</p><p>  fz.add(xie);</p><p>  jl2 = new JLabel("密鑰");</p><p>  key = new JTex

30、tField(15);</p><p>  jiami = new JButton("加密");</p><p>  jiemi = new JButton("解密");</p><p>  JPanel jp4 = new JPanel();</p><p>  jp4.setLayout(new G

31、ridLayout(2, 1, 5, 5));</p><p>  JPanel jp2 = new JPanel();</p><p>  jp2.add(jl2);</p><p>  jp2.add(key);</p><p>  jp2.add(jiami);</p><p>  jp2.add(jiemi);

32、</p><p>  jp4.add(jp2);</p><p>  JPanel jp3 = new JPanel();</p><p>  queding = new JButton("確定");</p><p>  jp3.add(qu);</p><p>  jp3.add(xie);<

33、;/p><p>  jp3.add(queding);</p><p>  jp4.add(jp3);</p><p>  c.add(jp4, BorderLayout.SOUTH);</p><p>  queding.addActionListener(new ActionListener() {</p><p> 

34、 public void actionPerformed(ActionEvent event) {</p><p><b>  jian();</b></p><p>  if (qu.isSelected())</p><p><b>  shuchu();</b></p><p>  if (x

35、ie.isSelected())</p><p><b>  qu();</b></p><p><b>  }</b></p><p><b>  });</b></p><p><b>  3.2文件導入模塊</b></p><p&

36、gt;  實現(xiàn)目標文件的導入,通過選擇按鈕導入加密或解密的文件。</p><p>  xuanz.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent event) {</p><p>  JFileChooser fileChooser

37、= new JFileChooser(); // 實例化文件選擇器</p><p>  fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 設置文件選擇模式,此處為文件和目錄均可</p><p>  if(fileChooser.showOpenDialog</p><p>

38、;  (key加密.this)==JFileChooser.APPROVE_OPTION) { // 彈出文件選擇器,并判斷是否點擊了打開按鈕</p><p>  String fileName=fileChooser.getSelectedFile().getAbsolutePath(); // 得到選擇文件或目錄的絕對路徑</p><p>  lujin.setText(fileNam

39、e); </p><p><b>  } </b></p><p><b>  } </b></p><p><b>  }); </b></p><p><b>  4測試分析與結果</b></p><p><b>  

40、4.1. 測試結果</b></p><p><b>  4.1.1運行程序</b></p><p>  首先在我機器E盤文件夾名為java1的文件夾離創(chuàng)建一個名為Example.doc文檔用做測試。</p><p>  圖4-1-1運行程序</p><p>  運行程序彈出如圖4-1-1對話框,然后進行文件選

41、擇</p><p><b>  4.1.2加密</b></p><p>  圖 4-1-2選擇加密文件</p><p>  根據(jù)需求,選擇所要加密文件的路徑,并打開選取文件</p><p>  圖4-1-3 選取文件,在文本區(qū)中寫入要加密的內容并單擊加密按鈕</p><p>  圖4-1-4 該文

42、件已被</p><p><b>  4.1.3解密</b></p><p>  解密操作中對文件選擇,密碼輸入和加密操作是一樣的。</p><p>  圖4-1-5 選擇要解密的文件</p><p>  圖4-1-6 輸入密碼進行文件解密</p><p>  圖4-1-7點擊解密按鈕,得到明文&l

43、t;/p><p><b>  總 結</b></p><p>  在本次課程設計過程中,本人主要是負責窗體設計與實現(xiàn)和目標文件的導入模塊設計。通過本組三個人的分工協(xié)作,完成了課程設計。在完成設計期間,我通過不斷網(wǎng)上搜集和查找有關書集和相關加密算法的介紹,進行認真而細致的學習,進而完成了此次課程設計模塊的完成。通過本次設計我們也較深入的了解了DES這個加密算法的原理與

44、作用。</p><p>  通過本次設計,我意識到了無論身在何處,團隊的事情遠遠大于個人的事情。學會團隊合作才是未來在工作中實現(xiàn)自身價值的必備條件。我想課程設計的目的,并不僅僅讓我們能把任務完成吧。大概也有讓我們積極合作,團結奮進的意思吧。不管怎么說,我是在意識上還是在知識上都有了不小的提高。懂得了,只有細心的做好每一個步驟,才能醞釀一個完美的結局。</p><p>  本次課程設計得到了

45、xx老師的精心指導,在老師的指點下和小組成員的共同努力下,一一克服細節(jié)上的所有問題,并讓它成為合格的設計。讓本次任務順順利利的完成,在此謝謝xx老師的教導。</p><p><b>  參考文獻</b></p><p>  [1] 謝希仁.計算機網(wǎng)絡教程.北京: 人民郵電出版社,2006. </p><p>  

46、[2] 耿祥義.Java2使用教程: 清華大學出版社,2006. </p><p>  [3] 方敏,張彤.網(wǎng)絡應用程序設計.西安:電子科技大學出版社,2005. </p><p>  [4] 黃超.Windows下的網(wǎng)絡編程.北京:人民郵電出版社,2003. </p><p><b>  附 錄</b

47、></p><p>  程序實現(xiàn)Java源代碼</p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p><p>  import java.io.*;</p><p>  import javax.swing.*;</p>

48、<p>  public class key加密 extends JFrame {</p><p><b>  int shu1;</b></p><p>  JLabel jl1, jl2;</p><p>  String cc;</p><p>  JButton queding, xuanz, ji

49、ami, jiemi;</p><p>  JTextField lujin, key;</p><p>  JTextArea nr;</p><p>  JRadioButton qu, xie;</p><p>  ButtonGroup fz;</p><p><b>  File f;</b&

50、gt;</p><p>  public key加密(){</p><p>  Container c = getContentPane();</p><p>  JPanel jp1 = new JPanel();</p><p>  jl1 = new JLabel("輸入路徑");</p><p&

51、gt;  lujin = new JTextField(15);</p><p>  xuanz = new JButton("選擇");</p><p>  jp1.add(jl1);</p><p>  jp1.add(lujin);</p><p>  jp1.add(xuanz);</p><p

52、>  c.add(jp1, BorderLayout.NORTH);</p><p>  nr = new JTextArea();</p><p>  c.add(new JScrollPane(nr), BorderLayout.CENTER);</p><p>  qu = new JRadioButton("寫入");</p&

53、gt;<p>  xie = new JRadioButton("取出", true);</p><p>  fz = new ButtonGroup();</p><p>  fz.add(qu);</p><p>  fz.add(xie);</p><p>  jl2 = new JLabel(&quo

54、t;密鑰");</p><p>  key = new JTextField(15);</p><p>  jiami = new JButton("加密");</p><p>  jiemi = new JButton("解密");</p><p>  JPanel jp4 = new JP

55、anel();</p><p>  jp4.setLayout(new GridLayout(2, 1, 5, 5));</p><p>  JPanel jp2 = new JPanel();</p><p>  jp2.add(jl2);</p><p>  jp2.add(key);</p><p>  jp2.

56、add(jiami);</p><p>  jp2.add(jiemi);</p><p>  jp4.add(jp2);</p><p>  JPanel jp3 = new JPanel();</p><p>  queding = new JButton("確定");</p><p>  jp

57、3.add(qu);</p><p>  jp3.add(xie);</p><p>  jp3.add(queding);</p><p>  jp4.add(jp3);</p><p>  c.add(jp4, BorderLayout.SOUTH);</p><p>  queding.addActionList

58、ener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent event) {</p><p><b>  jian();</b></p><p>  if (qu.isSelected())</p><p><b>

59、  shuchu();</b></p><p>  if (xie.isSelected())</p><p><b>  qu();</b></p><p><b>  }});</b></p><p>  xuanz.addActionListener(new ActionListe

60、ner() {</p><p>  public void actionPerformed(ActionEvent event) {</p><p>  JFileChooser fileChooser = new JFileChooser(); // 實例化文件選擇器</p><p>  fileChooser.setFileSelectionMode(JFile

61、Chooser.FILES_AND_DIRECTORIES); // 設置文件選擇模式,此處為文件和目錄均可</p><p>  if(fileChooser.showOpenDialog</p><p>  (key加密.this) == JFileChooser.APPROVE_OPTION) { // 彈出文件選擇器,并判斷是否點擊了打開按鈕</p><p>

62、  String fileName=fileChooser.getSelectedFile().getAbsolutePath(); // 得到選擇文件或目錄的絕對路徑</p><p>  lujin.setText(fileName); </p><p><b>  }</b></p><p><b>  }});</b>

63、;</p><p>  jiemi.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent event) {</p><p>  ObjectInputStream input;</p><p><b>  

64、try {</b></p><p>  input = new ObjectInputStream(new FileInputStream(lujin.getText()));</p><p>  int mima = Integer.parseInt(key.getText());</p><p>  AA ac = (AA) input.readOb

65、ject();</p><p>  if (ac.getShu() == mima) {</p><p>  nr.setText(ac.cc);</p><p><b>  shuchu();</b></p><p><b>  } else {</b></p><p> 

66、 nr.setText("錯誤的key");</p><p><b>  }</b></p><p>  } catch (Exception e) {</p><p>  // e.printStackTrace();</p><p>  nr.setText("無法解密");&

67、lt;/p><p><b>  }}});</b></p><p>  jiami.addActionListener(new ActionListener() {</p><p>  public void actionPerformed(ActionEvent event) {</p><p>  AA a = new

68、AA(nr.getText());</p><p>  key.setText(a.shu + "");</p><p><b>  try {</b></p><p>  ObjectOutputStream output = new ObjectOutputStream(</p><p>  ne

69、w FileOutputStream(lujin.getText()));</p><p>  output.writeObject(a);</p><p>  output.flush();</p><p>  output.close();</p><p><b>  qu();</b></p><

70、;p><b>  baocun();</b></p><p>  } catch (Exception e) {</p><p>  // e.printStackTrace();</p><p>  nr.setText("必須選擇加密文件保存地址,文件不存在或者無法加密文件,加密文件不能含有換行");</p&

71、gt;<p><b>  }}});</b></p><p>  setSize(380, 350);</p><p>  setVisible(true);</p><p><b>  }</b></p><p>  public void jian() {</p>&

72、lt;p>  f = new File(lujin.getText());</p><p><b>  try {</b></p><p>  f.createNewFile();</p><p>  } catch (IOException e) {</p><p>  JOptionPane.showMessa

73、geDialog(null, "路徑錯誤");</p><p><b>  }}</b></p><p>  public void shuchu() {</p><p><b>  try {</b></p><p>  FileOutputStream out = new F

74、ileOutputStream(f);</p><p>  byte buf[] = nr.getText().getBytes();</p><p><b>  try {</b></p><p>  out.write(buf);</p><p>  out.flush();</p><p>

75、  out.close();</p><p>  } catch (IOException e) {</p><p>  // e.printStackTrace();</p><p><b>  }</b></p><p>  } catch (FileNotFoundException e) {</p>

76、<p>  // e.printStackTrace();</p><p><b>  }}</b></p><p>  public void qu() {</p><p><b>  try {</b></p><p>  FileInputStream in = new FileI

77、nputStream(f);</p><p>  int a = (int) f.length();</p><p>  byte buf[] = new byte[a];</p><p><b>  try {</b></p><p>  int len = in.read(buf);</p><p

78、>  if (len == -1)</p><p>  System.out.println("文件為空");</p><p><b>  else</b></p><p>  nr.setText(new String(buf, 0, len));</p><p>  } catch (IOE

79、xception e) {</p><p>  // e.printStackTrace();</p><p><b>  }</b></p><p>  } catch (FileNotFoundException e) {</p><p>  // e.printStackTrace();</p>&l

80、t;p><b>  }}</b></p><p>  public static void main(String arge[]) {</p><p>  key加密 s = new key加密();</p><p>  s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p>

81、<p><b>  }</b></p><p>  public String mzi() {</p><p>  String ccc = "";</p><p>  int zu[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };</p><p>  for (in

82、t i = 0; i < 6; i++) {</p><p>  int second = (int) (Math.random() * 9);</p><p>  ccc += zu[second];</p><p><b>  }</b></p><p>  return ccc;</p><

83、;p><b>  }</b></p><p>  public void baocun() {</p><p>  AA a = new AA();</p><p>  shu1 = a.getShu();</p><p>  a.shu = shu1;</p><p><b> 

84、 }}</b></p><p>  class AA implements Serializable {</p><p>  String cc;</p><p>  public int shu;</p><p>  public AA() {</p><p><b>  }</b>

85、</p><p>  public int getShu() {</p><p>  return shu;</p><p><b>  }</b></p><p>  public void setShu(int shu) {</p><p>  this.shu = shu;</p>

86、;<p><b>  }</b></p><p>  public AA(String a) {</p><p><b>  cc = a;</b></p><p>  int zu[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };</p><p>  for (i

87、nt i = 0; i < 1000; i++) {</p><p>  int second = (int) (Math.random() * 9);</p><p>  shu += zu[second];</p><p><b>  }</b></p><p><b>  }}</b>&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論