提示
提示 1查看
取差值 `t_k = x_{k+1} − x_k` 可以消去 c,得到 `t_{k+1} ≡ a×t_k (mod m)`
提示 2查看
`u_k = t_{k+2}×t_k − t_{k+1}²` 是 m 的倍数,对若干个 u_k 取最大公约数即可得到 m
提示 3查看
`a = (x_3 − x_2)×(x_2 − x_1)⁻¹ mod m`,`c = x_2 − a×x_1 mod m`。从 x_10 之后继续生成输出,并按 8 字节大端序排列
某服务用参数 a、c、m 均保密的线性同余生成器 `x_{k+1} = (a×x_k + c) mod m` 同时生成会话令牌和加密密钥流。请从 `tokens.txt` 中连续的 10 个输出恢复 a、c、m,再解密用后续输出(每个 8 字节)组成的密钥流加密的 `secret.enc.hex`,取出旗标。
取差值 `t_k = x_{k+1} − x_k` 可以消去 c,得到 `t_{k+1} ≡ a×t_k (mod m)`
`u_k = t_{k+2}×t_k − t_{k+1}²` 是 m 的倍数,对若干个 u_k 取最大公约数即可得到 m
`a = (x_3 − x_2)×(x_2 − x_1)⁻¹ mod m`,`c = x_2 − a×x_1 mod m`。从 x_10 之后继续生成输出,并按 8 字节大端序排列