Update AnimekaiDecoder.kt

This commit is contained in:
Arkai1 2025-04-12 20:02:55 +05:30 committed by GitHub
parent ac7c7fed85
commit 619df77a1e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.animeextension.en.animekai
import android.util.Base64
import java.net.URLEncoder
import java.nio.charset.StandardCharsets
import java.security.MessageDigest
import javax.crypto.Cipher
import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.SecretKeySpec
@ -10,8 +11,8 @@ import javax.crypto.spec.SecretKeySpec
class AnimekaiDecoder {
fun generateToken(id: String): String {
val timestamp = (System.currentTimeMillis() / 1000).toString()
val base = "$id|$timestamp"
val time = (System.currentTimeMillis() / 1000).toString()
val base = "$id|$time"
val encrypted = encrypt(base)
return URLEncoder.encode(encrypted, StandardCharsets.UTF_8.toString())
}
@ -20,30 +21,6 @@ class AnimekaiDecoder {
return decrypt(data)
}
fun decode(base64Data: String, steps: List<List<String>>): String {
var result = base64Data
for (step in steps) {
when (step[0]) {
"replace" -> {
result = result.replace(step[1], step[2])
}
"reverse" -> {
result = result.reversed()
}
"base64" -> {
result = decodeBase64(result).toString(StandardCharsets.UTF_8)
}
"xor" -> {
val key = step[1].toByteArray(StandardCharsets.UTF_8)
val bytes = decodeBase64(result)
val xored = bytes.mapIndexed { i, b -> b xor key[i % key.size] }.toByteArray()
result = xored.toString(StandardCharsets.UTF_8)
}
}
}
return result
}
private fun encrypt(text: String): String {
val keyBytes = decodeBase64(SECRET)
val ivSpec = IvParameterSpec(IV.toByteArray(StandardCharsets.UTF_8))
@ -80,4 +57,4 @@ class AnimekaiDecoder {
return Base64.encodeToString(data, Base64.NO_WRAP)
}
}
}
}