java 编码解码Samsung Note 8 omc文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 编码解码Samsung Note 8 omc文本相关的知识,希望对你有一定的参考价值。

import java.io.*;
import java.util.zip.Deflater;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class OmcTextDecoder {
    private final int SALT_LENGTH = 256;
    private final String XML_HEADER = "<?xml";
    private final byte[] salts = new byte[]{(byte) 65, (byte) -59, (byte) 33, (byte) -34, (byte) 107, (byte) 28, (byte) -107, (byte) 55, (byte) 78, (byte) 17, (byte) -81, (byte) 6, (byte) -80, (byte) -121, (byte) -35, (byte) -23, (byte) 72, (byte) 122, (byte) -63, (byte) -43, (byte) 68, (byte) 119, (byte) -78, (byte) -111, (byte) -60, (byte) 31, (byte) 60, (byte) 57, (byte) 92, (byte) -88, (byte) -100, (byte) -69, (byte) -106, (byte) 91, (byte) 69, (byte) 93, (byte) 110, (byte) 23, (byte) 93, (byte) 53, (byte) -44, (byte) -51, (byte) 64, (byte) -80, (byte) 46, (byte) 2, (byte) -4, (byte) 12, (byte) -45, (byte) 80, (byte) -44, (byte) -35, (byte) -111, (byte) -28, (byte) -66, (byte) -116, (byte) 39, (byte) 2, (byte) -27, (byte) -45, (byte) -52, (byte) 125, (byte) 39, (byte) 66, (byte) -90, (byte) 63, (byte) -105, (byte) -67, (byte) 84, (byte) -57, (byte) -4, (byte) -4, (byte) 101, (byte) -90, (byte) 81, (byte) 10, (byte) -33, (byte) 1, (byte) 67, (byte) -57, (byte) -71, (byte) 18, (byte) -74, (byte) 102, (byte) 96, (byte) -89, (byte) 64, (byte) -17, (byte) 54, (byte) -94, (byte) -84, (byte) -66, (byte) 14, (byte) 119, (byte) 121, (byte) 2, (byte) -78, (byte) -79, (byte) 89, (byte) 63, (byte) 93, (byte) 109, (byte) -78, (byte) -51, (byte) 66, (byte) -36, (byte) 32, (byte) 86, (byte) 3, (byte) -58, (byte) -15, (byte) 92, (byte) 58, (byte) 2, (byte) -89, (byte) -80, (byte) -13, (byte) -1, (byte) 122, (byte) -4, (byte) 48, (byte) 63, (byte) -44, (byte) 59, (byte) 100, (byte) -42, (byte) -45, (byte) 59, (byte) -7, (byte) -17, (byte) -54, (byte) 34, (byte) -54, (byte) 71, (byte) -64, (byte) -26, (byte) -87, (byte) -80, (byte) -17, (byte) -44, (byte) -38, (byte) -112, (byte) 70, (byte) 10, (byte) -106, (byte) 95, (byte) -24, (byte) -4, (byte) -118, (byte) 45, (byte) -85, (byte) -13, (byte) 85, (byte) 25, (byte) -102, (byte) -119, (byte) 13, (byte) -37, (byte) 116, (byte) 46, (byte) -69, (byte) 59, (byte) 42, (byte) -90, (byte) -38, (byte) -105, (byte) 101, (byte) -119, (byte) -36, (byte) 97, (byte) -3, (byte) -62, (byte) -91, (byte) -97, (byte) -125, (byte) 17, (byte) 14, (byte) 106, (byte) -72, (byte) -119, (byte) 99, (byte) 111, (byte) 20, (byte) 18, (byte) -27, (byte) 113, (byte) 64, (byte) -24, (byte) 74, (byte) -60, (byte) -100, (byte) 26, (byte) 56, (byte) -44, (byte) -70, (byte) 12, (byte) -51, (byte) -100, (byte) -32, (byte) -11, (byte) 26, (byte) 48, (byte) -117, (byte) 98, (byte) -93, (byte) 51, (byte) -25, (byte) -79, (byte) -31, (byte) 97, (byte) 87, (byte) -105, (byte) -64, (byte) 7, (byte) -13, (byte) -101, (byte) 33, (byte) -122, (byte) 5, (byte) -104, (byte) 89, (byte) -44, (byte) -117, (byte) 63, (byte) -80, (byte) -6, (byte) -71, (byte) -110, (byte) -29, (byte) -105, (byte) 116, (byte) 107, (byte) -93, (byte) 91, (byte) -41, (byte) -13, (byte) 20, (byte) -115, (byte) -78, (byte) 43, (byte) 79, (byte) -122, (byte) 6, (byte) 102, (byte) -32, (byte) 52, (byte) -118, (byte) -51, (byte) 72, (byte) -104, (byte) 41, (byte) -38, (byte) 124, (byte) 72, (byte) -126, (byte) -35};
    private final byte[] shifts;

    public OmcTextDecoder() {
        byte[] bArr = new byte[256];
        bArr[0] = (byte) 1;
        bArr[1] = (byte) 1;
        bArr[3] = (byte) 2;
        bArr[4] = (byte) 2;
        bArr[5] = (byte) 4;
        bArr[6] = (byte) 5;
        bArr[8] = (byte) 4;
        bArr[9] = (byte) 7;
        bArr[10] = (byte) 1;
        bArr[11] = (byte) 6;
        bArr[12] = (byte) 5;
        bArr[13] = (byte) 3;
        bArr[14] = (byte) 3;
        bArr[15] = (byte) 1;
        bArr[16] = (byte) 2;
        bArr[17] = (byte) 5;
        bArr[19] = (byte) 6;
        bArr[20] = (byte) 2;
        bArr[21] = (byte) 2;
        bArr[22] = (byte) 4;
        bArr[23] = (byte) 2;
        bArr[24] = (byte) 2;
        bArr[25] = (byte) 3;
        bArr[27] = (byte) 2;
        bArr[28] = (byte) 1;
        bArr[29] = (byte) 2;
        bArr[30] = (byte) 4;
        bArr[31] = (byte) 3;
        bArr[32] = (byte) 4;
        bArr[36] = (byte) 3;
        bArr[37] = (byte) 5;
        bArr[38] = (byte) 3;
        bArr[39] = (byte) 1;
        bArr[40] = (byte) 6;
        bArr[41] = (byte) 5;
        bArr[42] = (byte) 6;
        bArr[43] = (byte) 1;
        bArr[44] = (byte) 1;
        bArr[45] = (byte) 1;
        bArr[48] = (byte) 3;
        bArr[49] = (byte) 2;
        bArr[50] = (byte) 7;
        bArr[51] = (byte) 7;
        bArr[52] = (byte) 5;
        bArr[53] = (byte) 6;
        bArr[54] = (byte) 7;
        bArr[55] = (byte) 3;
        bArr[56] = (byte) 5;
        bArr[57] = (byte) 1;
        bArr[59] = (byte) 7;
        bArr[60] = (byte) 6;
        bArr[61] = (byte) 3;
        bArr[62] = (byte) 6;
        bArr[63] = (byte) 5;
        bArr[64] = (byte) 4;
        bArr[65] = (byte) 5;
        bArr[66] = (byte) 3;
        bArr[67] = (byte) 5;
        bArr[68] = (byte) 1;
        bArr[69] = (byte) 3;
        bArr[70] = (byte) 3;
        bArr[71] = (byte) 1;
        bArr[72] = (byte) 5;
        bArr[73] = (byte) 4;
        bArr[74] = (byte) 1;
        bArr[77] = (byte) 2;
        bArr[78] = (byte) 6;
        bArr[79] = (byte) 6;
        bArr[80] = (byte) 6;
        bArr[81] = (byte) 6;
        bArr[82] = (byte) 4;
        bArr[84] = (byte) 1;
        bArr[85] = (byte) 1;
        bArr[87] = (byte) 5;
        bArr[88] = (byte) 5;
        bArr[89] = (byte) 4;
        bArr[90] = (byte) 2;
        bArr[91] = (byte) 4;
        bArr[92] = (byte) 6;
        bArr[93] = (byte) 1;
        bArr[94] = (byte) 7;
        bArr[95] = (byte) 1;
        bArr[96] = (byte) 2;
        bArr[97] = (byte) 1;
        bArr[98] = (byte) 1;
        bArr[99] = (byte) 6;
        bArr[100] = (byte) 5;
        bArr[101] = (byte) 4;
        bArr[102] = (byte) 7;
        bArr[103] = (byte) 6;
        bArr[104] = (byte) 5;
        bArr[105] = (byte) 1;
        bArr[106] = (byte) 6;
        bArr[107] = (byte) 7;
        bArr[109] = (byte) 2;
        bArr[110] = (byte) 6;
        bArr[111] = (byte) 3;
        bArr[112] = (byte) 1;
        bArr[113] = (byte) 7;
        bArr[114] = (byte) 1;
        bArr[115] = (byte) 1;
        bArr[116] = (byte) 7;
        bArr[117] = (byte) 4;
        bArr[119] = (byte) 4;
        bArr[120] = (byte) 2;
        bArr[121] = (byte) 5;
        bArr[122] = (byte) 3;
        bArr[123] = (byte) 1;
        bArr[124] = (byte) 1;
        bArr[125] = (byte) 5;
        bArr[126] = (byte) 6;
        bArr[128] = (byte) 3;
        bArr[129] = (byte) 5;
        bArr[130] = (byte) 3;
        bArr[131] = (byte) 6;
        bArr[132] = (byte) 5;
        bArr[133] = (byte) 7;
        bArr[134] = (byte) 2;
        bArr[135] = (byte) 5;
        bArr[136] = (byte) 6;
        bArr[137] = (byte) 6;
        bArr[138] = (byte) 2;
        bArr[139] = (byte) 2;
        bArr[140] = (byte) 3;
        bArr[141] = (byte) 6;
        bArr[143] = (byte) 4;
        bArr[144] = (byte) 3;
        bArr[145] = (byte) 2;
        bArr[147] = (byte) 2;
        bArr[148] = (byte) 2;
        bArr[149] = (byte) 3;
        bArr[150] = (byte) 5;
        bArr[151] = (byte) 3;
        bArr[152] = (byte) 3;
        bArr[153] = (byte) 2;
        bArr[154] = (byte) 5;
        bArr[155] = (byte) 5;
        bArr[156] = (byte) 5;
        bArr[157] = (byte) 1;
        bArr[158] = (byte) 3;
        bArr[159] = (byte) 1;
        bArr[160] = (byte) 1;
        bArr[161] = (byte) 1;
        bArr[162] = (byte) 4;
        bArr[163] = (byte) 5;
        bArr[164] = (byte) 1;
        bArr[165] = (byte) 6;
        bArr[166] = (byte) 2;
        bArr[167] = (byte) 4;
        bArr[168] = (byte) 7;
        bArr[169] = (byte) 1;
        bArr[170] = (byte) 4;
        bArr[171] = (byte) 6;
        bArr[173] = (byte) 6;
        bArr[174] = (byte) 4;
        bArr[175] = (byte) 3;
        bArr[176] = (byte) 2;
        bArr[177] = (byte) 6;
        bArr[178] = (byte) 1;
        bArr[179] = (byte) 6;
        bArr[180] = (byte) 3;
        bArr[181] = (byte) 2;
        bArr[182] = (byte) 1;
        bArr[183] = (byte) 6;
        bArr[184] = (byte) 7;
        bArr[185] = (byte) 3;
        bArr[186] = (byte) 2;
        bArr[187] = (byte) 1;
        bArr[188] = (byte) 1;
        bArr[189] = (byte) 5;
        bArr[190] = (byte) 6;
        bArr[191] = (byte) 7;
        bArr[192] = (byte) 2;
        bArr[193] = (byte) 2;
        bArr[194] = (byte) 2;
        bArr[195] = (byte) 7;
        bArr[196] = (byte) 4;
        bArr[197] = (byte) 6;
        bArr[198] = (byte) 7;
        bArr[199] = (byte) 5;
        bArr[200] = (byte) 3;
        bArr[201] = (byte) 1;
        bArr[202] = (byte) 4;
        bArr[203] = (byte) 2;
        bArr[204] = (byte) 7;
        bArr[205] = (byte) 1;
        bArr[206] = (byte) 6;
        bArr[207] = (byte) 2;
        bArr[208] = (byte) 4;
        bArr[209] = (byte) 1;
        bArr[210] = (byte) 5;
        bArr[211] = (byte) 6;
        bArr[212] = (byte) 5;
        bArr[213] = (byte) 4;
        bArr[214] = (byte) 5;
        bArr[216] = (byte) 1;
        bArr[217] = (byte) 1;
        bArr[218] = (byte) 6;
        bArr[219] = (byte) 3;
        bArr[220] = (byte) 7;
        bArr[221] = (byte) 2;
        bArr[223] = (byte) 2;
        bArr[224] = (byte) 5;
        bArr[226] = (byte) 1;
        bArr[227] = (byte) 3;
        bArr[228] = (byte) 3;
        bArr[229] = (byte) 2;
        bArr[230] = (byte) 6;
        bArr[231] = (byte) 7;
        bArr[232] = (byte) 7;
        bArr[233] = (byte) 2;
        bArr[234] = (byte) 5;
        bArr[235] = (byte) 6;
        bArr[237] = (byte) 4;
        bArr[238] = (byte) 1;
        bArr[239] = (byte) 2;
        bArr[240] = (byte) 5;
        bArr[241] = (byte) 3;
        bArr[242] = (byte) 7;
        bArr[243] = (byte) 6;
        bArr[244] = (byte) 5;
        bArr[245] = (byte) 2;
        bArr[246] = (byte) 5;
        bArr[247] = (byte) 2;
        bArr[249] = (byte) 1;
        bArr[250] = (byte) 3;
        bArr[251] = (byte) 1;
        bArr[252] = (byte) 4;
        bArr[253] = (byte) 3;
        bArr[254] = (byte) 4;
        bArr[255] = (byte) 2;
        this.shifts = bArr;
    }

    private byte[] _decode(byte[] source) {
        byte[] results = new byte[source.length];
        for (int i = 0; i < source.length; i++) {
            results[i] = (byte) (((source[i] & 255) << this.shifts[i % 256]) | ((source[i] & 255) >>> (8 - this.shifts[i % 256])));
            results[i] = (byte) (results[i] ^ this.salts[i % 256]);
        }
        return results;
    }

    private byte[] _encode(byte[] source) {
        byte[] results = new byte[source.length];
        for (int i = 0; i < source.length; i++) {
            results[i] = (byte) (source[i] ^ this.salts[i % 256]);
            results[i] = (byte) (((results[i] & 255) >> this.shifts[i % 256]) | ((results[i] & 255) << (8 - this.shifts[i % 256])));
        }
        return results;
    }

    private byte[] _decompressGzip(byte[] sourceGz) throws IOException {
        ByteArrayInputStream bis = new ByteArrayInputStream(sourceGz);
        GZIPInputStream gis = new GZIPInputStream(bis);
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int nRead;
        byte[] data = new byte[1024];
        while ((nRead = gis.read(data, 0, data.length)) != -1) {
            buffer.write(data, 0, nRead);
        }
        buffer.flush();
        return buffer.toByteArray();
    }

    private byte[] _compressGzip(byte[] data) throws IOException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length);
        GZIPOutputStream gzip = new GZIPOutputStream(bos) {
            {
                this.def.setLevel(Deflater.BEST_COMPRESSION);
            }
        };
        gzip.write(data);
        gzip.finish();
        gzip.close();
        byte[] compressed = bos.toByteArray();
        bos.close();
        return compressed;
    }

    public boolean isXmlEncoded(File featureXmlFile) {
        try {
            BufferedReader ptrRead = new BufferedReader(new FileReader(featureXmlFile));
            String headerStr = ptrRead.readLine();
            if (ptrRead != null) {
                ptrRead.close();
            }
            if (headerStr.contains("<?xml")) {
                return false;
            }
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public byte[] decode(File fileName) throws IOException {
        return _decompressGzip(_decode(fileToByteArray(fileName)));
    }

    public byte[] encode(File fileName) throws IOException {
        return _encode(_compressGzip(fileToByteArray(fileName)));
    }

    private byte[] fileToByteArray(File fileName) {
        try {
            FileInputStream fi = new FileInputStream(fileName);
            byte[] source = new byte[fi.available()];
            fi.read(source);
            fi.close();
            return source;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e2) {
            e2.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {

    }
}

以上是关于java 编码解码Samsung Note 8 omc文本的主要内容,如果未能解决你的问题,请参考以下文章

java中编码与解码分别指啥?

网络I/o编程模型19 netty的编码与解码

java里关于String的编码与解码

Samsung Galaxy Note20 Ultra 充电曲线图

Samsung Galaxy Note20 Ultra 充电曲线图

Samsung Galaxy Note20 Ultra 充电曲线图