预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7
在线预览结束,喜欢就下载吧,查找使用更方便
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验一密钥分配实验目的理解密钥管理的重要性掌握对称密码和公钥密码密钥管理的不同特性掌握密钥分发基本方法,能设计密钥分发方案实验内容假定两个用户A、B,用户A、B的通讯密钥为K,他们的公私密钥对分别是Kpua、Kpra和Kpub,Kprb,他们要进行安全通讯,实现利用公钥密码算法分发对称秘钥的过程。数据测试及预期结果利用DES算法生成对称密钥Key,并存入A文件夹下,运行程序后在A文件夹下生成Key.dat文件利用RSA算法生成公钥密钥对,将公钥存入A文件夹下,将私钥存入B文件夹下,运行程序后在A文件夹下生成Skey_RSA_pub.dat文件,在B文件夹下生成Skey_RSA_priv.dat文件:利用RSA加密算法对对称密钥加密,将加密后文件保存为Enc_RSA.dat文件,运行程序后:利用RSA解密算法对密文进行解密,将解密后的文件Key.dat写入B文件夹下,运行程序后B文件夹下生成Key.dat文件:与加密前的对称密钥相同!算法分析及流程图源程序//生成对称密钥packageSkey;importjava.io.*;importjavax.crypto.*;publicclassSkey_DES{//对称密钥的生成,并通过对象序列化方式保存在文件中publicstaticvoidmain(Stringargs[])throwsException{KeyGeneratorkg=KeyGenerator.getInstance("DESede");//创建密钥生成器kg.init(168);//初始化密钥生成器SecretKeyk=kg.generateKey();//生成密钥//通过对象序列化方式将密钥保存在文件中FileOutputStreamf1=newFileOutputStream("A/Key.dat");ObjectOutputStreamb1=newObjectOutputStream(f1);b1.writeObject(k)}}//生成公钥密钥对packageRSA;importjava.io.*;importjava.security.*;publicclassSkey_RSA{publicstaticvoidmain(String[]args)throwsException{//密钥对生成器KeyPairGenerator工厂,非对称加密算法:RSA,DSAKeyPairGeneratorkpg=KeyPairGenerator.getInstance("RSA");//制定密钥长度kpg.initialize(1024);//生成密钥对KeyPairkp=kpg.genKeyPair();PublicKeypbkey=kp.getPublic();PrivateKeyprkey=kp.getPrivate();FileOutputStreamf1=newFileOutputStream("A/Skey_RSA_pub.dat");ObjectOutputStreamb1=newObjectOutputStream(f1);b1.writeObject(pbkey);FileOutputStreamf2=newFileOutputStream("B/Skey_RSA_priv.dat");ObjectOutputStreamb2=newObjectOutputStream(f2);b2.writeObject(prkey);}}//公钥加密packageRSA;importjava.security.interfaces.RSAPublicKey;importjava.math.*;importjava.io.*;publicclassEnc_RSA{publicstaticvoidmain(String[]args)throwsException{BufferedReaderin=newBufferedReader(newInputStreamReader(newFileInputStream("A/Key.dat")));Strings=in.readLine();FileInputStreamf=newFileInputStream("A/Skey_RSA_pub.dat");ObjectInputStreamb=newObjectInputStream(f);//公钥转换为RSA公钥RSAPublicKeypb