




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机与网络安全课程实验2016年月6月实验一 DES加解密算法的实现一、实验目的及任务:掌握DES加密算法的加解密过程。二、实验环境VC或TC编程环境;主机操作系统为Windows2000或Windows XP;三、 实验原理要深入理解对称加密算法,掌握DES加密过程。具备一定的C语言编程技能。DES( Data DES( Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。DES算法以被应用于许多需要安全加密的场合。(一)、密钥生成1、变换密钥 取得64位的密钥,每个第8位作为奇偶校验位。 2、变换密钥。 (
2、1)、舍弃64位密钥中的奇偶校验位,根据下表(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。 (2)、将变换后的密钥分为两个部分,开始的28位称为C0,最后的28位称为D0。(3)生成16个子密钥,初始I=1。 (i)、同时将CI、DI左移1位或2位,根据I值决定左移的位数。(ii)、将CIDI作为一个整体按下表(PC-2)变换,得到48位的KI (iii)、从1-2-3-1处循环执行,直到K16被计算完成。 (二)、处理64位的数据 1、取得64位的数据,如果数据长度不足64位,应该将其扩展为64位(例如补零) 2、将64位数据按下表变换(IP) 3、将变换后的数据分
3、为两部分,开始的32位称为L0,最后的32位称为R0。4、用16个子密钥加密数据,初始I=1。 (1)、将32位的RI-1按下表(E)扩展为48位的EI-1 (2)、异或EI-1和KI,即EI-1 XOR KI (3)、将异或后的结果分为8个6位长的部分,第1位到第6位称为B1,第7位到第12位称为B2,依此类推,第43位到第48位称为B8。 (4)、按S表变换所有的BJ,初始J=1。所有在S表的值都被当作4位长度处理。 (i)将BJ的第1位和第6位组合为一个2位长度的变量M,M作为在SJ中的行号。 (ii)、将BJ的第2位到第5位组合,作为一个4位长度的变量N,N作为在SJ中的列号。(iii
4、)、用SJMN来取代BJ。 (iv)、从(i)处循环执行,直到B8被替代完成。(5)、将B1到B8组合,按下表(P)变换,得到P。 (6)、异或P和LI-1结果放在RI,即RI=P XOR LI-1。 (7)、LI=RI-1 (8)、从2-4-1处开始循环执行,直到K16被变换完成。 5、组合变换后的R16L16(注意:R作为开始的32位),按下表(IP-1)变换得到最后的结果。 四、 实验步骤利用编程语言实现DES加解密算法。1、 编程2、 调试3、 运行结果4、 存盘五、实验结果加密:Key: 0x30 0x30 0x30 0x30.0x30(8个字节)Data: 0x31 0x31 0x
5、31 0x31.0x31(8个字节)Mode: Encryption结果:65 5e a6 28 cf 62 58 5f解密:Key: 0x31 0x31.0x31(8个0x31)Data: 65 5e a6 28 cf 62 58 5fMode: Decryption结果:0x31 0x31.0x31(8个0x31)六、实验思考题DES算法主要有哪几部分?可以画出流程64位密钥64位明文置换选择初始置换循环左移置换选择16轮加密32位互换逆初始置换一轮迭代过程:28位28位32位32位左移左移扩展/置换XOR置换/压缩代替/选择置换D1C132位32位七、DES源程序#include &qu
6、ot;memory.h"#include "stdio.h"#include <iostream>using namespace std;enum encrypt,decrypt;/ENCRYPT:加密,DECRYPT:解密void des_run(int out8,int in8,bool type=encrypt);/设置密钥void des_setkey(const int key8);static void f_func(bool in32,const bool ki48);/f函数static void s_func(bool out32,c
7、onst bool in48);/s盒代替/变换static void transform(bool *out, bool *in, const int *table, int len);static void trans(bool *out, bool *in);static void XOR(bool *ina, const bool *inb, int len);/异或static void rotatel(bool *in, int len, int loop);/循环左移static void bytetobit1(bool *out,const int *in, int bits)
8、;/位组转换成字节组static void bittobyte1(int *out, const bool *in, int bits);static void bytetobit(bool *out,const int *in,int bits);/置换IP表const static int ip_table64=58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,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,5
9、3,45,37,29,21,13,5,63,55,47,39,31,23,15,7;/逆置换IP-1表const static int ipr_table64=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,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;/E 位选择表static const int e_table48=32
10、,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;/P换位表const static int p_table32=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,11,4,25;/pc1选位表const static int pc1_table56= 57,49
11、,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,54,46,38, 30,22,14,6,61,53,45,37, 29,21,13,5,28,20,12,4;/pc2选位表const static int pc2_table48= 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,4
12、8,44,49,39,56, 34,53,46,42,50,36,29,32;/左移位数表const static int loop_table16=1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1;/S盒const static int s_box8416= /s1 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,
13、 0, 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13, /s2 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 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, /s3 10, 0, 9, 14, 6, 3
14、, 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, 14, 7, 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12, /s4 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, 1
15、0, 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, /s5 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9, 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,
16、 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3, /s6 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, 1, 13, 11, 6, 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13, /s7 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9,
17、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, /s8 13, 2, 8, 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,
18、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;static bool subkey1648;/16圈子密钥void des_run(int out8,int in8, bool type) /for(int i=0;i<8;i+) /printf("%d ",ini); /printf("n"); static bool m64,tmp32,*li=&m0, *ri=&m32; byte
19、tobit1(m,in,64); transform(m,m,ip_table,64); /*for(int i=0;i<8;i+) for(int j=0;j<8;j+) cout<<mi*8+j; cout<<endl; cout<<endl;*/ if(type=encrypt) for(int i=0;i<16;i+) memcpy(tmp,ri,32); f_func(ri,subkeyi); XOR(ri,li,32); memcpy(li,tmp,32); trans(m,m); else trans(m,m); for(in
20、t i=15;i>=0;i-) memcpy(tmp,li,32); f_func(li,subkeyi); XOR(li,ri,32); memcpy(ri,tmp,32); /*for(int i=0;i<8;i+) for(int j=0;j<8;j+) cout<<mi*8+j; cout<<endl; cout<<endl;*/ transform(m,m,ipr_table,64); bittobyte1(out,m,64);void des_setkey(const int key8) static bool k64, *kl
21、=&k0, *kr=&k28; bytetobit1(k,key,64); transform(k,k,pc1_table,56); for(int i=0;i<16;i+) rotatel(kl,28,loop_tablei); rotatel(kr,28,loop_tablei); transform(subkeyi,k,pc2_table,48); void f_func(bool in32,const bool ki48) static bool mr48; transform(mr,in,e_table,48); XOR(mr,ki,48); s_func(in
22、,mr); transform(in,in,p_table,32);void s_func(bool out32,const bool in48) for(int i=0,j,k;i<8;i+,in+=6,out+=4) j=(in0<<1)+in5; k=(in1<<3)+(in2<<2)+(in3<<1)+in4; bytetobit(out,&s_boxijk,4); void transform(bool *out,bool *in,const int *table,int len) static bool tmp256;
23、for(int i=0;i<len;i+) tmpi=intablei-1; memcpy(out,tmp,len);void trans(bool *out, bool *in) bool temp32; memcpy(temp,in,32); memcpy(out,in+32,32); memcpy(out+32,temp,32);void XOR(bool *ina,const bool *inb,int len) for(int i=0;i<len;i+) inai=inbi;void rotatel(bool *in,int len,int loop) static bo
24、ol tmp256; memcpy(tmp,in,loop); memcpy(in,in+loop,len-loop); memcpy(in+len-loop,tmp,loop);void bytetobit(bool *out,const int *in,int bits) for(int i=0;i<bits;i+) outi=(ini/8>>(3-i%8) &1;void bytetobit1(bool *out,const int *in,int bits) for(int i=0;i<bits;i+) outi=(ini/8>>(7-i%8
25、) &1;void bittobyte1(int *out,const bool *in,int bits) memset(out,0,8*sizeof(int); for(int i=0;i<bits;i+) outi/8|=ini<<(7-i%8);int main() int key8,str8; int i; puts("please input your words"); for(i=0;i<8;i+) cin>>hex>>stri; puts("please input your key"
26、;); for(i=0;i<8;i+) cin>>hex>>keyi; printf("n"); des_setkey(key); des_run(str,str,encrypt); puts("after encrypting:"); for(i=0;i<8;i+) cout<<hex<<stri<<" " printf("n"); puts("after decrypting:"); des_run(str,str,de
27、crypt); for(i=0;i<8;i+) cout<<hex<<stri<<" " printf("n"); return 0;实验二 RSA加解密算法的实现一、实验目的及任务:掌握RSA加密算法的加解密过程。二、实验环境VC或TC编程环境;主机操作系统为Windows2000或Windows XP;三、 实验原理RSA加密算法是一种非对称加密算法。在公钥加密标准和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔、(Adi Shami
28、r)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA算法的可靠性基于分解极大的整数是很困难的。假如有人找到一种很快的分解因子的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。1、公钥和私钥的产生假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方
29、式来产生一个公钥和一个密钥:随意选择两个大的质数p和q,p不等于q,计算N=pq。 根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1) 选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1) 用以下这个公式计算d:d× e 1 (mod (p-1)(q-1) 将p和q的记录销毁。 e是公钥,d是私钥。d是秘密的,而N是公众都知道的。Alice将她的公钥传给Bob,而将她的私钥藏起来。2、加密消息假设Bob想给Alice送一个消息m,他知道Alice产生的N和e。他使用起先与Alice约好的格式将m转换为一个小于N的整数n,比如他可以将每一个字转换为这个
30、字的Unicode码,然后将这些数字连在一起组成一个数字。假如他的信息非常长的话,他可以将这个信息分为几段,然后将每一段转换为n。用下面这个公式他可以将n加密为c:计算c并不复杂。Bob算出c后就可以将它传递给Alice。3、解密消息Alice得到Bob的消息c后就可以利用她的密钥d来解码。她可以用以下这个公式来将c转换为n:得到n后,她可以将原来的信息m重新复原。解码的原理是以及ed 1 (mod p-1)和ed 1 (mod q-1)。费马小定理证明和 这说明(因为p和q是不同的质数)四、 实验步骤1、求素数p和q2、求公钥(e,n):e与(n) = (p1)(q1)互质3、求私钥(d,n
31、):d× e 1 (mod (p-1)(q-1)4、加密过程:c=(Me)mod n5、解密过程:m=(Cd)mod n 五、实验结果找两个素数 : p=47 q=59 n=p*q=2773 ,t=(p-1)*(q-1)=2668 寻找 e 满足 e<t 并且 e 和 t 互素,找到 e=63 ,寻找 d 使 e*d%t =1 得到 d=847 1:加密 m 465,得C= 11182:解密C=1118,得m=465六、思考题RSA算法主要有哪几部分? 1、 输入p和q,并求出公钥(e,n):e与(n) = (p1)(q1)互质,再求出私钥(d,n):d× e 1 (
32、mod (p-1)(q-1)。2、加密过程:c=(Me)mod n3、解密过程:m=(Cd)mod n七、RSA源程序#include <iostream>#include <string.h>#include <time.h>#include <stdlib.h>using namespace std;long long gcd(long long a, long long b) while(a!=b) if(a>b) a=a-b; else b=b-a; return a;long long Euclid (long long d,lo
33、ng long f) long long x1=1,x2=0,x3=f; long long y1=0,y2=1,y3=d; long long t1,t2,t3; long long q; while(y3!=0) if(y3=1) break; q=x3/y3; t1=x1-q*y1; t2=x2-q*y2; t3=x3-q*y3; x1=y1; x2=y2; x3=y3; y1=t1; y2=t2; y3=t3; if(y3=1) return y2; else return 0;long long pow(long long a,long long b,long long c) lon
34、g long i; long long k=1; for(i=0;i<b;i+) k=(k%c)*a)%c; return k;int main() long long e,t,p,q,d,n,a,b; long long z100; int k=0,random; cout<<"Please input P&Q:"<<endl; cin>>p>>q; memset(z,0,100*sizeof(long long); t=(p-1)*(q-1); n=p*q; for(e=3;e<t;e+=2) if(g
35、cd(e,t)=1) d=Euclid(e,t); if(d!=0&&d>0&&k<100) zk=e; k+; if(t>400000000) if(k=10) break; else if(k=100) break; srand(unsigned)time(0); random=rand()%k; e=zrandom; d=Euclid(e,t);cout<<"e:"<<e<<endl; cout<<"d:"<<d<<endl;
36、cout<<"Please input a number"<<endl; cin>>a; b=pow(a,e,n); cout<<"Encrypt:"<<b<<endl; b=pow(b,d,n); cout<<"Decrypt:"<<b<<endl;实验三 认证系统的设计与实现一、实验目的及任务1、掌握关系数据库系统的基础知识和基本原理。2、掌握一种关系数据库管理系统,如:SQL Server、Access3、掌握一种软件开发
37、工具,如VC或VB4、掌握计算机网络基础知识及网络数据传输协议:TCP/IP5、能应用VC或VB等开发工具进行Windows Socket编写程序6、掌握一种对称加密算法原理,如:DES,用此算法对数据进行加解密,并能编写程序实现7、掌握一种非对称加密算法原理,如:RSA,用此算法对数据进行加解密,并能编程程序实现8、掌握客户/服务器模式的工作原理9、编程实现认证系统,调试所编程序10、观察程序运行结果二、实验环境1、客户机(普通PC机,安装VC或VB等开发工具) 1台2、服务器(普通PC机,安装VC或VB等开发工具, 关系数据库管理系统SQL Server) 1台三、实验原理随着Intern
38、et的飞速发展,网络安全的地位日益突出。网络的安全措施应是能全方位地针对各种不同的威胁,这样才能确保网络信息的保密性、完整性和可用性。作为安全服务中的一种-实体认证尤为重要。在一个公开的分布式网络环境中,工作站上的用户希望访问分布在网络上的服务器资源。但网络上的资源仅允许授权用户的特定权限的访问,因此,在分布式网络中,必须提供一种机制来对用户的身份进行认证。现在常用的一些认证协议是为TCP/IP网络设计的基于Client/Server模式的三方验证协议,广泛应用于Internet服务的访问,网络中的认证协议服务起着可信仲裁者的作用。认证协议基于对称密码体制或非对称密码体制, 可提供安全的客体认
39、证。用户在客户机上登录,在登录界面上,输入用户名User和密码Password,用户名以正常字符显示,密码以星号显示,为了防止密码在网上传输被窃听者获取,用户输入的密码在客户机上加密Ek(Password),所以在网上传输的是经过加密的用户密码Ek(Password)。由于偷听者不知密钥K,所以即使都到信息Ek(Password),也得不到用户的密码Password服务器接收客户机传输过来的信息,提取用户名User密文Ek(Password),在服务器端对密文解密,Dk(Ek(Password)))= Password,得到用户的密码Password。管理员在服务器数据库中,读出库中存贮的用户
40、名与密码,与接收来的用户名与密码相比较,如果相等,则为合法用户,如果不相等,则为非法用户。流程图如下:(1)基于对称密码体制 客户机端 网络传输 服务器端 Password PasswordDEE K EK(Password) K (a) 常规加密:保密和鉴别(2) 客户机端 网络传输 Password PasswordDEE KUb EKUb(Passwor) KRb (b) 公开密钥加密:保密性此实验只是认识协议的简单模拟,实际应用的网络安全认证协议比此复杂的多,特此说明。可以进一步分析该协议所存在的问题,提出改进方法,并实现。四、实验步骤客户机端:(一):编写程序,实现用户登录界面。(二
41、):编写程序,实现对用户密码的加密 1:选用对称密码算法,如DES假定明文m和密钥k都是64比特的0,1符号串。设m=m1m2m64k=k1k2k64mi,ki=0或1,i=1,2,64加密过程表达如下:DES(m)=IP-1·T16·T15·T2·T1·IP(m)迭代循环次数为16轮,其中T是每轮迭代。 2:选用非对称密码算法,如RSA使用RSA有三个阶段。(1)、RSA阶段1:确定公钥和私钥1)选择两个大素数,P和Q。 2)计算N = P * Q。3)计算f(n) = (P - 1)(Q 1)。4)选择 e,其中 1 < e <
42、 n-1 且 GCD (e, f(n) = 1。5)计算d,其中 ed = 1 mod f(n) (使用扩展的欧几里德算法) 6) (e,n)作为公钥,(d,n)作为私钥。(2)、RSA阶段2:加密信息 为了使用RSA加密消息M,你必须进行下列加密运算:C=Memod n,其中C 是你的密文,发送C。(3)、RSA阶段3:解密信息为了使用RSA解密密文C,你必须进行下列解密运算为:M=Cdmod n ,其中M是你的原始明文。(三):编写客户端网络传输程序实现数据包的传输:Windows Socket编程。服务器端(一):管理员在服务器端建立数据库,存贮用户的用户名User和密码Password
43、,现实中用户都是现场输入。(二) 编写程序,实现对用户密码的加密(三)编写程序,从数据库从读出用户名User和密码Password(四)比较用户输入的密码与数据库中存贮的密码是否相等,如相等,是合法用户,不相等,为非法用户。(五)编写程序,实现对用户密码的加密编写界面程序。以上所有操作均在界面下操作五、实验结果:合法用户通过验证,系统提供服务,不合法用户系统拒绝提供所要求的服务六、实验思考题服务器数据库存贮的是用户的口令,如果攻击者攻击了服务器的数据库系统,获取了用户的口令Password, 则攻击此认证协议成功,有无改进办法?可以在数据库中进行密文存储,这样即使数据库被攻破,攻击者拿到的是加
44、密的数据还需要进一步破解。七、源程序#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow:MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui:MainWindow) ui->setupUi(this); ui->lineEdit->setEchoMode(QLineEdit:Password); sender = new QUdpSocket(this); receiver = new QUdpSock
45、et(this); receiver->bind(QHostAddress:LocalHost,5930); connect(receiver, SIGNAL(readyRead(),this, SLOT(readPendingDatagrams();MainWindow:MainWindow() delete ui;int MainWindow:pow(int a, int b, int n) int i,temp = 1; for(i=0;i<b;i+) temp = (temp*a)%n; return temp;QString MainWindow:key(QString
46、str) QByteArray temp; int n16; int i,e = 41,N = 133; temp = str.toLatin1(); char *name = temp.data(),num4; QString q; for(i=0;i<str.length();i+) ni = namei; ni = MainWindow:pow(ni,e,N); itoa(ni,num,10); if(ni<10) num2 = num0; num1 = '0' num0 = '0' else if(ni<100) num2 = num1
47、; num1 = num0; num0 = '0' num4 = '0' QString p = QString(QLatin1String(num); q += p; free(name); return q;QString MainWindow:unkey(QString str) QByteArray temp; int n16; int i,j,d = 2837,N = 133; temp = str.toLatin1(); char *name = temp.data(),num4,*pname; pname = (char *)malloc(str.length()/3+1)*sizeof(char); for(i=0,j=0;i<str.length();j+,i+) num0 = namei+; num1 = namei+; num2 =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 昆明铁道职业技术学院《小学科学知识与拓展》2023-2024学年第二学期期末试卷
- 执行力和领导力的结合宝典
- 2025年中考物理【热点·重点·难点】专练重难点09 电磁转换中的重要实验(原卷版)
- 2025年的建筑工程合同范本
- 2025商业贷款购房合同范本
- 雇用费合同协议
- 门店股东协议合同协议
- 食用品采购合同协议
- 预付订金定金合同协议
- 中药切片项目商业计划书
- 一种基于STM32的智能门锁系统的设计-毕业论文
- 数车实训图纸
- 砖砌蓄水池施工方案(模板)
- GB/T 38058-2019民用多旋翼无人机系统试验方法
- 湖南省2023年普通高等学校对口招生考试电子电工
- 萘丁美酮课件
- “智慧课堂”展示课教学设计
- 2019阿那亚金山岭中心小镇生活手册
- 丰田通商简介r
- 六氟丙烯安全技术说明书MSDS
- 人体穴位与天体对应解密
评论
0/150
提交评论