package com.umeng.commonsdk.statistics.common; import android.text.TextUtils; import androidx.core.view.InputDeviceCompat; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.StringWriter; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import kotlin.UByte; public class HelperUtils { public static final String LINE_SEPARATOR = System.getProperty("line.separator"); private static final String TAG = "helper"; public static String subStr(String str, int i) { try { if (!TextUtils.isEmpty(str)) { String substring = str.substring(0, str.length() < i ? str.length() : i); int length = substring.getBytes("UTF-8").length; int i2 = i; while (length > i) { i2--; substring = str.substring(0, i2 > str.length() ? str.length() : i2); length = substring.getBytes("UTF-8").length; } return substring; } } catch (Exception e) { MLog.e(e); } return ""; } public static boolean checkStrLen(String str, int i) { try { return !TextUtils.isEmpty(str) && str.length() <= i; } catch (Exception unused) { return false; } } public static String MD5(String str) { if (str == null) { return null; } try { byte[] bytes = str.getBytes(); MessageDigest instance = MessageDigest.getInstance("MD5"); instance.reset(); instance.update(bytes); byte[] digest = instance.digest(); StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < digest.length; i++) { stringBuffer.append(String.format("%02X", Byte.valueOf(digest[i]))); } return stringBuffer.toString(); } catch (Exception unused) { return str.replaceAll("[^[a-z][A-Z][0-9][.][_]]", ""); } } public static String getUmengMD5(String str) { try { MessageDigest instance = MessageDigest.getInstance("MD5"); instance.update(str.getBytes()); byte[] digest = instance.digest(); StringBuffer stringBuffer = new StringBuffer(); for (byte b : digest) { stringBuffer.append(Integer.toHexString(b & UByte.MAX_VALUE)); } return stringBuffer.toString(); } catch (Throwable th) { MLog.i(TAG, "getMD5 error", th); return ""; } } public static String getMD5(String str) { try { MessageDigest instance = MessageDigest.getInstance("MD5"); instance.update(str.getBytes()); byte[] digest = instance.digest(); StringBuffer stringBuffer = new StringBuffer(); for (byte b : digest) { stringBuffer.append(Integer.toHexString((b & UByte.MAX_VALUE) | InputDeviceCompat.SOURCE_ANY).substring(6)); } return stringBuffer.toString(); } catch (NoSuchAlgorithmException e) { MLog.i(TAG, "getMD5 error", e); return ""; } } public static String getFileMD5(File file) { byte[] bArr = new byte[1024]; try { if (!file.isFile()) { return ""; } MessageDigest instance = MessageDigest.getInstance("MD5"); FileInputStream fileInputStream = new FileInputStream(file); while (true) { int read = fileInputStream.read(bArr, 0, 1024); if (read != -1) { instance.update(bArr, 0, read); } else { fileInputStream.close(); return String.format("%1$032x", new BigInteger(1, instance.digest())); } } } catch (Exception unused) { return null; } } public static String readStreamToString(InputStream inputStream) throws IOException { InputStreamReader inputStreamReader = new InputStreamReader(inputStream); char[] cArr = new char[1024]; StringWriter stringWriter = new StringWriter(); while (true) { int read = inputStreamReader.read(cArr); if (-1 == read) { return stringWriter.toString(); } stringWriter.write(cArr, 0, read); } } public static byte[] readStreamToByteArray(InputStream inputStream) throws IOException { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byte[] bArr = new byte[1024]; while (true) { int read = inputStream.read(bArr); if (-1 == read) { return byteArrayOutputStream.toByteArray(); } byteArrayOutputStream.write(bArr, 0, read); } } public static void writeFile(File file, byte[] bArr) throws IOException { FileOutputStream fileOutputStream = new FileOutputStream(file); try { fileOutputStream.write(bArr); fileOutputStream.flush(); } finally { safeClose(fileOutputStream); } } public static void writeFile(File file, String str) throws IOException { writeFile(file, str.getBytes()); } public static String readFile(File file) { FileInputStream fileInputStream; try { if (!file.exists()) { safeClose((InputStream) null); return null; } fileInputStream = new FileInputStream(file); try { byte[] bArr = new byte[fileInputStream.available()]; fileInputStream.read(bArr); String str = new String(bArr); safeClose(fileInputStream); return str; } catch (Throwable unused) { safeClose(fileInputStream); return null; } } catch (Throwable unused2) { fileInputStream = null; safeClose(fileInputStream); return null; } } public static void safeClose(InputStream inputStream) { if (inputStream != null) { try { inputStream.close(); } catch (Exception unused) { } } } public static void safeClose(OutputStream outputStream) { if (outputStream != null) { try { outputStream.close(); } catch (Exception unused) { } } } }