lolPing房间如何做到端到端加密:scrypt、AES-256-GCM与Nostr中继全解析
【免费下载链接】lolPingLeague of Legends ping wheel for your Windows desktop. Hold Alt, drag, and ping anywhere, with the original animations and sounds.项目地址https://gitcode.com/gh_mirrors/lo/lolPing点击查看免费下载lolPing 是一款让《英雄联盟》信号ping出现在整个桌面的工具按住 Alt 拖动即可在任何应用上方发出带原声动画的信号。多人房间功能允许朋友之间互相看到对方的信号而所有房间消息都经过端到端加密——即使信号要绕经公网 Nostr 中继中继方也只能看到无法解读的密文。这篇文章完整解析 lolPing 房间加密的技术路径从房间码出发经过 scrypt 密钥派生、AES-256-GCM 加密最终通过 Nostr 公网上线带你看清每一层是如何守护你的 ping 的。一、为什么房间信号需要端到端加密 在 lolPing 的Settings → Room页面创建一个房间会得到类似PING-7KQ4M-2HXTR的房间码。把它发给朋友后每个人的屏幕上都会出现对方的信号位置按各自分辨率等比换算和昵称。房间有两条网络路径同一局域网通过 UDP 直连走 src/main/lanTransport.ts不同网络加密数据包被封装成 Nostr 事件经由 6 个免费公共中继转发走 src/main/relayTransport.ts。第二条路径意味着你的数据要路过第三方服务器。如果信号内容明文传输中继运营方就能看到你 ping 了什么、在哪 ping、你叫什么名字。所以 lolPing 选择了端到端加密数据在发送方就变成密文只有持有房间码的人能解开。二、房间码一个敢念出口的密码房间码是整套加密体系的根。它的生成规则在 src/shared/roomCode.tsCrockford Base32 编码字母表0123456789ABCDEFGHJKMNPQRSTVWXYZ刻意去掉了 I、L、O、U避免口头传递时 B/8、O/0 混淆10 位字符9 位随机 1 位校验位Luhn mod 32 校验位能捕获任何单字符输错以及大多数两位交换错误——输错一个字母加入时会直接提示mistyped而不是静默失败。解析逻辑 parseRoomCode() 还很宽容聊天消息里夹带、全角字符、O/I 误输成 0/1 都能识别出来方便你直接把朋友发的整段话贴进Join from clipboard。三、从房间码到密钥scrypt 派生的门道 拿到 10 位标准码后deriveRoomKeys() 用两步把它变成两套密钥第 1 步scrypt 慢哈希生成主密钥。参数是N 2^15, r 8, p 1盐值固定为lolping/room/v1输出 32 字节主密钥。为什么不用普通哈希因为中继订阅话题relay topic也是从房间码派生的。如果派生函数计算太快攻击者拿到一个 topic 后就能大规模离线暴力和房间码对账。scrypt 是内存密集型函数memory-hard每次尝试都要占用 32 MB 内存把猜码这件事在经济上直接判了死刑。第 2 步HKDF-SHA256 把主密钥拆成两个专钥。派生标签用途msgmsgKeyAES-256-GCM 的消息加密密钥永不离开主进程sig-roomrelayTopic64 位十六进制的中继订阅话题这就是one key, one job原则即使其中一个用途的密钥泄露也不会牵连另一个。而且relayTopic本身就是 64 位随机值的十六进制——没有房间码的人看到它和看一串雪花噪点没有区别。四、AES-256-GCM一个信号包是如何被加密的每条消息presence 成员信息、ping 信号、emote 表情、bye 离开通知在 src/main/roomCrypto.ts 中被seal()打包格式只有四种字段拼起来[ 0x01 格式标记 ][ 12 字节随机 nonce ][ AES-256-GCM 密文 ][ 16 字节 auth tag ]三个关键设计点每条消息一个全新随机 noncerandomBytes(12)。GCM 模式下 nonce 重用是灾难性的随机 nonce 把这个问题彻底绕开格式标记字节同时作为 AAD附加认证数据。接收端open()会校验这个字节防止攻击者用格式合法的别的东西替换真实包GCM 自带完整性校验。密文被篡改哪怕一个比特16 字节 auth tag 校验就会失败open()直接返回null丢弃——加密与防篡改一次到位。包体有硬上限MAX_PACKET 1200字节更大的包既不会发送也不会被读取这既是 UDP 友好的尺寸控制也天然限制了单包体积攻击面。五、Nostr 中继只运密文的公共邮筒 跨网络时加密包如何送达答案是把每个 ≤1200 字节的密封包 base64 编码后装进一个Nostr 事件里src/main/nostrEvent.tskind 24747落在 Nostr 的 ephemeral临时事件区间 20000–29999。按协议约定中继只转发、不落盘会话结束后不留任何历史tagx relayTopic所有成员订阅同一话题一次 publish 全员可见成员之间互相看不到 IP每次加入房间都现生成一对 secp256k1 密钥用 NIP-01 规范对事件签名。签名只是满足中继的防冒名要求真正的安全由房间自己的加密体系负责——所以密钥用完即弃中继清单src/main/relays.ts 里的 6 个公共中继是用 tools/relay-probe 从 16 个候选里筛出来的能接受 kind 24747、30 秒内 5 事件/秒无限流、10 分钟持续连接不掉线。任何成员只要和另一个成员共享一个可用中继就能互通。代码里还留了一条兼容性铁律未来版本必须保留旧列表里至少 3 个中继否则新旧版本互相找不到。六、隐私边界中继到底能看到什么中继能看到中继看不到内容—✅ ping 内容、emote、昵称全是密文身份你的 IP 地址、一个匿名的 64 位房间话题✅ 房间码、成员列表行为你何时在发消息✅ 发了什么局域网成员之间只能看到彼此的内网 IP。如果完全不想让数据碰公网把设置里的Allow internet connections关掉即可房间退化为纯局域网模式。七、纵深防御重放、限速与成员管理 ️加密只是第一层。src/main/roomManager.ts 上还叠了几道闸序列号防重放每条消息带seq序号配合 replayGuard.ts 识别并丢弃重放的旧包中继限速共享中继上每位发送者限 5 包/秒、突发 10 包——因为一次 publish 全员可见公共中继对流量极其敏感接收限制设置页可给每个成员单独调收到的 ping/emote 上限还能静音单人或整个房间房间容量 8 人踢人方式退出后重建新房间。八、代码地图想深挖从哪读起 模块文件职责加密核心src/main/roomCrypto.tsscrypt 派生 AES-256-GCM 密封/开启房间码src/shared/roomCode.ts生成、校验、容错解析消息协议src/shared/roomProtocol.tspresence/ping/emote/bye 定义与校验成员管理src/main/roomManager.ts路由选路、限速、超时踢人中继传输src/main/relayTransport.ts加密包 ↔ Nostr 事件中继清单src/main/relays.ts6 个经过实测的公共中继测试tests/main/relayRoom.test.ts、tests/shared/roomCode.test.ts房间协议与加密测试架构细节路径选择、超时参数、中继判活策略在 docs/design.md 有完整论述单机组一台电脑想体验房间的话可以用 tools/room-peer 脚本扮演一个随机 ping 的假成员试试。一句话总结 lolPing 的加密哲学房间码是唯一秘密——scrypt 让它算不快HKDF 让它一分两用AES-256-GCM 让内容密不透风Nostr ephemeral 事件让密文不留痕。你只需要把 10 个字符告诉朋友剩下的数学来处理。赞分享【免费下载链接】lolPingLeague of Legends ping wheel for your Windows desktop. Hold Alt, drag, and ping anywhere, with the original animations and sounds.项目地址https://gitcode.com/gh_mirrors/lo/lolPing点击查看免费下载相关推荐深度解析Aegis Authenticator安全架构AES-256-GCM与scrypt如何守护你的2FA密钥深度解析Aegis Authenticator安全架构AES 256 GCM与scrypt如何守护你的2FA密钥 Aegis Authenticator 是一移动开发安全如何无信任地验证 Obsidian Sync 端到端加密从密钥派生到 AES-256-GCM 解密实操附 defuddle 提取验证指南如何无信任地验证 Obsidian Sync 端到端加密从密钥派生到 AES 256 GCM 解密实操附 defuddle 提取验证指南 本文以 Obsi后端Apache Pulsar 端到端加密PIP-4实战指南基于 ECDSA/RSA 与 AES-256-GCM 的消息加解密实现Apache Pulsar 端到端加密PIP 4实战指南基于 ECDSA/RSA 与 AES 256 GCM 的消息加解密实现 本文以 Apache Pu消息队列流处理后端微服务消息路由创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Python对象引用机制详解:告别‘指针’误区

Python对象引用机制详解:告别‘指针’误区

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:36:38 阅读更多 →
ixrail AgentPay是什么:在VS Code里给AI Agent装上钱包与预算的完整指南

ixrail AgentPay是什么:在VS Code里给AI Agent装上钱包与预算的完整指南

【免费下载链接】ixrail Chaos 项目地址: https://gitcode.com/gh_mirrors/by/ixrail 点击查看 免费下载 ixrail AgentPay 是一款 VS Code 扩展,它为本地 AI Agent 提供钱包与预算管理:通过 x402 支付协议与 USDC 稳定币结算,让 …

2026/10/16 5:36:38 阅读更多 →
MathModeling-skills完整指南:29个AI Skills如何让你数学建模竞赛不翻车

MathModeling-skills完整指南:29个AI Skills如何让你数学建模竞赛不翻车

AI 技能AI 插件 【免费下载链接】MathModeling-skills 面向数学建模竞赛的 Claude Code / Codex Skills ,支持分阶段建模流程与 Python、MATLAB/北太天元代码分支。 项目地址: https://gitcode.com/gh_mirrors/mat/MathModeling-skills 点击查看 免费下载…

2026/10/16 5:35:38 阅读更多 →

最新新闻

激光雷达点云障碍物检测之欧式聚类:原理、参数与调优实战

激光雷达点云障碍物检测之欧式聚类:原理、参数与调优实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 6:18:51 阅读更多 →
RDKit 增强立体化学(Enhanced Stereochemistry)完全指南:StereoGroup 表示、枚举、反应与文件往返

RDKit 增强立体化学(Enhanced Stereochemistry)完全指南:StereoGroup 表示、枚举、反应与文件往返

科学计算科研机器学习 【免费下载链接】rdkit The official sources for the RDKit library 项目地址: https://gitcode.com/gh_mirrors/rd/rdkit 点击查看 免费下载 RDKit 的增强立体化学(Enhanced Stereochemistry)机制用于表达样品中立体…

2026/10/16 6:18:51 阅读更多 →
GetQzonehistory:三步导出 QQ 空间全部历史说说的完整指南

GetQzonehistory:三步导出 QQ 空间全部历史说说的完整指南

GetQzonehistory:三步导出 QQ 空间全部历史说说的完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 翻 QQ 空间的时间线到几年前,你会发现加载越来越慢&am…

2026/10/16 6:18:51 阅读更多 →
PharmaPy 干法制粒二次开发教程(9):粉碎模块①——磨机类型、筛网角色与 Vogel–Peukert 破碎概率核

PharmaPy 干法制粒二次开发教程(9):粉碎模块①——磨机类型、筛网角色与 Vogel–Peukert 破碎概率核

PharmaPy 干法制粒二次开发教程(9):粉碎模块①——磨机类型、筛网角色与 Vogel–Peukert 破碎概率核版本声明块 工具/软件:本项目二次开发的破碎动力学函数(本系列二次开发示例,非官方 API)&…

2026/10/16 6:18:51 阅读更多 →
PharmaPy 干法制粒二次开发教程(10):粉碎模块②——离散破碎 PBM 的数值实现:Hounslow 几何网格与 Kumar–Ramkrishna 固定枢轴法

PharmaPy 干法制粒二次开发教程(10):粉碎模块②——离散破碎 PBM 的数值实现:Hounslow 几何网格与 Kumar–Ramkrishna 固定枢轴法

PharmaPy 干法制粒二次开发教程(10):粉碎模块②——离散破碎 PBM 的数值实现:Hounslow 几何网格与 Kumar–Ramkrishna 固定枢轴法 版本声明块 工具/软件:本项目二次开发的离散破碎 PBM 求解函数(本系列二次…

2026/10/16 6:18:51 阅读更多 →
控制系统——1:简单控制形式

控制系统——1:简单控制形式

一、声明本文基于悉尼大学 ELEC3304 Control 课程学习整理,仅代表个人理解,不包含课程官方材料本文仅用于学习记录和分享,任何组织、个人不得用于教材等任何商业形式的利用,不得以任何付费形式分享项目、代码、文件等相关内容绝不…

2026/10/16 6:17:51 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →