SameMD5.java 源代码
package com.mbridge.msdk.foundation.tools;
import android.text.TextUtils;
import com.mbridge.msdk.playercommon.exoplayer2.metadata.id3.InternalFrame;
import com.mbridge.msdk.system.NoProGuard;
import com.umeng.analytics.pro.bx;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;
public class SameMD5 implements NoProGuard {
public static final String TAG = "MD5";
public static String ByteArrayToHexString(byte[] bArr) {
if (bArr == null || bArr.length == 0) {
return "";
}
int length = bArr.length * 2;
byte[] bArr2 = new byte[length];
for (int i6 = 0; i6 < length; i6++) {
bArr2[i6] = 48;
}
byte[] bArr3 = new byte[bArr.length + 1];
bArr3[0] = 0;
System.arraycopy(bArr, 0, bArr3, 1, bArr.length);
byte[] bytes = new BigInteger(bArr3).toString(16).getBytes();
System.arraycopy(bytes, 0, bArr2, length - bytes.length, bytes.length);
return new String(bArr2);
}
private static String HexEncode(byte[] bArr) {
StringBuilder sb = new StringBuilder(bArr.length * 2);
for (byte b6 : bArr) {
sb.append(Integer.toHexString((b6 & 240) >>> 4));
sb.append(Integer.toHexString(b6 & bx.f20591m));
}
return sb.toString().toLowerCase(Locale.US);
}
private static String UpHexEncode(byte[] bArr) {
StringBuilder sb = new StringBuilder(bArr.length * 2);
for (byte b6 : bArr) {
sb.append(Integer.toHexString((b6 & 240) >>> 4));
sb.append(Integer.toHexString(b6 & bx.f20591m));
}
return sb.toString().toUpperCase(Locale.US);
}
public static String getMD5(String str) {
if (TextUtils.isEmpty(str)) {
return str;
}
try {
q.a("MD5", str);
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes());
return HexEncode(messageDigest.digest());
} catch (NoSuchAlgorithmException e6) {
e6.printStackTrace();
return "";
}
}
public static String getQftJSMD5(String str) {
try {
byte[] qftJSMD5Bytes = getQftJSMD5Bytes(str);
char[] cArr = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(qftJSMD5Bytes);
byte[] digest = messageDigest.digest();
char[] cArr2 = new char[digest.length * 2];
int i6 = 0;
for (byte b6 : digest) {
int i7 = i6 + 1;
cArr2[i6] = cArr[(b6 >>> 4) & 15];
i6 = i7 + 1;
cArr2[i7] = cArr[b6 & bx.f20591m];
}
return new String(cArr2);
} catch (Exception e6) {
e6.printStackTrace();
return "";
}
}
public static byte[] getQftJSMD5Bytes(String str) throws UnsupportedEncodingException {
int length = str.length();
byte[] bytes = str.getBytes("UTF-16LE");
q.b(InternalFrame.ID, "b = " + ByteArrayToHexString(bytes));
byte[] bArr = new byte[length];
int i6 = 0;
for (int i7 = 0; i7 < bytes.length; i7 += 2) {
byte b6 = bytes[i7];
if (b6 != -1 && b6 != -2) {
bArr[i6] = b6;
i6++;
if (i6 == length) {
break;
}
}
}
q.b(InternalFrame.ID, "source = " + ByteArrayToHexString(bArr));
return bArr;
}
public static String getUPMD5(String str) {
try {
q.a("MD5", str);
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes());
return UpHexEncode(messageDigest.digest());
} catch (NoSuchAlgorithmException e6) {
e6.printStackTrace();
return "";
}
}
}