
5分钟看懂my-tv密码保护直播请求的签名机制一次讲透【免费下载链接】my-tv我的电视 电视直播软件安装即可使用项目地址: https://gitcode.com/GitHub_Trending/my/my-tv客厅里的电视谁都能碰遥控器落到家人手里是常事。但每次切换频道应用怎么证明这个请求确实来自你、来自这台电视这就是 my-tv 里一套密码保护与加密机制在干的事。本文用大白话把它讲明白签名在哪一步生成、加密算法藏在哪、你拨的开关存到哪里读完你能自己打开仓库找到对应代码。先跑起来三步看到设置页 第一步把 my-tv 的 apk 装到电视或盒子上U盘拷入安装即可。第二步装上就能播不用注册登录。第三步按遥控器中间的方向键打开菜单就能看到设置页——上面有四个开关频道反转、频道号显示、时间显示、开机自启。这四个开关的界面长什么样写在app/src/main/res/layout/setting.xml每个开关背后的逻辑则集中在SettingFragment.kt里。加密到底在哪算把原理拆成三层第一层Kotlin 只报名字。入口文件是app/src/main/java/com/lizongying/mytv/Encryptor.kt加密调用的入口整个文件不到 20 行它没有写任何算法只声明了方法签名external fun encrypt(t: String, e: String, r: String, n: String, i: String): String external fun hash(data: ByteArray): ByteArray? external fun hash2(data: ByteArray): ByteArray?external的意思是函数体不在这里在别处实现。类加载时通过System.loadLibrary(native)载入一个预编译的原生库Kotlin 这边只负责按名字喊人。第二层JNI 是过桥通道。Kotlin 不能直接执行 C 代码每次调用hash系统会顺着 JNI 桥找到本地库里同名函数把字节数组交过去再把结果拿回来。你可以把这一层理解成传菜口点单的在前厅做菜的后厨。第三层真正的计算在 .so 里。算法实现编译成了app/src/main/cpp/arm64-v8a/下的libnative.soarmeabi-v7a 等架构也各有一份。加密运算发生在原生层反编译 APK 只能看到方法名看不到算法源码——这是 TV 应用保护敏感逻辑的常见做法。哈希校验发生在哪一步 真正用密码锁住请求的地方在app/src/main/java/com/lizongying/mytv/api/YSP.kt。每次切台应用把频道号、时间戳、设备 ID 等参数拼成一条字符串交给hash算出一串指纹哈希把内容打散成不可逆的摘要再转成 16 进制文本这就是 signatureval hashedData encryptor.hash(e) ?: return return hashedData.joinToString() { %02x.format(it) }没有正确的签名服务端就不会发播放地址。hash和hash2对应两套不同的签名规则切台时用前者取播放地址时用后者encrypt()则负责生成请求里的加密参数 cKey。指纹的特性是单向的——拿着它反推不出原始参数。设置项都存到哪里去了每次拨动开关SettingFragment.kt会把开关状态写进SP.kt里对应的属性后者是对 Android SharedPreferences 的封装写入后立刻落盘。下次启动时开关状态读回来你上次拨到哪就还是哪。设备标识 guid 也放在 SP 里首次启动生成一个之后每次签名都复用它。只有切换失败重试时才会换新 guid所以签名始终绑定的是一台认识的设备。想继续深挖从哪几个文件入手Encryptor.kt加密调用入口四个方法签名看懂了桥这层就通了YSP.kt签名与 cKey 的生成现场SP.kt所有配置的存取全文不到 100 行app/src/main/cpp/目录只放编译产物别在这里找算法源码 ⚠️如果你有自己的想法可以围绕 YSP.kt 的签名流程做增量开发或者在 SP 的存储结构上扩展自己的配置项。下一步动作在电视上打开 my-tv按遥控器中间键进入设置页对照上面四个开关逐项拨一遍然后打开Encryptor.kt读完那三个方法签名——你就已经摸清了整套密码保护的骨架。【免费下载链接】my-tv我的电视 电视直播软件安装即可使用项目地址: https://gitcode.com/GitHub_Trending/my/my-tv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考