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(); } }