DES密钥机制分析-薛仁杰-5011212510资料

上传人:简****9 文档编号:26215855 上传时间:2021-08-07 格式:DOCX 页数:18 大小:154.15KB
收藏 版权申诉 举报 下载
DES密钥机制分析-薛仁杰-5011212510资料_第1页
第1页 / 共18页
DES密钥机制分析-薛仁杰-5011212510资料_第2页
第2页 / 共18页
DES密钥机制分析-薛仁杰-5011212510资料_第3页
第3页 / 共18页
资源描述:

《DES密钥机制分析-薛仁杰-5011212510资料》由会员分享,可在线阅读,更多相关《DES密钥机制分析-薛仁杰-5011212510资料(18页珍藏版)》请在装配图网上搜索。

1、塔里木大学信息工程学院计算机信息安全2017届课程结课论文DES密钥机制分析学生姓名薛仁杰学号5011212510所属学院信息工程学院专业计算机科学与技术班级计算机17-6指导教师李鹏目录摘要 : 1关键词 : 11 概况 11.1 DES 简介 11.2 算法描述 12 . DES 的安全性 63 .DES 的工作模式 63.1 电码本模式( ECB 63.2 密码分组链接模式( CBC 63.3 密文反馈方式(CFB ) 73.4 输出反馈模式(OFB ) 74 代码: 74.1 java 代码 74.2 运行结果 14总结 14参考文献 15塔里木大学信息工程学院塔里木大学信息工程学院摘

2、要 : 现代密码学的发展经过了一个漫长而复杂的过程,在这过程中出现了一系列经典而高效的加密体制。DES作为分组密码的典型代表,对密码学的发展做出了重要的贡献。本 文主要介绍了 DES的概况,并对它的算法进行描述,找出它的设计思想和特点,分析它的安全性。在此基础上,进一步介绍了DES的工作模式。关键词 : 信息安全 DES 加密 解密 明文 密文1 概况1.1 DES 简介随着计算机和通信网络的广泛应用, 信息的安全性已经受到人们的普遍重视。 信息安全已不仅仅局限于政治,军事以及外交领域,而且现在也与人们的日常生活息息相关。现在,密码学理论和技术已得到了迅速的发展, 它是信息科学和技术中的一个重

3、要研究领域。 DES算法是由 IBM 公司在 20世纪 70 年代发展起来的,于 1976 年 11 月被美国政府采用,随后被美国国家标准局和美国国家标准协会承认,同时也成为全球范围内事实上的工业标准。DES 算法作为分组密码的代表, 已成为金融界及其他各种行业广泛应用的对称密钥密码系统。它以feistel 网络结构理论为基础,采用迭代分组形式,在提高算法的运行速度,改善了密码的实用性的同时, 也大大的提高了密码的安全性, 对于我们研究密码学以及展望密码学的发展方向有重要意义。1.2 算法描述DES 使用 56 位密钥对 64 位的数据块进行加密,并对 64 位的数据块进行16 轮编码。在每轮

4、编码中,一个48 位的密钥值由 56 位的“种子”密钥得出来。DES 算法把 64 位的明文输入快变成64 位的密文输出块,整个算法的变换过程如图 1.1所示。图1.1 DES算法框图图中描述的是 DES的加密过程。而解密和加密过程大致相同,不同之处仅在于右边的16个子密钥的使用顺序不同,加密的子密钥的顺序为Ki,K2,-,Ki6,而解密的子密钥的使用顺序则为Ki6K15,,Ki。IP即初始换位的功能是把输入的64位明文数据块按位重新组合,并把输出分为Lo, Ro两部分,每部分各长 32位。其置换规则如表 1.1所示。表1.1 DES算法初始换位规则表5852423426181o26o5244

5、36282o124625446383。221466456484o322416857494133251791595143352719113615345372921135635547393123157即将输入的64位数据的第58位换到第1位,第50位换到第2位依此类推。设置换前的输入值为D1D2-D64,则经过初始换位后的结果为:Lo=D58D5O-D8, R0=D57D49D7。经过初始换位后,将Ro与密钥发生器产生的密钥K1进行计算,其结果记为 f (Ro, K1)再与Lo进行异或运算得到 Lo f (Ro, K3 把Ro记为L1放在左边,把L“(R, KJ记 为R1放在右边,从而完成了第一次

6、迭代运算。连续迭代16次,第16次迭代结果左右不交换,即L15f (R15, K 16)记为R16放在左边,R15记为L 16放在右边。16次迭代后,得到L16, R16。将此作为输入进行逆初始换位IP-1,就可以得到密文输出。逆初始换位正好是初始换位的逆运算。其置换规则如表1.2所示。表1.2 DES算法逆初始换位规则表4o848165624643239747155523633138646145422623o37545135321612936444125220602835343115119592734242105018582633141949175725其置换规则和表1.1所述相似。DES算

7、法的16次迭代具有相同的结构,每一次迭代的运算过程如图1.2所示。图1.2 DES算法的一次迭代过程图在每一次迭代过程中,其核心部分是f函数,即图1.2中的扩展置换、异或运算、S-盒替换和P-盒置换。扩展置换是将32位数据扩展为48位,使其长度与密钥一样。其置换规则如表1.3所示。表1.3扩展置换规则表3212345456789891011121312131415161716171819202120212223242524252627282928293031321P-盒置换规则如表1.4所示。表1.4 P-盒置换规则表16720212912281711523265183110282414322

8、73919133062211425S-盒是DES算法的核心,它的功能是将6位数据变为4位数据,它是一个选择函数,共有8个S函数,其功能表如表 1.5所示。表1.5 S-盒查询功能表S11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S21518146113497213120510313471528141201106911501471110413158126932151381013154211671205149S31009146315511312711428137093

9、461028514121115113649815301112125101471101306987415143115212S47131430691012851112415138115615034721211014910690121171315131452843150610113894511127214S52124171011685315130149141121247131501510398642111101378159125630141181271142136150910453S61211015926801334147511101542712956113140113891415528123704

10、101131164321295151011141760813S4112141508133129751061130117491101435122158614111312371410156805926111381410795015142312S81328461511110931450127115138103741256110149271141912142061013153582114741081315129035611以Si为例,设Si盒6位输入为D=DiD2D3D4D5D6,将DiD6组成的一个2位二进制数转化为十进制数,对应表中行号,将D2D3D4D5组成的一个4位二进制数也转化为十进制数,对

11、应列号,然后在 Si表中差得行和列交叉点处的对应的数,以4位二进制表示,即为 &的输出。图1.3给出了子密钥 Ki (48位)的生成算法。图1.3子密钥产生过程图初始密钥值位64位,但去掉8,16,,64位的奇偶校验位,实际可用位数只有56位。经过置换选择1 (如表1.6所示)后,密钥的位数由 64位变成56位,分为Co,Do两部分, 然后进行第一次循环左移(图中LS),得到D1,合并得到56位,再经置换选择 2 (如表1.7所示),得到密钥K。依此类推,可得到 K3,,K16.每次循环左移的的位数分别是:1,122,22221,2222221表1.6置换选择1Co57494133251791

12、58504234261810259514335271911360524436Do6355473931231576254463830221466153453729211352820124表1.7置换选择21417112415328156211023191242681672720132415231374755304051453348444939563453464250362932以上就完成了 DES的整个加密解密流程。2. DES的安全性20多年来,尽管计算机硬件及破解密码技术的发展日新月异,若撇开DES的密钥太短,易于被使用穷尽密钥搜索法找到密钥的攻击法不谈,目前所知攻击法,如查分攻击法或线性攻

13、击法,对于DES的安全也仅仅做到了 “质疑”的地步,并未从根本上破解DES。当然,对DES的批评也有很多,主要集中在以下几点:(1) DES的密钥长度(56位)可能太少。(2) DES的迭代次数可能太少。(3) S-盒中可能有不安全因素。(4) DES的一些关键部分不应当保密。比较一致的看法是 DES的密钥太短,仅256个,不能抵抗穷尽密钥搜索攻击。事实上也 确实如此,先后有人在较短的时间内就破解了DES。正因为如此,美国政府已经征集评估和判定出了新的数据加密标准 AES以取代DES。尽管如此,DES还是对现代分组密码理论 的发展和应用起了奠基性作用。3.DES的工作模式实际应用中,DES是根

14、据其加密算法所定义的明文分组的大小(64bits),将数据割成若干64bits的加密区块,再以加密区块为单位,分别进行加密处理。根据数据加密时每个 加密区块间的关联方式,可以分为4种加密模式,包括 ECB,CBC,CFB及OFB。3.1 电码本模式(ECB )ECB模式是DES加密的基本工作模式。在ECB模式下,每一个加密区块依次独立加密,产生独立的密文区块,每一加密区块的加密结果不受其他区块的影响。使用此种方式下,可以利用并行处理来加速加密解密运算,且在网络传输时任一区块有任何错误发生,也不会影响到其他区块传输的结果。这是该模式的优点。该模式的缺点是容易暴露明文的数据模式。3.2 密码分组链

15、接模式(CBC )在CBC模式下,第一个加密区块先与初始向量IV做异或运算,再进行加密。其他每个加密区块加密之前,必须与前一个加密区块的密文作一次异或运算,再进行加密。每一个区块的加密结果均会受到前面所有区块内容的影响,所以即使在明文中出现多次相同的明文, 也会产生不同的密文。密文内容若遭剪贴、替换,或在网络传输过程中发生错误,则其后续的密文将被破坏, 无法顺利解密还原,这是这一模式的的优点,也是缺点。第6页共15页塔里木大学信息工程学院在 CBC 模式下, 加密作业无法利用并行处理来加速加密运算, 但其解密运算可以利用并行处理来加速。3.3 密文反馈方式( CFB )在 CFB 模式下, 可

16、以将区块加密算法当作流密码加密器使用, 流密码加密器可以按照实际上的需要, 每次加密区块大小可以自订, 每一个区块的明文与前一个区块加密后的密文做异或后成为密文。 因此, 每一个区块的加密结果受之前所有区块内容的影响, 也会使得在明文中出现多次相同的明文均产生不同的密文。 在此模式下, 位了加密第一个区块, 也必须选择一个初始向量, 且此初始向量必须惟一, 每次加密时必须不一样, 也难以利用并行处理来 加快加密作业。3.4 输出反馈模式( OFB )OFB 与 CFB 大致相同,都是每一个区块的明文与之前区块加密后的结果做异或后产生密文, 不同的是之前区块加密后的结果为独立产生, 每一个区块的

17、加密结果不受之前所有密文区块的内容的影响,如果有区块在传输过程中遗失或发生错误,将不至于无法完全解密,在此模式下, 为了加密第一个区块, 必须设置一个初始向量, 否则难以利用并行处理来加快加密作业。4 代码:4.1 java 代码public class DesUtil byte bytekey;public DesUtil(String strKey) this.bytekey = strKey.getBytes();private static final int IP = 58, 50, 42, 34, 26, 18, 10, 2, 60, 52,44, 36,28, 20, 12, 4

18、,62,54, 46, 38, 30,22, 14, 6, 64, 56, 48,40, 32,24,16, 8, 57,49,41, 33, 25, 17,9, 1, 59, 51, 43, 35,27, 19,11,3, 61, 53,45,37, 29, 21, 13,5, 63, 55, 47, 39, 31,23, 15, 7 ;private static final int IP_1= 40, 8, 48, 16, 56, 24, 64, 32, 39, 7,47, 15,55, 23, 63, 31, 38, 6, 46, 14, 54,22,62,30, 37, 5, 45,

19、13, 53,21,61, 29, 36, 4,44, 12, 52, 20,60,28,35, 3, 43, 11,51, 19,59, 27, 34, 2, 42,10, 50, 18, 58,26,33,1, 41, 9, 49,17, 57, 25 ;private static final int PC_1 = 57, 49, 41, 33, 25, 17, 9, 1, 58, 50,42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44,36, 63,55,47,39, 31, 23, 15, 7, 62,

20、54, 46, 38, 30, 22, 14, 6,61, 53,45,37,29, 21, 13, 5, 28, 20, 12, 4 ;private static finalint PC_2 = 14, 17, 11, 24, 1, 5, 3, 28, 15, 6,21,10, 23,19,12,4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47,55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32 ;private static final i

21、nt E = 32, 1, 2, 3, 4, 5,4, 5, 6,7, 8, 9,8, 9,10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16,17, 18,19, 20,21,20,21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29,28, 29,30, 31,32,1 ;private static final int P = 16, 7, 20, 21, 29, 12, 28, 17, 1,15,23,26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6

22、, 22, 11, 4, 25 ;private static final int S_Box = 14, 4, 13, 1, 2,15, 11, 8, 3, 10, 6,12, 5, 9, 0,7 , 0, 15, 7, 4, 14,2,13, 1, 10, 6, 12,11, 9, 5, 3,8 , 4, 1, 14, 8, 13,6,2, 11, 15, 12, 9,7, 3, 10, 5,0 , 15, 12, 8, 2, 4,9,1, 7, 5, 11, 3, 14, 10, 0, 6, 13 , 15, 1, 8,14, 6, 11, 3,4, 9, 7, 2, 13,12,0,

23、5,10 , 3, 13,4, 7, 15, 2, 8, 14, 12, 0,1,10,6, 9,11, 5 , 0, 14,7, 11, 10, 4,13, 1, 5, 8,12, 6,9, 3,2, 15 , 13, 8,10, 1, 3, 15,4, 2, 11, 6,7,12,0, 5,14, 9 , 10, 0,9,14, 6, 3, 15, 5, 1, 13, 12, 7, 11,4, 2, 8 , 13,7,0, 9, 3, 4, 6, 10,2, 8, 5, 14, 12,11,15, 1 , 13,6, 4, 9, 8, 15, 3, 0,11, 1, 2, 12, 5,10

24、,14, 7 , 1, 10,13, 0, 6, 9, 8, 7,4, 15, 14, 3, 11, 5,2, 12 , 7, 13,14, 3, 0, 6,9, 10,1, 2,8,5,11,12, 4,15 , 13,8,11, 5, 6,15, 0,3, 4,7,2,12,1, 10,14, 9 , 10,6,9, 0, 12,11, 7,13, 15,1,3, 14, 5, 2, 8, 4 , 3, 15,0, 6, 10,1, 13,8, 9,4,5,11,12, 7,2, 14 , 2, 12,4, 1, 7, 10,11,6,8, 5, 3, 15, 13,0, 14, 9 ,

25、14,11, 2, 12, 4, 7,13, 1, 5, 0, 15,10, 3, 9, 8, 6 , 4, 2, 1, 11, 10,13,7,8, 15, 9, 12,5,6, 3, 0, 14 , 11,8, 12, 7, 1,14,2,13, 6, 15, 0,9,10, 4, 5, 3 , 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 , 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8 , 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10,

26、 1, 13, 11, 6 , 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 , 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 , 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6 , 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2 , 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12 , 13, 2, 8,

27、4,6,15, 11, 1,10, 9, 3, 14, 5,0,12,7 , 1, 15,13, 8, 10, 3, 7,4, 12, 5, 6, 11,0,14,9, 2 , 7, 11,4,1,9, 12, 14,2, 0, 6, 10, 13,15, 3,5, 8 , 2, 1, 14,7,4, 10, 8, 13, 15, 12, 9, 0,3,5, 6, 11 ;private static final int LeftMove = 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,2, 2, 2, 1 ;private byte UnitDes(byte des

28、_key, byte des_data, int flag) if (des_key.length != 8) | (des_data.length != 8)| (flag != 1) & (flag != 0) throw new RuntimeException(Data Format Error !);int flags = flag;int keydata = new int64;int encryptdata = new int64;byte EncryptCode = new byte8;int KeyArray = new int1648;keydata = ReadDataT

29、oBirnaryIntArray(des_key);encryptdata = ReadDataToBirnaryIntArray(des_data);KeyInitialize(keydata, KeyArray);EncryptCode = Encrypt(encryptdata, flags, KeyArray);return EncryptCode;private void KeyInitialize(int key, int keyarray) int i;int j;int K0 = new int56;for (i = 0; i 56; i+) K0i = keyPC_1i -

30、1;for (i = 0; i 16; i+) LeftBitMove(K0, LeftMovei);for (j = 0; j 48; j+) keyarrayij = K0PC_2j - 1;private byte Encrypt(int timeData, int flag, int keyarray) int i;byte encrypt = new byte8;int flags = flag;int M = new int64;int MIP_1 = new int64;for (i = 0; i 64; i+) Mi = timeDataIPi - 1;if (flags =

31、1) for (i = 0; i -1; i-) LoopF(M, i, flags, keyarray);for (i = 0; i 64; i+) MIP_1i = MIP_1i - 1;GetEncryptResultOfByteArray(MIP_1, encrypt);return encrypt;private int ReadDataToBirnaryIntArray(byte intdata) int i;int j;int IntDa = new int8;for (i = 0; i 8; i+) IntDai = intdatai;if (IntDai 0) IntDai

32、+= 256;IntDai %= 256;int IntVa = new int64;for (i = 0; i 8; i+) for (j = 0; j 8; j+) IntVa(i * 8) + 7) - j = IntDai % 2;IntDai = IntDai / 2;return IntVa;private void LeftBitMove(int k, int offset) int i;int c0 = new int28;int d0 = new int28;int c1 = new int28;int d1 = new int28;for (i = 0; i 28; i+)

33、 c0i = ki;d0i = ki + 28;if (offset = 1) for (i = 0; i 27; i+) c1i = c0i + 1;d1i = d0i + 1;c127 = c00;d127 = d00; else if (offset = 2) for (i = 0; i 26; i+) c1i = c0i + 2;d1i = d0i + 2;c126 = c00;d126 = d00;c127 = c01;d127 = d01;for (i = 0; i 28; i+) ki = c1i;ki + 28 = d1i;private void LoopF(int M, i

34、nt times, int flag, int keyarray) int i;int j;int L0 = new int32;int R0 = new int32;int L1 = new int32;int R1 = new int32;int RE = new int48;int S = new int86;int sBoxData = new int8;int sValue = new int32;int RP = new int32;for (i = 0; i 32; i+) L0i = Mi;R0i = Mi + 32;for (i = 0; i 48; i+) REi = R0

35、Ei - 1;REi = REi + keyarraytimesi;if (REi = 2) REi = 0;for (i = 0; i 8; i+) for (j = 0; j 6; j+) Sij = RE(i * 6) + j;sBoxDatai = S_Boxi(Si0 1) + Si5(Si1 3)+ (Si2 2) + (Si3 1) + Si4;for (j = 0; j 4; j+) sValue(i * 4) + 3) - j = sBoxDatai % 2;sBoxDatai = sBoxDatai / 2;for (i = 0; i 32; i+) RPi = sV al

36、uePi - 1;L1i = R0i;R1i = L0i + RPi;if (R1i = 2) R1i = 0;if (flag = 0) & (times = 0) | (flag = 1) & (times = 15) Mi = R1i;Mi + 32 = L1i;else Mi = L1i;Mi + 32 = R1i;private void GetEncryptResultOfByteArray(int data, byte value) int i;int j;for (i = 0; i 8; i+) for (j = 0; j 8; j+) valuei += (data(i 3)

37、 + j (7 - j);for (i = 0; i 128) valuei -= 255;private byte ByteDataFormat(byte data, int flag) int len = data.length;int padlen = 8 - (len % 8);int newlen = len + padlen;byte newdata = new bytenewlen;System.arraycopy(data, 0, newdata, 0, len);for (int i = len; i newlen; i+)newdatai = (byte) padlen;r

38、eturn newdata;public byte DesEncrypt(byte des_data, int flag) byte format_key = ByteDataFormat(bytekey, flag);byte format_data = ByteDataFormat(des_data, flag);int datalen = format_data.length;int unitcount = datalen / 8;byte result_data = new bytedatalen;for (int i = 0; i = 1) & (delete_len = 8) ?

39、delete_len : 0;decryptbytearray = new bytetotal_len - delete_len - 8;boolean del_flag = true;for (int k = 0; k delete_len; k+) if (delete_len != result_datatotal_len - 8 - (k + 1) del_flag = false;if (del_flag = true) System.arraycopy(result_data, 0, decryptbytearray, 0, total_len- delete_len - 8);第

40、 13 页 共 15 页塔里木大学信息工程学院return (flag = 1) ? result_data : decryptbytearray;public static void main(String口 args) String key =这是密钥;String data =这是明文;DesUtil desUtil = new DesUtil(key);System.err.println(加密前明文:+ data);byte口 result = desUtil.DesEncrypt(data.getBytes(), 1);System.err.println(加密后密文:+ new

41、String(result);System.err.println(解密后明文:+ new String(desUtil.DesEncrypt(result, 0); 4.2运行结果总结本文的论述是基于 DES算法分析的实现,DES的工作模式,DES的安全性及其应用, 重点对DES对DES算法的流程做一个详细的描述,对算法的数学基础和函数描述也有比较详 细的描述,应用 JAVA语言实现DES的最基本的核心算法,从而对 DESW更深的理解。通过此次学习,不仅使自己对信息安全有了初步了解,同时使自己编程能力有了较大的提高。基本掌握了 JAVA结构化程序设计。并且熟悉掌握了密码学中一个重要的算法一DES密码算法,并且通过 JAVA工具编程实现。但是由于对JAVA的图形用户界面的设计理解不深,编写的窗口无法对时间进行处理, 最终只有放弃编写窗口。第14页共15页塔里木大学信息工程学院第 15 页 共 15 页参考文献1 贺思德计算机网络信息安全与应用2 章照止现代密码学基础3 张焕国等 演化密码引论北京邮电大学出版社2011 年北京邮电大学出版社 2012 年 武汉大学出版社 2010 年4 郝玉洁刘贵松 秦科 晏华 编著 信息安全概论20105 耿祥义张跃平 编著 Java2 实用教程清华大学出版社 20116 雍俊编著 Java 程序设计教程(第 3 版)清华大学出版社 2010

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!