/* * $Id$ * * Copyright (c) 2000-2006 by Rodney Kinney * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License (LGPL) as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, copies are available * at http://www.opensource.org. */ package VASSAL.tools; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Random; import VASSAL.tools.io.IOUtils; import VASSAL.tools.io.ObfuscatingOutputStream; /** * Utility class that handles simple obfuscation of a file's contents, * to prevent the casual cheat of hand-editing a logfile. * * @author rkinney * @deprecated Use {@link ObfuscatingOutputStream} instead. */ @Deprecated public class Obfuscator { public static final String HEADER = "!VCSK"; private static final Random rand = new Random(); private String encrypted; private byte key; public Obfuscator(byte[] contents) { key = (byte) rand.nextInt(256); final StringBuilder buffer = new StringBuilder(HEADER); appendAsHex(buffer,key); for (int i = 0; i < contents.length; ++i) { appendAsHex(buffer,(byte) (contents[i] ^ key)); } encrypted = buffer.toString(); } private void appendAsHex(StringBuilder buffer, byte b) { buffer.append(Integer.toHexString((b & 0xf0) >>> 4).charAt(0)); buffer.append(Integer.toHexString(b & 0x0f).charAt(0)); } public void write(OutputStream out) throws IOException { out.write(encrypted.getBytes("UTF-8")); } // Convert a plain text file to an obfuscated file public static void main(String[] args) throws Exception { final InputStream in = args.length > 0 ? new FileInputStream(args[0]) : System.in; final byte[] data; try { data = IOUtils.toByteArray(in); } finally { in.close(); } Obfuscator o = new Obfuscator(data); o.write(new BufferedOutputStream(System.out)); System.exit(0); } }