《密码学》课程实验(项目)报告- 哈希函数实验
《密码学》学生实验报告
《密码学》学生实验报告
二、实验目的
1.进一步熟悉MD5与SHA1并巩固掌握。
2.熟悉哈希函数的作用,掌握哈希函数的结构,并进行安全性分析。
3.编程能力的锤炼。
三、实验内容解答
实验步骤
在书上及网上查阅可知在MD5 算法中,首先需要对信息进行填充,使其字节长度与448
模512 同余,即信息的字节长度扩展至n*512+448,n 为一个正整数。填充的方法如下:
在信息的后面填充第一位为1,其余各位均为0,直到满足上面的条件时才停止用0 对信息填充。然后,再在这个结果后面附加一个以64 位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度为n*512+448= (n+1)*512,即长度恰好是512的整数倍,这样做的目的是为满足后面处理中后面处理中对信息长度的要求。n个分组中第q个分组表示为Yq。MD5 中有A、B、C、D,4个32 位被称作链接变量的整数参数,它们的初始值分别为:A=01234567B=89abcdef,C=fedcba98,D=76543210。
当设置好这个4个链接变量后,就开始进入算法的4 轮循环运算。循环的次数是信息中512 位信息分组数目。首先将上面4个链接变量复制到另外4个变量中A 到AA,B 到BB,C 到CC,D 到DD,以备后面进行处理。然后进入主循环,主循环有4 轮,每轮循环都很相似。第1轮进行16次操作,每次操作对A、B、C和D中的其中3个作一次非线性函数运算,然后将所得结果加上第4个变量,文本的一个子分组和一个常数。再将所得结果向左循环移S 位,并加上A、B、C 或D 其中之一。最后用该结果取代A、B、C 或D 其中之一。以下是每次操作中用到的4个非线性函数(每轮一个)。
F(B,C,D)=(B∧C)∨__________(B∧D)(此处需修改)
G(B,C,D)=(B∧D)∨(C∧D)
H(B,C,D)=B⊕C⊕D
I (B,C,D)=C⊕(B∨D)
(注:∧是与,∨是或, 是非,⊕是异或。)
2
下面为每一轮16 步操作中的4 次操作,16 步操作按照一定次序顺序进行。
FF(A,B,C,D,M[j],S,T[i]) 表示A=B+(A+(F(B,C,D)+M[j]+T[i])<<
GG(A,B,C,D,M[j],S,T[i])表示A=B+(A+(G(G,C,D)+M[j]+T[i] )<<
HH(A,B,C,D,M[j],S,T[i])表示A=B+(A+(H(B,C,D)+M[j]+T[i] )<<
II (A,B,C,D,M[j],S,T[i])表示A=B+(A+(I (B,C,D)+M[j]+T[i] )<<
(注:“+”定义为mod 232 的模运算。)
M[j]表示在第q个512 位数据块中的第j个32 位子分组,0≤j≤15。
常数T[i]可以有如下选择,在第i 步中,T[i]是4294967296*abs(sin(i))的整数部分(注:4294967296= 232 。),i 的单位是弧度。其中,T[i]是32 位的随机数源,它消除了输入数据中任何规律性的特征。表1-4 说明了四轮主循环中每轮16 步操作的具体步骤。
《密码学》学生实验报告
所有这些完成之后,将A、B、C、D 分别加上AA、BB、CC、DD。然后用下一分组
数据继续运行算法,最后的输出是A、B、C 和D 的级联。
实验代码
#include
#include
#include
#include
typedef unsigned char *POINTER;
typedef unsigned short int UINT2;
typedef unsigned long int UINT4;
typedef struct
{
UINT4 state[4];
UINT4 count[2];
unsigned char buffer[64];
} MD5_CTX;
void MD5Init(MD5_CTX *);
void MD5Update(MD5_CTX *, unsigned char *, unsigned
int);
void MD5Final(unsigned char [16], MD5_CTX *);
#define S11 7
#define S12 12
#define S13 17
#define S14 22
#define S21 5
#define S22 9
#define S23 14
#define S24 20
#define S31 4
#define S32 11
#define S33 16
#define S34 23
#define S41 6
#define S42 10
#define S43 15
#define S44 21
static unsigned char PADDING[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
《密码学》学生实验报告
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0
};
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >>
(32-(n))))
#define FF(a, b, c, d, x, s, ac) { (a) += F
((b), (c), (d)) + (x) + (UINT4)(ac); (a) =
ROTATE_LEFT ((a), (s)); (a) += (b); }
#define GG(a, b, c, d, x, s, ac) { (a) += G
((b), (c), (d)) + (x) + (UINT4)(ac); (a) =
ROTATE_LEFT ((a), (s)); (a) += (b); }
#define HH(a, b, c, d, x, s, ac) { (a) += H
((b), (c), (d)) + (x) + (UINT4)(ac); (a) =
ROTATE_LEFT ((a), (s)); (a) += (b); }
#define II(a, b, c, d, x, s, ac) { (a) += I
((b), (c), (d)) + (x) + (UINT4)(ac); (a) =
ROTATE_LEFT ((a), (s)); (a) += (b); }
inline void Encode(unsigned char *output, UINT4 *input,
unsigned int len)
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4)
{
output[j] = (unsigned char)(input[i] & 0xff);
output[j+1] = (unsigned char)((input[i] >> 8) &
0xff);
output[j+2] = (unsigned char)((input[i] >> 16) &
0xff);
output[j+3] = (unsigned char)((input[i] >> 24) &
0xff);
}
《密码学》学生实验报告
}
inline void Decode(UINT4 *output, unsigned char *input,
unsigned int len)
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4)
output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) <<
应用密码学实训报告总结
一、实训背景
随着互联网技术的飞速发展,信息安全问题日益突出,应用密码学作为信息安全的核心技术之一,越来越受到广泛关注。为了提高我们对应用密码学的理解和应用能力,我们参加了为期一个月的应用密码学实训。本次实训旨在通过实践操作,加深对密码学原理的理解,掌握密码学在实际应用中的技术要点,提高信息安全防护能力。
二、实训目的
1. 理解和应用密码学的基本原理,包括对称密码、非对称密码、数字签名、哈希函数等。
2. 掌握密码学在实际应用中的技术要点,如密码协议、安全认证、数据加密等。
3. 提高信息安全防护能力,学会在实际工作中运用密码学技术解决安全问题。
4. 培养团队协作精神和创新意识,提高动手实践能力。
三、实训内容
1. 密码学基础知识
实训过程中,我们首先学习了密码学的基本概念、发展历程、分类及特点。通过学习,我们了解了密码学的起源、发展历程以及在我国的应用现状。
2. 对称密码
实训内容之一是对称密码的学习,包括AES、DES等加密算法。我们通过实验操作,掌握了这些算法的原理、加密和解密过程,并学会了在实际应用中如何选择合适的加密算法。
3. 非对称密码
实训过程中,我们学习了非对称密码的基本原理,包括RSA、ECC等加密算法。通过实验操作,我们掌握了这些算法的加密和解密过程,并学会了在实际应用中选择合适的密钥长度。
4. 数字签名 实训内容还包括数字签名技术,我们学习了RSA、ECC等数字签名算法,掌握了其原理和应用。通过实验操作,我们学会了如何生成和验证数字签名,提高了信息安全防护能力。
5. 哈希函数
哈希函数是密码学中的重要组成部分,实训过程中,我们学习了MD5、SHA-1、SHA-256等哈希函数。通过实验操作,我们掌握了这些函数的原理和应用,学会了如何使用哈希函数保证数据完整性。
6. 密码协议
实训内容还包括密码协议的学习,我们学习了SSL/TLS、SSH等密码协议。通过实验操作,我们掌握了这些协议的原理和实现过程,学会了在实际应用中如何使用密码协议保障通信安全。
实验四Hash算法和密码应用网络与信息安全实验报告
百度文库
25 实验四 Hash算法和密码应用
同组实验者 实验日期
成绩
练习一 MD5算法
实验目的 1理解Hash函数的计算原理和特点,2理解MD5算法原理
实验人数 每组2人
系统环境 Windows
网络环境 交换网络结构
实验工具 密码工具
实验类型 验证型
一、实验原理
详见“信息安全实验平台”,“实验4”,“练习一”。
二、实验步骤
本练习主机A、B为一组,C、D为一组,E、F为一组。首先使用“快照X”恢复Windows系统环境。
1.MD5生成文件摘要
(1)本机进入“密码工具”|“加密解密”|“MD5哈希函数”|“生成摘要”页签,在明文框中编辑文本内容:
__________________________________________________________________________。
单击“生成摘要”按钮,生成文本摘要:
__________________________________________________________________________。
单击“导出”按钮,将摘要导出到MD5共享文件夹(D:\Work\Encryption\MD5\)中,并通告同组主机获取摘要。
(2)单击“导入摘要”按钮,从同组主机的MD5共享文件夹中将摘要导入。
在文本框中输入同组主机编辑过的文本内容,单击“生成摘要”按钮,将新生成的摘要与导入的摘要进行比较,验证相同文本会产生相同的摘要。
(3)对同组主机编辑过的文本内容做很小的改动,再次生成摘要,与导入的摘要进行对比,验证MD5算法的抗修改性。
2.MD5算法
本机进入“密码工具”|“加密解密”|“MD5哈希函数”|“演示”页签,在明文输入区输入文本(文本不能超过48个字符),单击“开始演示”,查看各模块数据及算法流程。根据实验原理中对MD5算法的介绍,如果链接变量的值分别为(其中,M[1]=31323334):
《密码学》课程设计实验报告-分组密码DES2
《密码学》课程设计实验报告
实验序号:02 实验项目名称:分组密码AES
一、实验目的及要求
教学目的:
(1) 掌握分组密码的基本概念;
(2) 掌握AES密码算法;
(3) 了解AES密码的安全性;
(4) 掌握分组密码常用工作模式及其特点;
(5) 熟悉分组密码的应用。
实验要求:
(1) 熟悉AES算法的基本结构;
(2) 掌握AES算法的基本运算;
(3) 掌握AES算法的实现与优化方法;
(4) 熟悉AES算法的安全性。
二、实验设备(环境)及要求
Windows操作系统,高级语言开发环境
三、实验内容与步骤
1. AES 算法的基本结构
输入:128位明文,128/192/256位密钥
子过程:
(1)S盒变换(教材 p86及p92表3-10)
(2)行移位(教材 p87表3-9)
(3)列混合(教材 p87及p93式3-32)
(4)轮密钥加(教材 p87)
输出:128位密文。 图:AES轮函数结构
图:AES轮密钥产生 2.AES算法的基本运算(重点)
方法:通过编程代码实现下列运算:
(1)8(2)GF上的加法(教材 p83定义3-2)
(为了描述方便,用花括号表示16进制,下同)
例:{BC}⊕{6A}={D6}(下图中的A3,3⊕K3,3=B3,3)
计算或编程方法:按位异或(提示——C、Java等语言中的^运算符)
(2)8(2)GF上的多项式加法(教材 p83定义3-7)
例:a(x)={BC}x3+{42} x2+{9F} x+{4C}
K(x)= {6A}x3+{00} x2+{5C} x+{57}
a(x) ⊕K(x)= {D6}x3+{42} x2+{C3} x+{1B}
计算或编程方法:按位异或(提示——C、Java等语言中的^运算符)
A0,0A0,1A0,2A0,3A1,0A1,1A1,2A1,3A2,0A2,1A2,2A2,3A3,0A3,1A3,2A3,3K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3+B0,0B0,1B0,2B0,3B1,0B1,1B1,2B1,3B2,0B2,1B2,2B2,3B3,0B3,1B3,2B3,3A3,3 ⊕K3,3 =B3,3 (mod 2)
哈希表实验报告
实习报告
题目:设计一个哈希表,完成相应的建表和查表程序
一、班级:1503013 姓名:李睿元 学号: 完成日期:需求分析
1. 假设人名为中国人名的汉语拼音形式;
2. 待填入哈希表的姓名共有30个,去平均查找长度的上限为2;
3. 哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突;
4. 取读者周围较熟悉的30个人的姓名。
二、概要设计
1. 抽象数据类型的定义:
(1)人名数据表:
typedef struct Node
{
char name[20];
int key;
}Node,NodeList[MAX];
(2)哈希表:
typedef struct hashtable
{
char* name;
int key;
int conflict_time; }HashTable[hashlen];
(3)变量:
#define P 61主要函数的实现:
(1)哈希函数:
int Hash(int key)
(2)关键字获得:
int GetKey(char str[])
(3)文件流中读取姓名:
void GetName(NodeList &L,int i,FILE* fp)
(4)哈希表的初始化:
void InitialHashTable(HashTable &ht)
(5)伪随机探测序列的生成:
void CreatConfilctArray(int n[])
(6)哈希表的生成:
void CreatHashTable(HashTable &ht,NodeList L,int* n)
(7)哈希表的查询:
void SearchHashTable(HashTable ht,int* n,char get_name[])
三、详细设计
#include <>
#include <>
#include <>
实验吧_密码学实验报告(3篇)
第1篇
一、实验背景
密码学是一门研究信息加密与解密的学科,它广泛应用于信息安全领域。为了更好地理解密码学的基本原理和算法,我们选择了实验吧平台上的密码学实验进行学习。本次实验旨在通过实际操作,加深对古典密码、对称密码和不对称密码等密码学基本概念的理解,提高密码学应用能力。
二、实验目的
1. 理解并掌握古典密码的基本原理和算法;
2. 掌握对称密码和不对称密码的基本原理和算法;
3. 通过实验操作,提高密码学应用能力;
4. 培养团队协作和解决问题的能力。
三、实验内容
1. 古典密码实验
(1)仿射密码
原理:仿射密码是一种单字母替换密码,加密公式为:C = (aP + b) mod 26,其中C为密文字母,P为明文字母,a和b为密钥。
操作步骤:
1)编写加密函数encrypt,实现仿射密码加密;
2)编写解密函数decrypt,实现仿射密码解密;
3)测试加密和解密函数,验证其正确性。
(2)单表代替密码
原理:单表代替密码是一种将明文字符映射到密文字符的替换密码。
操作步骤:
1)编写加密函数subencrypt,实现单表代替密码加密;
2)编写解密函数subdecrypt,实现单表代替密码解密; 3)测试加密和解密函数,验证其正确性。
(3)维吉尼亚密码
原理:维吉尼亚密码是一种多字母替换密码,加密公式为:C = (P + K[i]) mod
26,其中C为密文字母,P为明文字母,K为密钥,i为索引。
操作步骤:
1)编写加密函数vigenereencrypt,实现维吉尼亚密码加密;
2)编写解密函数vigeneredecrypt,实现维吉尼亚密码解密;
3)测试加密和解密函数,验证其正确性。
2. 对称密码实验
(1)DES加密算法
原理:DES(Data Encryption Standard)是一种分组加密算法,采用56位密钥,64位分组。
操作步骤:
1)编写DES加密函数desencrypt,实现DES加密;
《哈希表》项目实验报告
《哈希表》项目实验报告
1、实验名称
哈希表问题
2、小组成员
刘艳宁、邓芳益;
3、主要内容和步骤:
(1)分析问题描述,明确问题目标
对于一个哈希表,它是通过哈希算法,然后将数据按照哈希算法所得到的哈希地址存入到哈希表中。所以对于一个哈希表,要了解它的存储方式、哈希表的冲突处理、数据的输入、数据的追加、哈希表的判空、哈希表清空、数据的查找
(2)分析问题数据描述
[数据描述]首先分析哈希表的构造方法:除留余数法
取关键字被某个不大于哈希表表长m的数p除后所得余数为哈希地址。
H(key)=key MOD p (p<=m);//哈希表的存储方法
但是由于java中已经嵌入了哈希表,所以直接调用java中的哈希表:
Import java.uilt.HashMap//调用java中的哈希表函数;
(3)确定算法思路,准确描述算法
[算法描述]首先运用java里面的哈希表;
import java.util.Scanner;//调用java里面的Scanner供用户进行数据的输入
import java.util.HashMap;//调用java哈希表
根据公式:H(key)=key MOD p (p<=m)
用输入的关键字来与哈希表的总长度来进行求余运算,然后将求得的余数存入到哈希表相应的位置中
对于哈希表的查找:
则根据哈希表的除留余数法然后进行数据的查找;当ASL为1时时最理想的,因为只需要查找一次,如果第一次没有查找到,则在先前的位置上加一进行查找,直到查找到数据为止然后返回。
(4)运行数据记录
输入:学号:1000 姓名:张三
输入:学号:1001 姓名:李四
输出哈希表数据,然后进行判空,查找等操作
(5)实验效果图示
4、实验总结:(心得体会、处理结果、存在的问题、建议和意见等)
心得体会:如果要实现哈希表的各个操作,首先要了解哈希表的存储方式;其次就是算法的构造上面,该程序是直接调用java中的hashmap,所以在算法上程序构造相对的比较简单。
密码学实验指导书
《密码学》实验指导书——张瑞霞
1 密码学及应用实验指导
实验1 古典密码
实验目的
1. 理解代替密码学加密过程
2. 理解置换密码学加密过程
实验环境
Windows和交换网络结构
实验工具
VC++6.0和密码工具
实验原理
一.Caesar(恺撒)密码
Caesar密码是传统的代替加密法,Caesar加密变换是:c = (m + k) mod 26
其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,也为密钥。
很容易得到相应的Caesar解密变换是: m = D(c) = (c – k) mod 26
二.单表置换密码
单表置换密码也是一种传统的代替密码算法,在算法中维护着一个置换表,这个置换表记录了明文和密文的对照关系。在单表置换算法中,密钥是由一组英文字符和空格组成的,称之为密钥词组。
例如当输入密钥词组:I LOVE MY COUNTRY后,对应的置换表如下:
dhijknoqrstyzVUNTRDFGHJKXZ 《密码学》实验指导书——张瑞霞
2 实验步骤
凯撒密码
本练习主机A、B为一组,C、D为一组,E、F为一组。
首先使用“快照X”恢复Windows系统环境。
一.手动完成Caesar密码
(1)在实验原理部分我们已经了解了Caesar密码的基本原理,那么请同学们写出当密钥k=3时,对应明文:data security has evolved rapidly的密文: 。
(2)进入实验平台,单击工具栏中的“密码工具”按钮,启动密码工具,在向导区点击“Caesar密码”。在明文输入区输入明文:data security has evolved rapidly。将密钥k调节到3,查看相应的密文,并与你手动加密的密文进行比较。
请根据密钥验证密文与明文对应关系是否正确。
注册密码的hash值存入数据库实验报告
注册密码的hash值存入数据库实验报告
实验目的:
本实验旨在探究将用户注册时输入的密码通过哈希算法转化为密码哈希值,并将该值存储到数据库中的实现过程。
实验原理:
哈希算法是一种将任意长度的输入(称为消息)转换为固定长度输出(称为哈希值)的算法。哈希算法具有以下特性:
1.输入不同,输出必定不同。
2.输出长度固定。
3.散列值不能通过散列值反推出原始消息。
4.对同一消息哈希值必定相同。
根据哈希算法的特点,我们将用户注册时输入的密码通过哈希算法转化为密码哈希值,可以保证在数据库中存储的值不会泄露用户的原始密码信息。
实验步骤:
1.选择一种可靠的哈希算法,如MD5、SHA-1等,将用户注册时输入的密码转化为密码哈希值。
2.将密码哈希值存储到数据库表中的一个字段中,通常取名为“password_hash”。
3.当用户登录时,将用户输入的密码再次通过哈希算法转化为密码哈希值,并与数据库中相应的“password_hash”字段比对,相同则允许用户登录,否则提示密码错误。
实验结果:
通过哈希算法将用户注册密码转化为密码哈希值,可以使用户的密码信息更加安全,并且避免在数据库中存储用户的原始密码信息。
实验结论:
本实验中,我们学习了将用户注册时输入的密码通过哈希算法转化为密码哈希值,并将该值存储到数据库中的方法。这样可以保证用户的密码信息更加安全,不容易被破解和攻击。在实际开发中需要注意选择安全可靠的哈希算法,并对用户输入的密码进行加盐等安全措施,提高密码的安全性。
密码学实验报告
密码学实验报告
华中科技⼤学
密码学课程设计实验报告
院系:计算机科学与技术
专业:信息安全
班级:0803
指导⽼师:崔国华
姓名:谢昱镗
学号:u2008141392011年2⽉27⽇
⽬录
密码学课程设计报告 (3)1. 引论 (3)
2. DES ................................................................ 错误!未定义书签。
1.1原理 ...................................................... 错误!未定义书签。
1.2 DES的实现 (9)
1.3相关函数 (9)
3. 弱密钥的检测 (11)
2.1定义 (11)
2.2检测⽅法 (11)
2.3检测弱密钥实现 (11)
2.4相关函数 (12)
4. 总结 (12)
5.相关源码 (12)
⼀、引论
当今社会是信息化的社会。为了适应社会对计算机数据安全保密越来越⾼的要求,美国国家标准局(NBS)于1997年公布了⼀个由IBM公司研制的⼀种加密算法,并且确定为⾮机要部门使⽤的数据加密标准,简称DES(Data Encrypton Standard)。⾃公布之⽇起,DES算法作为国际上商⽤保密通信和计算机通信的最常⽤算法,⼀直活跃在国际保密通信的舞台上,扮演了⼗分突出的⾓⾊。
⼆、DES2.1、原理
2.1.1、DES算法加密过程
对DES算法加密过程图⽰的说明如下:待加密的64⽐特明⽂串m,经过IP置换后,得到的⽐特串的下标列表如下:
该⽐特串被分为32位的L0和32位的R0两部分。R0⼦密钥K1(⼦密钥的⽣成将在后⾯讲)经过变换f(R0,K1)(f变换将在下⾯讲)输出32位的⽐特串f1,f1
与L0做不进位的⼆进制加法运算。运算规则为:
f1与L0做不进位的⼆进制加法运算后的结果赋给R1,R0则原封不动的赋给L1。L1与R0⼜做与以上完全相同的运算,⽣成L2,R2…… ⼀共经过16次运算。最后⽣成R16和L16。其中R16为L15与f(R15,K16)做不进位⼆进制加法运算的结果,L16是R15的直接赋值。
实验4—哈希表
实 验 报 告
一、实验目的
(1) 掌握静态查找表和动态查找表的抽象数据类型特征。
(2) 掌握将台查找表和动态查找表的实现方法。
(3) 学会在顺序表、二叉排序树上设计查找算法,学会根据关键字特征设计哈希函数,设计哈希表,并实现哈希表查找过程。
二、实验内容与实验步骤
[问题描述]
真对你所在的集体(比如你所在的班级)中的人名设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表的程序。
[基本要求]
假设人名为中国人姓名的汉语拼音形式,待填入的哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数方法构造,用伪随机探测再散列处理冲突。
[测试数据]
取你周围熟悉的30个人的姓名。
[实现提示]
如果随机函数自行构造,则应首先调整好随机函数,使其分布均匀。人名的长度均不超过19个字符,最长的人名如:庄双双(Zhuang Shuangshuang)。字符的取码方法可直接利用C语言中的toascii函数,并可对过长的人名先作折叠处理。
1 .存储结构定义
typedef struct
{ char *name; //名字所对应的拼音字母
int k; //汉字拼音所对应的整数值
}NAME;
typedef struct //定义哈希表结构体
{ char *name; //名字的拼音
int k; //拼音所对应的整数
int len; //查找的长度
}HASH;
2. 姓名初始化
名字以拼音的形式够成字符串,将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字。
void InitkName() //姓名初始化函数
{
//人名初始化如下
kName[0].name="cunjian";
kName[1].name="mayun";
