之前接触过一点网络空间安全相关的东西,做了一些笔记,简单分享一下。

基于C#的“密码学”实验演示系统的设计与实现

摘 要:针对密码学课程复杂、抽象、学习难度很大的问题,设计和实现了基于C#的密码学实验演示系统。系统实现了密码学知识的介绍,并实现了用DES 算法、RSA 算法、移位代换算法、置换密码算法、MD5 算法等算法进行加密和解密的演示。测试及应用结果表明,该系统具有常用加密算法的加密解密演示功能,对于密码学课程学习和相关内容的研究具有一定的帮助。

实验演示系统由于其直观性、交互性、动态性等优势,能够提供学生的学习兴趣和效果,因此开发对应课程的实验演示系统有重要的意义。

密码学课程概述

密码学是信息安全专业最重要的基础课程之一,在很多高校都设有单独的密码学专业。密码学研究范围包括编制密码和破译密码两个部分。其中用来编制密码,保证通信安全的是编码学;用来破译密码,截获相关通信内容的被称作破译学,二者的总称是密码学。大学密码学课程主要讲授古典密码学、分组密码学、公钥密码学、密钥分配与管理、信息认证和杂凑算法、数字签名,以及网络加密与认证等内容。

系统的设计与实现

2.1 功能设计

首先为了体现整个演示系统的完整性,在系统的开始利用窗体程序添加了登录界面和欢迎界面,并且在最后添加了退出界面。其次在核心的加密算法功能的设计和实现上面采用了窗体复用技术,即在一个窗体上实现对所有算法的演示链接,这样的设计能够让用户方便直观的体验系统的同时能够对不同的加密算法有一个对比,加深对密码学加密算法的了解和认识。整个系统包括登录界面、对密码学知识的介绍、对称加密算法DES算法的加密和解密、非对称加密算法RSA算法加密和解密、以哈希算法为基础的MD5算法、移位代换算法和置换密码算法等的演示。其主要功能如图1所示。

整个系统的模块部分除了基础的登录模块,欢迎模块和退出模块之外,还包含了一个对加密知识的拓展模块和五个不同加密算法的演示模块。

⑴ 加密知识拓展模块:设计该模块的主要目的是让用户在使用演示系统相关的功能之前,对一些与加密解密相关的基础知识有一定的了解。

⑵ DES算法演示:DES算法是一种典型的对称加密算法。基于C#的密码学实验演示系统仅选择对典型的对称加密算法DES算法进行演示,演示的内容包括对文字信息的加密/解密,以及对本地的文件通过相同的密钥进行加密和解密。

⑶ RSA算法演示:RSA算法属于非对称加密算法的一种。基于C#的密码学实验演示系统选择进行演示的非对称加密算法是目前在密码学中影响力比较大的RSA算法。介绍RSA算法实现的理论基础及其优缺点,并且对加密解密过程进行了具体的演示。

⑷ MD5算法演示:MD5算法是一种利用哈希函数实现的加密算法。该算法不同于上面所介绍的DES算法和RSA算法,MD5算法只能是信息加密进行加密,因此可以配合不对成加密用作数学签名,来校检信息在传递的过程中是否被修改。系统演示一个密钥对一份加密内容会产生惟一的一个哈希值,并且输出加密后的密文。

⑸ 移位代换算法演示:本系统演示的移位代换算法也称为凯撒密码,这是一种最为古老的加密体制。凯撒密码所采用的基本思想是通过把需要加密的内容中的字母向前或向后移动一定的位数,将其变换成其他的字幕来达到加密的目的,由此可见,这种加密算法只能对字母进行加密。在本系统中只设计了向后移动操作。

⑹ 置换密码演示:置换密码算法同上述的移位代换算法同属于古典密码学内容,其加密原理是不改变明文字符内容,只是把明文字符的一段短语作为密钥短语,根据密钥短语的位数和短语中各字母的先后顺序排序,同时构建以密钥短语长度为列数的二维数组,对应着密钥短语的下方将明文一一存入数组,按照密钥短语中各字母对应列的顺序纵向读出数组即为加密后的密文。本系统对这种算法提供了基本的简介,同时提供了能够实现该算法的例子。

2.2 关键技术

本演示系统采用的是C#的WinForm窗体做的主体,整个系统涉及的关键技术主要有Form窗体的传值、WinForm窗体复用技术、文件加密技术以及对C#相关的加密解密方法。

⑴ Form窗体的传值。C#不同的窗体间传递数据,通常可以通过四种方式:通过公共静态变量、使用共有属性、使用委托与事件和通过构造函数把主窗体传递到从窗体中。本系统使用的是最后的那种使用委托与事件,并通过构造函数把主窗体传递到从窗体中。先在主窗体中设置一个button按钮,通过点击按钮进入到设置的Click事件,生成一个新的Form类,然后使用“show()”方法显示新的窗体即可。

⑵ WinForm窗体复用技术。为了整个系统的集成度更高,在系统中采用了WinForm窗体复用技术,即在一个大的窗体里多个小的窗体同时存在,互不干加密算法的特点及其实现过程。本系统是在主窗体中设置一个TabContol控件,并且在这个控件中设置了六个TabPage实现不同窗体间的共存,方便用户对比选择演示不同的加密算法。

⑶ 文件的加密解密技术。不同于一般的加密算法只能够对一段信息进行加密,本系统演示的DES算法可以对本地文件进行加密和解密。要做到这一步首先要提取加密文件的路径,然后读取本地的加密文件通过8位的密钥对本地文件加密,最后再保存到本地。

注:参考文献:蔡增玉,刘消南,马琳琳,甘 勇,尚志会 . 基于C#的“密码学”实验演示系统的设计与实现 [J]. 计算机时代,2017,(1):57-59

.NET下的RSA编程

摘要:本文介绍了公钥密码系统中目前最广泛流行的RSA算法技术,并在此基础上用c语言在NET平台下编写一个RSA算法程序。重点讨论了一个RSA算法实现加密解密功能软件在NET平台的设计与实现

1引言

随着信息化社会的发展,信息在社会中的地位和作用越来越重要,每个人的生活都与信息的产生、存储、处理和传递密切相关.信息的安全与保密问题成了人人都关心的事情。由于目前的网络系统缺乏足够的安全性。不能有效防止网络上所传输的信息被非法窃取和修改,因而极大地限制了计算机网络技术在日常工作中的应用。正因为如此.信息安全技术得到极大发展。其中.信息安全的核心是密码技术。密码技术不仅能够保证机密性信息的加密.而且能够实现数字签名、身份验证、系统安全等功能。它是现代化发展的重要科学之一。

2RSA算法

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法.从提出到现在已二十多年.经历了各种攻击的考验,逐渐为人们接受.普遍认为是目前最优秀的公钥密码系统方案之一。

2.1公钥密码系统

公钥密码的观点是美国斯坦福大学的两名学者Diffie和Hellman于1976年在他们的论文“密码学的新方向”一文中首次提出的。

公钥密码系统是计算复杂性理论发展的必然产物.它解决了私钥密码系统的缺陷问题——通信双方在进行保密通信之前需要安全通道传送密钥。而公钥密码系统可以使通信双方无须事先传送密钥就可以建立保密通信。

公钥密码系统应用了模运算和简单的数论.这样就能够构造出两个不同的密钥。其中一个用于加密,另一个用于解密。尽管两个密钥彼此在数学上是紧密联系的,但是只知道其中一个密钥而想确定另一个密钥却很困难。

公钥密码系统的主要目的是提供保密性,它不能提供数据源认证和数据完整性。

2.2RSA算法简介

1978年,RonRivest、AdiShamir和LeonardAdleman设计了RSA密码响应1)ifile和Hellman提出的新思想。RSA算法是一个基于数论的非对称密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字母。它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。(现在出现了量子计算机可以解密)

RSA系统是公钥系统的最具有典型意义的方法.大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。目前该算法已广泛用于因特网和银行信用安全系统。

2.3RSA算法原理

RSA工作原理是这样的,首先随机的生成一个公钥和私钥对,通常在密码术中,随机生成的密钥对十分重要.所以生成密钥对的方式可能无法预测.接着.用RSA算法根据生成的公钥来加密数据.最后用生成的私钥解密被加密的数据.并且验证解密后的结果与原始数据相同。值得注意的是,公钥用于加密,而私钥用于解密。这样就能实现机密性。

RSA算法具体步骤如下:

互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者的特殊情形。

(1)任意选取两个不同的大质数P和q,计算乘积r==p*q;

(2)任意选取一个大整数e,e与(p一1)*(q一1)互质,整数e用做加密密钥。注意:e的选取是很容易的,例如。所有大于P和q的质数都可用:

(3)确定解密密钥d:d*e=lmodulo(p-1)(q-1)根据e、P和q可以容易地计算出d;

(4)公开整数r和e,但是不公开d

(5)将明文P(假设P是小于r的整数)加密为密文C,计算方法为:C=Pemodulor:

(6)将密文C解密为明文P,计算方法为:P=Cdmodulor。

然而只根据r和e(不是P和q)要计算出d是不可能的。因此.任何人都可对明文进行加密.但只有授权用户(知道d)才可对密文解密

2.4RSA算法优缺点

2.4.1优点

(1)RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。

(2)RSA算法的加密密钥和加密算法分开.使得密钥分配更为方便。

(3)RSA算法解决了大量网络用户密钥管理的难题,这是公钥密码系统相对于对称密码系统最突出的优点。

2.4.2缺点

(1)RSA算法产生密钥很麻烦,因为受到了素数产生技术的限制。

(2)RSA算法的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。

(3)RSA算法加密的速度太慢,因为RSA的分组长度太大,为了保证安全性,n至少也要600bits以上,这使得运算代价很高,尤其是速度较慢,通常比对称密码算法慢几个数量级

3编写RSA算法程序

介绍在.NET环境下编写RSA算法程序

编写此程序时使用了RSACrypt0SeⅣicePmvider具体类,这个类位于抽象的AsvmmetricAlgorithm类下面。

RSACryptoServiceProvider类中有个Encrypt(加密)的方法,该方法使用了两个参数,第一个参数是含有要加密的字节数组,第二个参数是指示填充模式的布尔数(boolean)。Encrypt方法的语法如下:

Publicbyte[]Encrypt(byte[]rgb,boolfOAEP);

与Encrypt方法互补的方法是Decrypt(解密),Decrypt方法中第一个参数是含有要解密密文的字节数组.第二个参数与Encrypt

方法中的第二个参数一样。Decrypt方法的语法如下:

Publicbyte[]Decrypt(byte[]rgb,boolfOAEP1);

整个程序的界面如图2:

在窗体顶部的是RSA所需要的4个参数,点击新建RSA参数可以重新生成,在明文的文本框中输入想要加密的内容,然后单击加密按钮,此时会显示密文结果。再单击解密按钮,在窗体底部的字段中会显示被恢复的明文。当然,被恢复的明文应当与原始的明文相同。比如:输入明文“.NET下的RSA编程”,运行程序后,结果如图2所示。下面具体介绍程序代码。

首先介绍生成RSA参数的GenerateNewRSAParams方法在每次单击“新建RSA参数”按钮时会调用GenerateNewRSAParams方法。GenerateNewRSAParams方法只是创建一个RSACryptoServiceProvider类对象.通过调用RSA类的ExportParameters方法存储公开和私有的RSA参数。这些RSA参数实际存储在两个字段中,一个是rsaParamsExcludePrivate,它只存储公开的RSA参数,另一个是rsaParamsIncludePrivate,它存储公开和私有的RSA参数。在GenerateNewRSAParams方法中ExportParameters方法被调用了两次。如果参数为真,说明要存储所有密钥参数信息,包括私钥信息;反之为假,只存储公钥信息。这些说明了加密只需要使用公钥信息,但是解密需要公钥和私钥信息,这正是非对称密码的重点。

下面是GenerateNewRSAParams方法的代码:

Private void GenerateNewRSAParams()

{//establish RSA asymmetric algorithm建立RSA非对称算法

//新建RSACryptoServiceProvider类对象

RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();

//provide public and private RSAparams产生公有私有RSA参数

rsaParamsIncludePrivate=rsa.ExportParameters(true);

//provide public only RSAparams只存储公钥信息

rsaParamsExcludePrivate=rsa.ExportParameters(false);

当用户单击加密按钮时,会调用buttonEncrypt_Click方法。它创建RSACryptoServicePr0vider类的一个实例。通过调用ImportParameters方法,使存储的公钥信息对这个新实例进行初始化。接下来,从存放明文信息的字节数组plainbytes中得到明文。最后,执行加密方法。此时,buttonEncrypt_Clickci方法返回一个叫pherbytes的实例字段,该字段数组要被传送给解密方法。

下面是buttonEncryptClick方法的代码:

Private void buttonEncrypt_Click(object sender,System.EventArgs e)

{

//establish RSA using parameters from encrypt使用来自加密的参数建立RSA

RSACryptoServiceProvider rsa=new RSACryptoServiceProvider();

//import public only RSA parameters for encrypt只导入用于加密的RSA参数

Rsa.ImportParameters(rsaParamsExcludePrivate);

//read plaintext,encrypt it to ciphertext读取明文,将其加密为密文

byte[] plainbytes=Encoding.UTF8.GetBytes(textPlaintext.Text);

cipherbytes=rsa.Encrypt( plainbytes,false);

}

当用户单击解密按钮时,可调用buttonDecrypt_Click方法。同样,该方法也会创建一个RSA对象。首先调用对象的ImportParameters方法,所以该对象重新装入的信息包括公开和私有的RSA密钥信息;然后,通过解密方法可得到明文。下面是buttonDecrypt_Click方法的代码:

Private void button Decrypt_Click(Object sender,System.EventArgs e)

{

//establish RSA using parameters from encrypt使用来自加密的参数建立RSA

RSACryptoServiceProvider rsa=newRSACryptoServiceProvider();

//import public and private RSA parameters导入公共和私有的RSA参数rsa.ImportParameters(rsaParamslncludePrivate);

//read ciphertext,decrypt it to plaintext读取密文,将其解密为明文

byte[] plainbytes=rsa.Decrypt(cipherbytes,false);}

学习小结:虽然本文依然是在学习RSA加密算法,对其介绍原理和之前的学习有一些重复,但目的是力求寻找一个最符合我自己思维的解释,也可以对此算法原理更加了解,另外这篇文章还加入了实现部分,介绍到实现还是很完整的,值得我反复学习的。

注:参考文献:施鸣.NET下的RSA编[J].网络通讯与安全,:2006(11):36-38

各种密码学算法的C# GUI编程实现

算法介绍

1. DES

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法。

DES基本原则(对称加密算法体系中的代表)

DES设计中使用了分组密码设计的两个原则:混淆(confusion)和扩散(diffusion),其目的是抗击敌手对密码系统的统计分析。混淆是使密文的统计特性与密钥的取值之间的关系尽可能复杂化,以使密钥和明文以及密文之间的依赖性对密码分析者来说是无法利用的。扩散的作用就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中,以便在大量的密文中消除明文的统计结构,并且使每一位密钥的影响尽可能迅速地扩展到较多的密文位中,以防对密钥进行逐段破译。

DES算法步骤

DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位(实际用到了56位,第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1),其算法主要分为两步:

1)初始置换

其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7。

其置换规则见下表:

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,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7,

2)逆置换 经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。此算法是对称加密算法体系中的代表,在计算机网络系统中广泛使用。

DES密钥太短,已经能被现代计算机暴力破解!

2. AES

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

设计思想

Rijndael密码的设计力求满足以下3条标准:

抵抗所有已知的攻击
在多个平台上速度快,编码紧凑
设计简单

AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。AES加密有很多轮的重复和变换。

AES加密步骤

AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。(Rijndael加密法因支持更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:

  1. AddRoundKey — 矩阵中的每一个字节都与该次轮秘钥(round key)做XOR运算;每个子密钥由密钥生成方案产生
  2. SubBytes — 通过非线性的替换函数,用查找表的方式把每个字节替换成对应的字节
  3. ShiftRows — 将矩阵中的每个横列进行循环式移位
  4. MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节

最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代.

3. Present

在CHES2007上,Bogdanov等提出了PRESENT算法,该算法具有出色的硬件实现性能和简洁的轮函数设计。PRESENT密码算法与现有的轻量级分组密码算法TEA、MCRYPTON、HIGHT、SEA和CGEN相比,有着更简单的硬件实现,因此被称为超轻量级密码算法。

Present加密步骤

PRESENT分组密码算法采用SPN结构,分组长度为64位,支持80位、128位两种密钥长度。共迭代31轮,每轮轮函数F 由轮密钥加、S盒代换、P置换3部分组成。

加密过程如下:

  1. 轮密钥加:64bit 轮输入同轮密钥进行异或
  2. S 盒代换层:将轮密钥加64bit 输出查找16 个4 进4 出的S 盒
  3. P 置换层:通过置换表P(i)对S 盒代换64bit 输出按比特进行重新排列

为提高算法安全性,PRESENT 在第31 轮后使用64bit 密钥K32 进行后期白化操作

4. 扩展欧几里得算法

乘法逆元的定义

A * X MOD N == 1则称X为A关于模N的乘法逆元。

注:只有两个数互素的时候才会有乘法逆元
两个数不互素是没有乘法逆元的

5. 素性检测算法(Miller-Robin)

定义一个数是素数(也叫质数),当且仅当它的约数只有两个——1和它本身。规定这两个约数不能相同,因此1不是素数。对素数的研究属于数论范畴,你可以 看到许多数学家没事就想出一些符合某种性质的素数并称它为某某某素数。

素数性质

  1. 素数的个数无限多(不存在最大的素数)
  2. 存在任意长的一段连续数,其中的所有数都是合数(相邻素数之间的间隔任意大)
  3. 所有大于2的素数都可以唯一地表示成两个平方数之差
  4. 当n为大于2的整数时,2^n+1和2^n-1两个数中,如果其中一个数是素数,那么另一个数一定是合数
  5. 如果p是素数,a是小于p的正整数,那么a^(p-1) mod p=1

Miller-Robin

算法是基于费马小定理(format),二次探测定理(x*x%p==1 ,若P为素数,则x的解只能是x=1或者x=p-1)加上迭代乘法判断的Miller算法共同构成的。

  • 费尔马小定理

如果p是一个素数,且0<a<p,则a^(p-1)%p=1。利用费尔马小定理,对于给定的整数n,可以设计素数判定算法,通过计算d=a^(n-1)%n来判断n的素性,当d!=1时,n肯定不是素数,当d=1时,n很可能是素数

  • 二次探测定理

如果p是一个素数,且0<x<p,则方程x^2%p=1的解为x=1或x=p-1。利用二次探测定理,可以再利用费尔马小定理计算a^(n-1)%n的过程中增加对整数n的二次探测,一旦发现违背二次探测条件,即得出n不是素数的结论

参考文献:知乎文章原文链接

https://zhuanlan.zhihu.com/p/66727228?utm_source=wechat_session&utm_medium=social&utm_oi=744524732103151616

基于C#的“密码学”实验演示系统的设计与实现、.NET下的RSA编程、各种密码学算法的C# GUI编程实现相关推荐

  1. matlab演示系统,基于Matlab的通信原理演示系统的设计与应用

    基于 Matlab的通信原理演示系统的设计与应用 李 强 , 明 艳 , 吴坤君 (重庆邮电大学 通信学院 , 重庆 400065) 摘 要 : 利用 Matlab图形用户界面的开发环境和强大的通信仿 ...

  2. matlab创新开放性实验,基于MATLAB 的自动控制原理实验仿真系统的设计

    基于MATLAB 的自动控制原理实验仿真系统的设计 基于MATLAB 的自动控制原理实验仿真系统的设计 田晴,张茁 (河北联合大学电气工程学院,河北唐山063000) 摘要:MATLAB的图形用户界面 ...

  3. 计算机毕业设计ssm基于web的暗香小店系统的设计与实现80041系统+程序+源码+lw+远程部署

    计算机毕业设计ssm基于web的暗香小店系统的设计与实现80041系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于web的暗香小店系统的设计与实现80041系统+程序+源码+lw+远程部署 ...

  4. 基于Java毕业设计幼儿校园通系统的设计与实现源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计幼儿校园通系统的设计与实现源码+系统+mysql+lw文档+部署软件 基于Java毕业设计幼儿校园通系统的设计与实现源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目 ...

  5. java计算机毕业设计基于Web的社区商超系统的设计与实现源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计基于Web的社区商超系统的设计与实现源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于Web的社区商超系统的设计与实现源码+数据库+系统+lw文档 ...

  6. 基于Java毕业设计蛋糕店会员系统的设计与实现源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计蛋糕店会员系统的设计与实现源码+系统+mysql+lw文档+部署软件 基于Java毕业设计蛋糕店会员系统的设计与实现源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目 ...

  7. 基于WEB的精品课程远程教学系统的设计与实现

    一.课题任务与目的 <基于WEB的精品课程远程教学系统的设计与实现>毕业设计(论文),主要研究的是对网上教学系统的相关问题. 通过对Microsoft SQL Server 2008架设平 ...

  8. 【基于物联网的智能草莓种植系统的设计与实现系列教程】8.项目整体验证(课程设计、毕设项目、树莓派、yolov5、物联网)

    [基于物联网的智能草莓种植系统]BH1750 光照度传感器验证与参考代码 项目各章节跳转 树莓派环境说明 硬件连接 猜你需要 项目各章节跳转 可点击跳转到对应章节 ==> 努力更新中... 0. ...

  9. 【毕业设计】基于SSM的网络在线考试系统的设计与实现

    文章目录 前言 1 课题描述 2 相关技术 3 系统需求分析 3.1 功能需求分析 3.1.1 学生端: 3.1.2 超级管理员端: 3.1.3 试题管理员端(老师): 4 系统设计框架 4.1 系统 ...

  10. 定时采用ajax方式获得数据库,《基于Ajax的在线客服系统的设计与实现》-毕业设计论文(学术).doc...

    PAGE 2 西安文理学院 数学与计算机工程学院 本科毕业设计(论文) (2012届) 设计题目 基于Ajax的在线客服系统的设计与实现 Design And Implementation Of On ...

最新文章

  1. 我靠这份无人机完全指南吹了一整年牛!
  2. 解决: is not accessible from java.lang.Class android.app.AppComponentFactory
  3. Ubuntu 16.04 LTS今日发布
  4. xcode 8   去除无用打印信息
  5. 通过ribbon 根据服务名获取所有服务实例的IP和端口列表
  6. C# winform bin文件夹、obj文件夹、Properties文件夹下分别存放什么文件?
  7. VS.NET调试问题
  8. 自如总部摘牌?官方回应:更换logo 业务一切正常
  9. JS中var、let、const区别? 用3句话概括
  10. 高效 遍历 算法_一文学会回溯算法解题技巧
  11. Mac 开机没声音了?只需 2 招关闭/恢复Mac开机音效「咚」
  12. Verilog CIC 滤波器设计(代码自取)
  13. 最速下降法matlab全局最小值_最速下降法+Matlab代码
  14. ps6人脸识别液化工具在哪_ps液化工具在哪
  15. PDF文件如何旋转后保存
  16. 你的网名OUT了吗?盘点那些曾经超in的网名
  17. 无人驾驶——激光雷达篇
  18. 【接口篇 / Lan】(5.4) ❀ 02. 与交换机连接 (回程路由) ❀ FortiGate 防火墙
  19. Java实现谷歌验证器
  20. java ssm框架论文,基于SSM框架的个人博客系统(源码+论文)

热门文章

  1. hexo文章中插入图片
  2. 15000cd是多少流明_光通量(lm)发光强度(cd)照度单位(lux)之间的关系
  3. Linux下的摄相头驱动
  4. 指标异动的贡献度量化归因
  5. 2016年腾讯实习生校园招聘-电面2
  6. python实验报告代写_Python 读写CSV作业代写代做、代写Python I/O文件读写程序作业、代写代做python 实验报告...
  7. folder汇总字段的实现
  8. Linux系统定时任务
  9. 【20CSPS提高组】动物园
  10. 【20CSPS提高组】函数调用