/**
 *
 * @author user
 */
public class Encode {
    
    /*
     * Кодирует - декодирует любые данные представленные в виде массива byte[]
     */
    public static byte[] encode(byte[] data) {
        for(int i=0; i<data.length; i++) {
            data[i] = (byte)(255-data[i]);
        }
        int sqrt = (int)Math.sqrt(data.length);
        byte[] temp_bytes = new byte[sqrt];
        for(int i=0; i<sqrt+1; i++) {
            if(i == sqrt) {
                if(data.length > sqrt*sqrt) {
                    temp_bytes = new byte[data.length-sqrt*sqrt];
                } else {
                    break;
                }
            }
            for(int j=0; j<temp_bytes.length; j++) {
                temp_bytes[j] = data[i*sqrt+j];
            }
            for(int j=0; j<temp_bytes.length; j++) {
                data[i*sqrt+j] = temp_bytes[(temp_bytes.length-1)-j];
            }
        }
        temp_bytes = null;
        return data;
    }
    
}
