Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.nio.ByteBuffer;
- import java.security.MessageDigest;
- public class Packet
- {
- private int seqnum;
- private int length;
- private byte[] data;
- private byte[] hash;
- public Packet(byte[] data, int seqnum)
- {
- try
- {
- this.data = data;
- this.seqnum = seqnum;
- length = data.length;
- digest();
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- public byte[] getBytes()
- {
- byte[] temp = createPayload();
- byte[] packet = new byte[temp.length + hash.length];
- System.arraycopy(temp, 0, packet, 0, temp.length);
- System.arraycopy(hash, 0, packet, temp.length, hash.length);
- return packet;
- }
- private void digest() throws Exception
- {
- //checksum payload
- MessageDigest md = MessageDigest.getInstance("MD5");
- md.update(createPayload());
- hash = md.digest();
- }
- private byte[] createPayload()
- {
- ByteBuffer header = ByteBuffer.allocate(8);
- header.putInt(seqnum);
- header.putInt(length);
- //create original payload (no checksum)
- byte[] original = new byte[header.array().length + data.length];
- System.arraycopy(header.array(), 0, original, 0, header.array().length);
- System.arraycopy(data, 0, original, header.array().length, data.length);
- return original;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement