Advertisement
Guest User

ZendoXorEncryption

a guest
Mar 25th, 2015
2,504
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.79 KB | None | 0 0
  1. import java.nio.ByteBuffer;
  2. import java.nio.ByteOrder;
  3.  
  4. public class ZendosXorEncryption {
  5.   public byte[] xor(byte[] keyBytes, int keyOffset, byte[] inputBytes) {
  6.     if ((keyOffset < 0) || (keyBytes.length < keyOffset + inputBytes.length))
  7.       throw new Exception("Offset is illegal: " + keyOffset);
  8.     if (inputBytes.length > keyBytes.length)
  9.       throw new Exception("key is not big enough");
  10.     byte[] outputBytes = new byte[inputBytes.length];
  11.     for (int i = 0; i < outputBytes.length; i++)
  12.       outputBytes[i] = ((byte)(keyBytes[(keyOffset + i)] ^ inputBytes[i]));
  13.     return outputBytes;
  14.   }
  15.  
  16.   public byte[] xor(byte[] keyBytes, int keyOffset, byte[] inputBytes, int headerInt) {
  17.     int i = 0;
  18.     if ((keyOffset < 0) || (keyBytes.length < keyOffset + inputBytes.length))
  19.       throw new Exception("Offset is illegal: " + keyOffset);
  20.     if (inputBytes.length > keyBytes.length)
  21.       throw new Exception("key is not big enough");
  22.     byte[] outputBytes = new byte[8 + inputBytes.length];
  23.     byte[] headerAsbytes = intToLittleEndianBytes(headerInt);
  24.     System.arraycopy(headerAsbytes, 0, outputBytes, 0, headerAsbytes.length);
  25.     byte[] keyOffsetAsBytes = intToLittleEndianBytes(keyOffset);
  26.     System.arraycopy(keyOffsetAsBytes, 0, outputBytes, headerAsbytes.length, keyOffsetAsBytes.length);
  27.     for (int j = headerAsbytes.length + keyOffsetAsBytes.length; j < outputBytes.length; j++) {
  28.       outputBytes[j] = ((byte)(keyBytes[(keyOffset + i)] ^ inputBytes[i]));
  29.       i++;
  30.     }
  31.     return outputBytes;
  32.   }
  33.  
  34.   public static byte[] intToLittleEndianBytes(int intToEncode) {
  35.     ByteBuffer localByteBuffer = ByteBuffer.allocate(4);
  36.     localByteBuffer.putInt(intToEncode);
  37.     localByteBuffer.order(ByteOrder.LITTLE_ENDIAN);
  38.     return localByteBuffer.array();
  39.   }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement