欢迎来到天天文库
浏览记录
ID:55884309
大小:146.00 KB
页数:14页
时间:2020-06-13
《实习二 数字签名与认证的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实习二数字签名与认证的实现一、实习目的1.理解数字签名的概念和作用;2.理解身份认证的基本方式和方法;3.掌握Hash函数和数字签名的实现。二、实习要求1.实习前认真预习第3章的有关内容;2.复习数字签名和身份认证相关内容;3.熟悉Java平台的JCE包有关类。三、实习内容假定两个用户A、B,他们的公私钥对分别是KPUa、KPRa和KPUb、KPRb,,分发的消息为M,哈希函数h(x)。请基于RSA算法实现数字签名,阶梯任务如下:①以本地两个目录模拟两个用户,实现消息M和签名的模拟分发;实现过程:发送接收方BMM的签名发送方A消息明文MA的私钥加密MM的签名A的公钥解密
2、对比是否是A发送的A将信息M用自己的私钥加密后与M本身一起发送给B,B将签名用A的公钥解密,得出的信息与M对比,如果一致,说明消息就是A发的,因为只有A知道自己的私钥。运行结果:②以MD5、SHA-1等哈希函数,实现消息M的摘要,实现M及摘要签名的模拟分发;实现过程:接收方B发送送摘要摘要签名A的公钥解密对比是否是A发送的散列函数求摘要摘要摘要签名消息明文MA的私钥加密A对消息M用散列函数求出摘要,再用自己的私钥对摘要进行签名,将摘要和摘要的签名一起发送给B,B接受后用A的公钥解密摘要签名,将得出的摘要与发送的摘要对比,判断是否是A发送的。MD5:SHA-1:③实现M密
3、文状态下的签名与模拟分发;实现过程:B的私钥解密接收方B摘要摘要签名A的公钥解密对比是否是A发送的发送送散列函数求摘要摘要摘要签名消息明文MA的私钥加密密文B的公钥加密明文MA对消息M用B的公钥进行加密,将密文用散列函数求出摘要,再用自己的私钥对摘要进行签名,将密文摘要和摘要的签名一起发送给B,B接受后用A的公钥解密摘要签名,将得出的摘要与发送的摘要对比,判断是否是A发送的,之后再使用自己的私钥解密得到的密文,最终得到明文消息M。运行结果:④采用SSL,建立安全通信过程,实现Socket通信的签名分发;⑤将方案移植到某个web应用中,实现实用的签名分发。四、实验总结通过
4、这次实验,对于数字签名的方式有了更多了解,认识到非对称密钥体系真的是一个很好的体系,既可以做签名,也可以进行加解密,功能很多。附代码:SKey_RSA.javapackagecn.test.key;importjava.io.FileOutputStream;importjava.io.ObjectOutputStream;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.NoSuchAlgorithmException;importjava.secu
5、rity.PrivateKey;importjava.security.PublicKey;publicclassSKey_RSA{publicvoidkey_RSA()throwsException{KeyPairGeneratorkpg=KeyPairGenerator.getInstance("RSA");kpg.initialize(1024);KeyPairkp=kpg.genKeyPair();PublicKeypbkey=kp.getPublic();PrivateKeyprkey=kp.getPrivate();FileOutputStreamf1=ne
6、wFileOutputStream("Skey_RSA_pub1.dat");ObjectOutputStreamoo1=newObjectOutputStream(f1);oo1.writeObject(pbkey);FileOutputStreamf2=newFileOutputStream("Skey_RSA_pri1.dat");ObjectOutputStreamoo2=newObjectOutputStream(f2);oo2.writeObject(prkey);oo1.close();oo2.close();f1.close();f2.close();}
7、}Rsa_Op.javapackagecn.test.key;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.InputStreamReader;importjava.io.ObjectInputStream;importjava.io.OutputSt
此文档下载收益归作者所有