import android.os.Build;
import android.provider.Settings;
import android.content.Context;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class DeviceFingerprint {
// 获取设备指纹信息
public static String getDeviceFingerprint(Context context) {
StringBuilder fingerprint = new StringBuilder();
// 获取设备的 Android ID
String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
fingerprint.append(androidId);
// 获取设备的序列号
String serial = Build.SERIAL;
fingerprint.append(serial);
// 获取设备的硬件信息
String hardware = Build.HARDWARE;
fingerprint.append(hardware);
// 获取设备的制造商和型号
String manufacturer = Build.MANUFACTURER;
String model = Build.MODEL;
fingerprint.append(manufacturer).append(model);
// 获取设备的唯一标识符
String uniqueId = getUniqueId();
fingerprint.append(uniqueId);
// 对设备指纹信息进行哈希处理
String hashedFingerprint = hashString(fingerprint.toString());
return hashedFingerprint;
}
// 生成设备的唯一标识符
private static String getUniqueId() {
String uniqueId = "";
try {
// 获取设备的唯一标识符(可根据需求自定义)
// 例如,可以使用 IMEI(需要权限)或其他标识符
uniqueId = "YOUR_UNIQUE_ID";
} catch (Exception e) {
e.printStackTrace();
}
return uniqueId;
}
// 对字符串进行哈希处理
private static String hashString(String input) {
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hashBytes = digest.digest(input.getBytes());
StringBuilder stringBuilder = new StringBuilder();
for (byte b : hashBytes) {
stringBuilder.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
}
return stringBuilder.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
}
}