生活随笔
收集整理的這篇文章主要介紹了
20145308刘昊阳 《Java程序设计》实验五报告
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
20145308劉昊陽 《Java程序設(shè)計(jì)》實(shí)驗(yàn)五 Java網(wǎng)絡(luò)編程及安全 實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)名稱
Java網(wǎng)絡(luò)編程及安全
實(shí)驗(yàn)內(nèi)容
1.掌握Socket程序的編寫;
2.掌握密碼技術(shù)的使用;
3.設(shè)計(jì)安全傳輸系統(tǒng)。
統(tǒng)計(jì)的PSP(Personal Software Process)時(shí)間
| 需求分析 | 20~30 | 17% |
| 設(shè)計(jì) | 20~30 | 17% |
| 代碼實(shí)現(xiàn) | 10~20 | 11% |
| 測(cè)試 | 50~60 | 33% |
| 分析總結(jié) | 30~40 | 22% |
實(shí)驗(yàn)步驟
- 我是做的服務(wù)器端,我的結(jié)伴對(duì)象是20145325張梓靖,地址:http://www.cnblogs.com/zzjzzjzzj/p/5471240.html
- 1.先利用示例代碼運(yùn)行,監(jiān)聽客戶端
import java.io.*;
import java.net.*;
/*** 復(fù)用連接的echo服務(wù)器* 功能:將客戶端發(fā)送的內(nèi)容反饋給客戶端*/
public class MulSocketServer {public static void main(String[] args) {ServerSocket serverSocket = null;Socket socket = null;OutputStream os = null;InputStream is = null;//監(jiān)聽端口號(hào)int port = 10000;try {//建立連接serverSocket = new ServerSocket(port);System.out.println("服務(wù)器已啟動(dòng):");//獲得連接socket = serverSocket.accept();//初始化流is = socket.getInputStream();os = socket.getOutputStream();byte[] b = new byte[1024];for(int i = 0;i < 2;i++){int n = is.read(b);//輸出System.out.println("客戶端發(fā)送內(nèi)容為:" + new String(b,0,n));//向客戶端發(fā)送反饋內(nèi)容os.write(b, 0, n);}} catch (Exception e) {e.printStackTrace();}finally{try{//關(guān)閉流和連接os.close();is.close();socket.close();serverSocket.close();}catch(Exception e){}}}
}
接收到對(duì)方傳送的字符串
2.生成公鑰、私鑰
KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");kpg.initialize(1024);KeyPair kp=kpg.genKeyPair();PublicKey pbkey=kp.getPublic();PrivateKey prkey=kp.getPrivate();FileOutputStream f1=new FileOutputStream("Skey_RSA_pub.dat");ObjectOutputStream b1=new ObjectOutputStream(f1);b1.writeObject(pbkey);FileOutputStream f2=new FileOutputStream("Skey_RSA_priv.dat");ObjectOutputStream b2=new ObjectOutputStream(f2);b2.writeObject(prkey);
- 3.利用解密算法對(duì)收到的密文進(jìn)行解密
BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream("Enc_RSA.dat")));String ctext=in.readLine();BigInteger c=new BigInteger(ctext);FileInputStream f=new FileInputStream("Skey_RSA_priv.dat");ObjectInputStream b=new ObjectInputStream(f);RSAPrivateKey prk=(RSAPrivateKey)b.readObject( );BigInteger d=prk.getPrivateExponent();BigInteger n=prk.getModulus();System.out.println("d= "+d);System.out.println("n= "+n);BigInteger m=c.modPow(d,n);System.out.println("m= "+m);byte[] mt=m.toByteArray();System.out.println("PlainText is ");for(int i=0;i<mt.length;i++){System.out.print((char) mt[i]);
FileInputStream f=new FileInputStream("SEnc.dat");int num=f.available();byte[ ] ctext=new byte[num];f.read(ctext);FileInputStream f2=new FileInputStream("keykb1.dat");int num2=f2.available();byte[ ] keykb=new byte[num2];f2.read(keykb);SecretKeySpec k=new SecretKeySpec(keykb,"DESede");Cipher cp=Cipher.getInstance("DESede");cp.init(Cipher.DECRYPT_MODE, k);byte []ptext=cp.doFinal(ctext);String p=new String(ptext,"UTF8");System.out.println(p);
轉(zhuǎn)載于:https://www.cnblogs.com/yg961022/p/5471201.html
總結(jié)
以上是生活随笔為你收集整理的20145308刘昊阳 《Java程序设计》实验五报告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。