备用源域名脱敏

This commit is contained in:
cyh 2025-04-10 16:54:05 +08:00
parent 200286485d
commit 89d650f913
1 changed files with 37 additions and 5 deletions

View File

@ -26,7 +26,7 @@ class DomainListAdapter(layoutResId: Int) :
var selectedPosition: Int = -1
var addressIndex=1
var addressIndex = 1
override fun convert(holder: BaseViewHolder, item: DomainItemBean) {
val domainSelectedTv = holder.getView<TextView>(R.id.domain_selected_tv)
@ -42,14 +42,46 @@ class DomainListAdapter(layoutResId: Int) :
if (!TextUtils.isEmpty(item.address)) {
var mmkv = MMKV.defaultMMKV()
val fhost = mmkv.decodeString(BZYConstants.MMKV_KEY_FIRST_HOST, "")
var showAddress= item.address.replace(Regex("https://"), "")
if (item.address==fhost){
showAddress+=" (推荐)"
var showAddress = item.address.replace(Regex("https://"), "")
// **脱敏处理**
showAddress = maskSensitiveInfo(showAddress)
if (item.address == fhost) {
showAddress += " (推荐)"
}
addressName.text =showAddress
addressName.text = showAddress
}
// addressName.text = "地址${addressIndex}"
addressIndex++
}
private fun maskSensitiveInfo(address: String): String {
val parts = address.split(".")
return if (parts.size > 2) {
// 处理中间部分,只脱敏每个部分的核心字符
val maskedParts = parts.mapIndexed { index, part ->
if (index == 0 || index == parts.size - 1) {
part // 首尾部分不变
} else {
maskMiddleCharacters(part) // 处理中间部分
}
}
maskedParts.joinToString(".") // 重新组合成域名
} else {
address // 只有两部分时不脱敏
}
}
private fun maskMiddleCharacters(text: String): String {
return when {
text.length > 2 -> {
val firstChar = text.first()
val lastChar = text.last()
val maskedMiddle = "*".repeat(text.length - 2)
"$firstChar$maskedMiddle$lastChar"
}
else -> "*".repeat(text.length) // 长度 ≤ 2 时,全替换为 *
}
}
}