UTILS.
100% 浏览器内运行
✖️

Affine 仿射密码 编码器 / 解码器

使用 E(x)=(a·x+b) mod 26 的单表密码,带密钥校验(gcd(a,26)=1)与模逆解码。即时编码或解码字母。

密钥 a 必须与 26 互质:1、3、5、7、9、11、15、17、19、21、23 或 25。

— 输出将显示在这里 —

关于此工具

Affine 仿射密码编码器 / 解码器是一款免费的浏览器内工具,用于处理这种建立在模算术之上的单表密码。字母 A–Z 编号为 0–25,每个字母通过线性函数 E(x) = (a·x + b) mod 26 变换,其中 a 和 b 是两个密钥值。解码用 D(y) = a⁻¹·(y − b) mod 26 反向还原,其中 a⁻¹ 是 a 关于模 26 的模乘法逆元。

为使密码可逆,乘数 a 必须与 26 互质——即 gcd(a, 26) = 1。十二个有效选择为 1、3、5、7、9、11、15、17、19、21、23 和 25;任何其他值都会把两个不同字母映射到相同输出而无法解码,因此工具会给出明确提示予以拒绝。加法密钥 b 可为 0–25 的任意值。一切都在你的浏览器本地计算,因此你输入的任何内容都不会离开你的设备。

大小写会被保留,非字母字符原样通过。Affine 仿射密码是对更简单的古典密码的推广:设 a = 1 时它退化为位移 b 的 Caesar 凯撒密码,而 a = 25、b = 25 时它再现了 Atbash 密码。它是离散数学和数论课程的常客,因为它把互质性和模逆的概念具体化,并且经常出现在 CTF 谜题和 CyberChef 等工具中。

常见问题

Affine 仿射密码的公式是什么?
编码为 E(x) = (a·x + b) mod 26,解码为 D(y) = a⁻¹·(y − b) mod 26,字母编号为 0–25。这里 a⁻¹ 是 a 关于模 26 的模乘法逆元。
a 允许取哪些值?
只能取与 26 互质的值,即 gcd(a, 26) = 1:也就是 1、3、5、7、9、11、15、17、19、21、23 或 25。其他值会使密码不可逆,因此工具会拒绝它们。
解码是如何完成的?
它需要 a 关于模 26 的模逆 a⁻¹,即满足 a·a⁻¹ ≡ 1 (mod 26) 的那个数。工具会自动求出它,然后对每个字母应用 D(y) = a⁻¹·(y − b) mod 26。
它与 Caesar 和 Atbash 有何关系?
它是两者的推广。当 a = 1 时,Affine 仿射密码变为位移 b 的 Caesar 凯撒密码;当 a = 25、b = 25 时,它再现了 Atbash 密码。它是单表替换的线性形式。

更多工具