备用源域名脱敏
This commit is contained in:
parent
200286485d
commit
89d650f913
|
|
@ -43,6 +43,9 @@ class DomainListAdapter(layoutResId: Int) :
|
||||||
var mmkv = MMKV.defaultMMKV()
|
var mmkv = MMKV.defaultMMKV()
|
||||||
val fhost = mmkv.decodeString(BZYConstants.MMKV_KEY_FIRST_HOST, "")
|
val fhost = mmkv.decodeString(BZYConstants.MMKV_KEY_FIRST_HOST, "")
|
||||||
var showAddress = item.address.replace(Regex("https://"), "")
|
var showAddress = item.address.replace(Regex("https://"), "")
|
||||||
|
// **脱敏处理**
|
||||||
|
showAddress = maskSensitiveInfo(showAddress)
|
||||||
|
|
||||||
if (item.address == fhost) {
|
if (item.address == fhost) {
|
||||||
showAddress += " (推荐)"
|
showAddress += " (推荐)"
|
||||||
}
|
}
|
||||||
|
|
@ -52,4 +55,33 @@ class DomainListAdapter(layoutResId: Int) :
|
||||||
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 时,全替换为 *
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue