翰林优商.apk(点击下载) / CommonUtility.java


package com.baidu.speech.utils.auth;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import com.kuaishou.weapon.p0.b;
import com.umeng.analytics.pro.cb;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.HashMap;
import java.util.UUID;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import kotlin.UByte;

public class CommonUtility {
    private static final String ALGORITHM = "AES/CBC/PKCS5Padding";

    public static byte[] AES_cbc_decrypt(byte[] bArr, byte[] bArr2, byte[] bArr3) {
        try {
            Cipher.getMaxAllowedKeyLength("AES/CBC/PKCS5Padding");
            SecretKeySpec secretKeySpec = new SecretKeySpec(bArr2, b.b);
            Cipher instance = Cipher.getInstance("AES/CBC/PKCS5Padding");
            instance.init(2, secretKeySpec, new IvParameterSpec(bArr3));
            return instance.doFinal(bArr);
        } catch (Exception e) {
            e.printStackTrace();
            return new byte[0];
        }
    }

    public static String AES_cbc_encrypt(String str, String str2, String str3) {
        try {
            Cipher.getMaxAllowedKeyLength("AES/CBC/PKCS5Padding");
            SecretKeySpec secretKeySpec = new SecretKeySpec(str2.getBytes("utf-8"), b.b);
            Cipher instance = Cipher.getInstance("AES/CBC/PKCS5Padding");
            instance.init(1, secretKeySpec, new IvParameterSpec(str3.getBytes("utf-8")));
            return parseByte2HexStr(instance.doFinal(str.getBytes("utf-8")));
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static byte[] addCAFHeaderForPCMData(byte[] bArr) {
        if (bArr == null || bArr.length == 0) {
            return null;
        }
        long length = (long) bArr.length;
        long j = 44 + length;
        long j2 = ((16 * j) * ((long) 1)) / 8;
        byte b = (byte) ((int) 0);
        byte[] bArr2 = {82, 73, 70, 70, (byte) ((int) (j & 255)), (byte) ((int) ((j >> 8) & 255)), (byte) ((int) ((j >> 16) & 255)), (byte) ((int) ((j >> 24) & 255)), 87, 65, 86, 69, 102, 109, 116, 32, cb.n, 0, 0, 0, 1, 0, (byte) 1, 0, (byte) ((int) 128), (byte) ((int) 62), b, b, (byte) ((int) (j2 & 255)), (byte) ((int) ((j2 >> 8) & 255)), (byte) ((int) ((j2 >> 16) & 255)), (byte) ((int) ((j2 >> 24) & 255)), 2, 0, cb.n, 0, 100, 97, 116, 97, (byte) ((int) (length & 255)), (byte) ((int) ((length >> 8) & 255)), (byte) ((int) ((length >> 16) & 255)), (byte) ((int) ((length >> 24) & 255))};
        byte[] bArr3 = new byte[(bArr.length + 44)];
        System.arraycopy(bArr2, 0, bArr3, 0, 44);
        System.arraycopy(bArr, 0, bArr3, 44, bArr.length);
        return bArr3;
    }

    public static void asserts(boolean z, String str) {
        if (!z) {
            throw new AssertionError(str);
        }
    }

    private static int[] computeFailure(byte[] bArr) {
        int[] iArr = new int[bArr.length];
        int i = 1;
        int i2 = 0;
        while (i < bArr.length) {
            while (i2 > 0 && bArr[i2] != bArr[i]) {
                i2 = iArr[i2 - 1];
            }
            if (bArr[i2] == bArr[i]) {
                i2++;
            }
            iArr[i] = i2;
            i++;
        }
        return iArr;
    }

    public static byte[] copyBytesOfRange(byte[] bArr, int i, int i2) {
        if (i > i2 || i < 0 || i2 < 0 || i2 > bArr.length) {
            return null;
        }
        byte[] bArr2 = new byte[(i2 - i)];
        for (int i3 = i; i3 < i2; i3++) {
            bArr2[i3 - i] = bArr[i3];
        }
        return bArr2;
    }

    public static String generateSerialNumber() {
        return UUID.randomUUID().toString();
    }

    public static NetworkInfo getNetworkInfo(Context context) {
        return ((ConnectivityManager) context.getSystemService("connectivity")).getActiveNetworkInfo();
    }

    public static int indexOf(byte[] bArr, byte[] bArr2, int i) {
        try {
            int[] computeFailure = computeFailure(bArr2);
            int i2 = 0;
            if (bArr.length == 0 || i >= bArr.length) {
                return -1;
            }
            while (i < bArr.length) {
                while (i2 > 0 && bArr2[i2] != bArr[i]) {
                    i2 = computeFailure[i2 - 1];
                }
                if (bArr2[i2] == bArr[i]) {
                    i2++;
                }
                if (i2 == bArr2.length) {
                    return (i - bArr2.length) + 1;
                }
                i++;
            }
            return -1;
        } catch (Exception unused) {
        }
    }

    public static boolean isNetworkConnected(Context context) {
        NetworkInfo networkInfo = getNetworkInfo(context);
        return networkInfo != null && networkInfo.isConnected();
    }

    public static boolean isWifiConnected(Context context) {
        NetworkInfo networkInfo = getNetworkInfo(context);
        return networkInfo != null && networkInfo.isConnected() && networkInfo.getType() == 1;
    }

    public static String parseByte2HexStr(byte[] bArr) {
        StringBuilder sb = new StringBuilder();
        for (byte b : bArr) {
            String hexString = Integer.toHexString(b & UByte.MAX_VALUE);
            if (hexString.length() == 1) {
                hexString = '0' + hexString;
            }
            sb.append(hexString.toUpperCase());
        }
        return sb.toString();
    }

    public static byte[] parseHexStr2Byte(String str) {
        if (str.length() < 1) {
            return null;
        }
        byte[] bArr = new byte[(str.length() / 2)];
        for (int i = 0; i < str.length() / 2; i++) {
            int i2 = i * 2;
            int i3 = i2 + 1;
            bArr[i] = (byte) ((Integer.parseInt(str.substring(i2, i3), 16) * 16) + Integer.parseInt(str.substring(i3, i2 + 2), 16));
        }
        return bArr;
    }

    public static boolean ping6(String str) {
        try {
            String str2 = "ping6 -c 1 -W 1 " + str;
            return Runtime.getRuntime().exec(str2).waitFor() == 0 || Runtime.getRuntime().exec(str2).waitFor() == 0 || Runtime.getRuntime().exec(str2).waitFor() == 0;
        } catch (InterruptedException e) {
            e.printStackTrace();
            return false;
        } catch (IOException e2) {
            e2.printStackTrace();
            return false;
        }
    }

    public static byte[] shortArrayToByteArray(short[] sArr) {
        int length = sArr.length;
        ByteBuffer allocate = ByteBuffer.allocate(sArr.length * 2);
        allocate.clear();
        allocate.order(ByteOrder.nativeOrder());
        for (int i = 0; i < length; i++) {
            allocate.putShort(i * 2, sArr[i]);
        }
        return allocate.array();
    }

    public static String urlEncoded(HashMap<String, String> hashMap) {
        String str;
        StringBuilder sb = new StringBuilder();
        int i = 0;
        for (String str2 : hashMap.keySet()) {
            String str3 = hashMap.get(str2);
            if (str3 == null) {
                str3 = "";
            }
            Object[] objArr = new Object[2];
            if (i == 0) {
                objArr[0] = str2;
                objArr[1] = URLEncoder.encode(str3, "utf-8");
                str = String.format("%s=%s", objArr);
            } else {
                objArr[0] = str2;
                objArr[1] = URLEncoder.encode(str3, "utf-8");
                str = String.format("&%s=%s", objArr);
            }
            sb.append(str);
            i++;
        }
        return sb.toString();
    }
}