Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.26 KB | None | 0 0
  1. import java.nio.ByteBuffer;
  2. import java.security.MessageDigest;
  3.  
  4.  
  5. public class Packet
  6. {
  7.     private int seqnum;
  8.     private int length;
  9.     private byte[] data;
  10.     private byte[] hash;
  11.    
  12.     public Packet(byte[] data, int seqnum)
  13.     {
  14.         try
  15.         {
  16.             this.data = data;
  17.             this.seqnum = seqnum;
  18.             length = data.length;
  19.             digest();
  20.         }
  21.         catch (Exception e)
  22.         {
  23.             e.printStackTrace();
  24.         }
  25.     }
  26.    
  27.     public byte[] getBytes()
  28.     {      
  29.         byte[] temp = createPayload();
  30.         byte[] packet = new byte[temp.length + hash.length];
  31.         System.arraycopy(temp, 0, packet, 0, temp.length);
  32.         System.arraycopy(hash, 0, packet, temp.length, hash.length);
  33.        
  34.         return packet;
  35.     }
  36.    
  37.    
  38.     private void digest() throws Exception
  39.     {      
  40.         //checksum payload
  41.         MessageDigest md = MessageDigest.getInstance("MD5");
  42.         md.update(createPayload());
  43.         hash = md.digest();
  44.     }
  45.    
  46.     private byte[] createPayload()
  47.     {
  48.         ByteBuffer header = ByteBuffer.allocate(8);
  49.         header.putInt(seqnum);
  50.         header.putInt(length);
  51.            
  52.         //create original payload (no checksum)
  53.         byte[] original = new byte[header.array().length + data.length];
  54.         System.arraycopy(header.array(), 0, original, 0, header.array().length);
  55.         System.arraycopy(data, 0, original, header.array().length, data.length);
  56.        
  57.         return original;
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement