44
55** 中文 | [ English] ( README_EN.md ) **
66
7- SeedShield 通过将每种结构类型的放置盐值( salt) 替换为不可逆的 SHA-256 哈希值,防止种子破解工具(chunkbase、SeedCrackerX、Structurecracker)定位结构位置。
7+ SeedShield 通过将每种结构类型的放置 salt 替换为不可逆的 SHA-256 哈希值,防止种子破解工具(chunkbase、SeedCrackerX、Structurecracker)定位结构位置。
88
99** 这是第一个为 Paper/Spigot 提供加密级结构种子保护的插件。** 此前,这种级别的保护只能通过 Fabric mod 或自定义服务端 fork 才能实现。
1010
@@ -13,19 +13,19 @@ SeedShield 通过将每种结构类型的放置盐值(salt)替换为不可
1313Minecraft 通过以下公式确定结构位置:
1414
1515```
16- 位置 = f(世界种子, 区域坐标, 盐值 )
16+ 位置 = f(世界种子, 区域坐标, salt )
1717```
1818
19- 每种结构类型的 ` 盐值( salt) ` 是硬编码的整数。chunkbase 等工具已知这些默认盐值 ,因此知道世界种子 = 知道所有结构位置。
19+ 每种结构类型的 ` salt ` 是硬编码的整数。chunkbase 等工具已知这些默认 salt ,因此知道世界种子 = 知道所有结构位置。
2020
21- SeedShield 将每个盐值替换为 :
21+ SeedShield 将每个 salt 替换为 :
2222
2323```
24- 盐值 = SHA-256(密钥 + ":" + 世界种子 + ":" + 结构类型名)[前4字节]
24+ salt = SHA-256(密钥 + ":" + 世界种子 + ":" + 结构类型名)[前4字节]
2525```
2626
27- - ** 结构间隔离** :每种结构类型获得独立的加密盐值。破解一种结构的盐值不会泄露其他结构的信息 。
28- - ** 密钥保护** :没有 256 位密钥(存储在 ` config.yml ` 中),盐值无法被逆向 。
27+ - ** 结构间隔离** :每种结构类型获得独立的加密 salt 。破解一种结构的 salt 不会泄露其他结构的信息 。
28+ - ** 密钥保护** :没有 256 位密钥(存储在 ` config.yml ` 中),salt 无法被逆向 。
2929- ** 要塞保护** :同时修改 ` concentricRingsSeed ` 并重新计算环形位置。
3030
3131## 与现有方案对比
@@ -72,9 +72,9 @@ enabled-worlds:
7272|---------|:---:|
7373| chunkbase / 在线种子地图 | ✅ 完全失效 |
7474| SeedCrackerX 客户端 mod | ✅ 已防御(建议配合 FakeSeed 使用) |
75- | 暴力破解单种结构盐值 (2³² 次尝试) | ⚠️ 单种结构可能被破解,但每种结构需独立破解 |
76- | 从盐值反推密钥 | ✅ 不可行(SHA-256 抗原像攻击) |
77- | 跨结构推导盐值 | ✅ 没有密钥不可能实现 |
75+ | 暴力破解单种结构salt (2³² 次尝试) | ⚠️ 单种结构可能被破解,但每种结构需独立破解 |
76+ | 从salt反推密钥 | ✅ 不可行(SHA-256 抗原像攻击) |
77+ | 跨结构推导salt | ✅ 没有密钥不可能实现 |
7878
7979## 从源码构建
8080
0 commit comments