ae pessoal eu achei esse codigo aqui nos arquivos .class sera que é ele que abre/descodifica o arquivo ?
package utils;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.zip.CRC32;
import java.util.zip.Checksum;
public class conv
{
private static final char[] HEXTAB = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
public static String HexFromString(String ascii)
{
String st = "";
for (int i = 0; i < ascii.length(); ++i)
{
int ch = ascii.charAt(i);
String tempo = Integer.toHexString(ch);
if (tempo.length() < 2)
tempo = "0" + tempo;
st = st + tempo;
}
return st;
}
public static String HexFromBytes(byte[] data)
{
int ofs = 0; int len = 0;
StringBuffer sbuf = new StringBuffer();
sbuf.setLength(len << 1);
int pos = 0;
int c = ofs + len;
while (ofs < c)
{
sbuf.setCharAt(pos++, HEXTAB[(data[ofs] >> 4 & 0xF)]);
sbuf.setCharAt(pos++, HEXTAB[(data[(ofs++)] & 0xF)]);
}
return sbuf.toString().toUpperCase();
}
public static byte[] fromHexString(String in) {
byte[] bts = new byte[in.length() / 2];
for (int i = 0; i < bts.length; ++i)
bts[i] = (byte)Integer.parseInt(in.substring(2 * i, 2 * i + 2), 16);
return bts;
}
public static void ChangeEndian(byte[] array, int ofs) {
byte b0 = array[(ofs + 0)];
byte b1 = array[(ofs + 1)];
array[(ofs + 0)] = array[(ofs + 3)];
array[(ofs + 1)] = array[(ofs + 2)];
array[(ofs + 2)] = b1;
array[(ofs + 3)] = b0;
}
public static byte[] BytesFromInt(int i, boolean toLittleEndian) {
byte[] array = new byte[4];
array[0] = (byte)(i >>> 24 & 0xFF);
array[1] = (byte)(i >> 16 & 0xFF);
array[2] = (byte)(i >> 8 & 0xFF);
array[3] = (byte)(i & 0xFF);
if (toLittleEndian)
ChangeEndian(array, 0);
return array;
}
public static long BytesToLong(byte[] arr, int ofs) {
byte[] tmp = new byte[8];
for (int i = 0; i < 8; ++i)
tmp[i] = arr[(ofs + i)];
long accum = 0L;
int i = 0;
for (int shiftBy = 0; shiftBy < 64; shiftBy += 8) {
accum |= (tmp[i] & 0xFF) << shiftBy;
++i;
}
return accum;
}
public static float BytesToFloat(byte[] arr, int ofs, boolean changeEndian) {
int fl = BytestoInt(arr, 0, changeEndian);
return Float.intBitsToFloat(fl);
}
public static byte[] WordFromInteger(int i, boolean toLittleEndian) {
byte[] Bint = BytesFromInt(i, toLittleEndian);
byte[] toReturn = new byte[2];
if (toLittleEndian)
System.arraycopy(Bint, 0, toReturn, 0, 2);
else
System.arraycopy(Bint, 0, toReturn, 2, 2);
Bint = null;
return toReturn;
}
public static String longToHexStr(Long l, boolean toLittleEndian) throws IOException {
ByteArrayOutputStream doubleByteArray = new ByteArrayOutputStream();
DataOutputStream Data = new DataOutputStream(doubleByteArray);
Data.writeLong(l.longValue());
Data.flush();
byte[] temp = doubleByteArray.toByteArray();
Data.close();
doubleByteArray.close();
Data = null;
doubleByteArray = null;
if (toLittleEndian) {
int i = 0; for (int j = 7; i < 4; ) {
byte tempo = temp[j];
temp[j] = temp[i];
temp[i] = tempo;
++i; --j;
}
}
return HexFromBytes(temp);
}
public static String HexByteFromInteger(int i) {
String hx = Integer.toHexString(i);
if (hx.length() < 2)
hx = "0" + hx;
else hx = hx.substring(0, 2);
return hx;
}
public static String FloatToHexStr(float f, boolean toLittleEndian) {
String toReturn = "";
byte[] temp = BytesFromInt(Float.floatToRawIntBits(f), toLittleEndian);
toReturn = HexFromBytes(temp);
temp = null;
return toReturn;
}
public static int BytestoInt(byte[] data, int ofs, boolean changeEndian) {
byte[] temp = { data[(ofs + 0)], data[(ofs + 1)], data[(ofs + 2)], data[(ofs + 3)] };
if (changeEndian)
ChangeEndian(temp, 0);
int bits = temp[0] << 24 | (temp[1] & 0xFF) << 16 | (temp[2] & 0xFF) << 8 | temp[3] & 0xFF;
return bits;
}
public static String md5(String key)
{
byte[] uniqueKey = key.getBytes();
byte[] hash = null;
try
{
hash = MessageDigest.getInstance("MD5").digest(uniqueKey);
} catch (NoSuchAlgorithmException e) {
throw new Error("no MD5 support in this VM");
}
StringBuffer hashString = new StringBuffer();
for (int i = 0; i < hash.length; ++i) {
String hex = Integer.toHexString(hash[i]);
if (hex.length() == 1) {
hashString.append('0');
hashString.append(hex.charAt(hex.length() - 1));
} else {
hashString.append(hex.substring(hex.length() - 2)); }
}
return hashString.toString();
}
public static long checkSum(byte[] data) {
Checksum checksumEngine = new CRC32();
checksumEngine.update(data, 0, data.length);
return checksumEngine.getValue();
}
}