Java Experiment five reports--TCP transmission and encryption and decryption

Source: Internet
Author: User

First, the contents of the experiment

1. Run the textbook on TCP code, pair, one-person server, one-person client;

2. The use of encryption and decryption code package, compile and run code, one person encryption, one person decryption;

3. Integrated code, one person encrypted after sending via TCP;

Note: Encryption uses AES or Des/aes or DES encryption key keys and sends, using the server's public key cryptography/Public key algorithm using RSA or dh/to verify the integrity of sending information using MD5 or SHA3;

4. Complete the blog.

Second, the experimental steps

1. Overview

The experimental content of this experiment is less, and the method of pairing learning is adopted.

2. Learn TCP

According to the following procedure, understand the meaning of TCP.

Third, the client code

File Name:ComputeTCPClient.java

Import java.net.*;

Import java.io.*;

Import java.security.*;

Import javax.crypto.*;

Import javax.crypto.spec.*;

Import java.security.spec.*;

Import javax.crypto.interfaces.*;

Import java.security.interfaces.*;

Import java.math.*;

public class Computetcpclient {

public static void Main (String srgs[]) throws exception{

try {

Keygenerator kg=keygenerator.getinstance ("Desede");

Kg.init (168);

Secretkey K=kg.generatekey ();

Byte[] ptext2=k.getencoded ();

String Kstr=parsebyte2hexstr (KB);

To create a socket object that connects to a specified port on a specific server

Socket socket = new Socket ("192.168.1.2", 4421);

Get the network input stream from the server side

BufferedReader in = new BufferedReader (New InputStreamReader (Socket.getinputstream ()));

Obtain a network output stream from the client to the server-side output data

PrintWriter out=new PrintWriter (New BufferedWriter (OutputStreamWriter ()), true);

Create a keyboard input stream so that clients can enter information from the keyboard

BufferedReader stdin = new BufferedReader (new InputStreamReader (system.in));

FileInputStream f3=new FileInputStream ("Skey_rsa_pub.dat");

ObjectInputStream b2=new ObjectInputStream (F3);

Rsapublickey pbk= (Rsapublickey) b2.readobject ();

BigInteger e=pbk.getpublicexponent ();

BigInteger N=pbk.getmodulus ();

System.out.println ("e=" +e);

System.out.println ("n=" +n);

Byte ptext2[]=kstr.getbytes ("UTF8");

BigInteger m=new BigInteger (PTEXT2);

BigInteger C=m.modpow (e,n);

System.out.println ("c=" +c);

String cs=c.tostring ();

OUT.PRINTLN (CS); Transfer over the network to the server

System.out.print ("Please enter data to be sent:");

String S=stdin.readline (); Read the data to be sent from the keyboard

Cipher cp=cipher.getinstance ("Desede");

Cp.init (Cipher.encrypt_mode, k);

Byte ptext[]=s.getbytes ("UTF8");

Byte ctext[]=cp.dofinal (ptext);

String str=parsebyte2hexstr (Ctext);

Out.println (str); Transfer over the network to the server

String x=s;

MessageDigest m2=messagedigest.getinstance ("MD5");

M2.update (X.getbytes ());

byte a[]=m2.digest ();

String result= "";

for (int i=0; i<a.length; i++) {

Result+=integer.tohexstring (0X000000FF & A[i]) |

0XFFFFFF00). substring (6);

}

SYSTEM.OUT.PRINTLN (result);

OUT.PRINTLN (result);

Str=in.readline ();//Read results from the network input stream

SYSTEM.OUT.PRINTLN ("The result received from the server is:" +STR); Results returned by the output server

}

catch (Exception e) {

System.out.println (e);

}

finally{

Stdin.close ();

In.close ();

Out.close ();

Socket.close ();

}

}

public static String Parsebyte2hexstr (byte buf[]) {

StringBuffer sb = new StringBuffer ();

for (int i = 0; i < buf.length; i++) {

String hex = integer.tohexstring (Buf[i] & 0xFF);

if (hex.length () = = 1) {

Hex = ' 0 ' + hex;

}

Sb.append (Hex.touppercase ());

}

return sb.tostring ();

}

public static byte[] Parsehexstr2byte (String hexstr) {

if (Hexstr.length () < 1)

return null;

Byte[] result = new Byte[hexstr.length ()/2];

for (int i = 0;i< hexstr.length ()/2; i++) {

int high = Integer.parseint (Hexstr.substring (i*2, i*2+1), 16);

int low = Integer.parseint (Hexstr.substring (i*2+1, i*2+2), 16);

Result[i] = (byte) (high * + low);

}

return result;

}

}

Five, the Experiment experience

The RSA (PUB) algorithm is used to encrypt the key of DES algorithm, the DES algorithm is used to encrypt the plaintext, and the integrity of the information is verified by the hash value.

Knot pair classmate Together: http://www.cnblogs.com/Juliet5307

Java Experiment five reports--TCP transmission and encryption and decryption

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.