挂锁类比存晦涩问题,请求生成简单公钥加解密详细示例
简化版公钥加密解密示例(类比RSA核心逻辑)
先明确所有设定
- 要加密的5字符消息:
HELLO - 公钥(两个1位数字):
(e=3, n=10),其中e是加密指数,n是模数 - 私钥(两个1位数字):
(d=7, n=10),其中d是解密指数,和公钥共用模数n - 字符转数字规则:取每个字符ASCII码的最后一位(比如H的ASCII是72→取2,E是69→取9,以此类推)
第一步:把明文消息转成数字序列
先把HELLO的每个字符转成数字:
- H → 72 → 2
- E → 69 → 9
- L → 76 → 6
- L → 76 → 6
- O → 79 → 9
得到明文数字序列:[2, 9, 6, 6, 9]
第二步:用公钥加密消息
加密规则很简单:密文数字 = (明文数字)^e mod n(^表示次方,mod是取余数)
咱们逐个计算:
- 第一个数字2:
2^3 = 8→8 mod 10 = 8 - 第二个数字9:
9^3 = 729→729 mod 10 = 9 - 第三个数字6:
6^3 = 216→216 mod 10 = 6 - 第四个数字6:和上面一样,结果是6
- 第五个数字9:和第二个一样,结果是9
得到密文数字序列:[8, 9, 6, 6, 9]
第三步:用私钥解密消息
解密规则是加密的逆操作:明文数字 = (密文数字)^d mod n
同样逐个计算:
- 第一个密文8:
8^7 = 2097152→2097152 mod 10 = 2 - 第二个密文9:
9^7 = 4782969→4782969 mod 10 = 9 - 第三个密文6:
6^7 = 279936→279936 mod 10 = 6 - 第四个密文6:结果是6
- 第五个密文9:结果是9
解密后得到数字序列:[2, 9, 6, 6, 9],再转回到字符就是HELLO,完美还原!
为什么这对密钥能工作?
这里的核心逻辑和RSA一致:公钥的加密指数e和私钥的解密指数d满足 (e*d) mod φ(n) = 1,其中φ(n)是欧拉函数(简单说就是1到n-1里和n互质的数的个数)。
对于n=10,φ(10)=4(1、3、7、9这四个数和10互质),我们选的e=3,d=7,3*7=21,21 mod4=1,刚好符合条件,所以加密解密能互相逆推。
内容的提问来源于stack exchange,提问作者Paul Palmer




