You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

破解RSA系统后基于给定参数解密指定密文的技术问询

RSA密文解密实操指南

嘿,咱们一步步拆解这个RSA解密任务!先把手里的关键参数摆出来,再按规则处理密文:

已破解的RSA参数

  • 模数:m = 536813567(质因数分解为 8191 × 65537)
  • 公钥指数:e = 3602561
  • 欧拉函数:φ(m) = 8190 × 65536
  • 私钥指数:d = 201934721

密文与转换规则

待解密的密文:ARHILFKAODSTOSBSTWFQL

提示规则:

  • 密文按7字符为一块划分,每块对应一个26进制数(A=0,B=1,…,Z=25)
  • 解密后的明文块为6字符长度,同样遵循26进制转字符的规则

解密步骤详解

1. 拆分密文块

先把21位的密文拆成3个7字符块:

  • 块1:ARHILFK
  • 块2:AODSTOS
  • 块3:BSTWFQL

2. 密文块转十进制数

把每个7字符块从26进制转换成十进制数(记为c₁、c₂、c₃):

  • 块1 ARHILFK:
    c₁ = 0×26⁶ + 17×26⁵ + 7×26⁴ + 8×26³ + 11×26² + 5×26 + 10 = 205330408
  • 块2 AODSTOS:
    c₂ = 0×26⁶ +14×26⁵ +3×26⁴ +18×26³ +19×26² +14×26 +18 = 168039786
  • 块3 BSTWFQL:
    c₃ =1×26⁶ +18×26⁵ +19×26⁴ +22×26³ +5×26² +16×26 +11 = 531853567

3. RSA解密计算明文数值

用私钥指数d计算每个密文数值的模幂,得到明文的十进制数(公式:mᵢ = cᵢ^d mod m):
可以用快速幂算法高效计算,这里用Python代码实现最方便:

m = 536813567
d = 201934721

def char_to_num(c):
    return ord(c) - ord('A')

def num_to_char(n):
    return chr(n + ord('A'))

def block_to_num(block):
    num = 0
    for c in block:
        num = num * 26 + char_to_num(c)
    return num

def num_to_block(num, length):
    block = []
    for _ in range(length):
        block.append(num_to_char(num % 26))
        num = num // 26
    return ''.join(reversed(block))

# 处理所有密文块
cipher_blocks = ["ARHILFK", "AODSTOS", "BSTWFQL"]
for cb in cipher_blocks:
    c_num = block_to_num(cb)
    plain_num = pow(c_num, d, m)
    plain_block = num_to_block(plain_num, 6)
    print(f"密文块 {cb} → 明文块: {plain_block}")

4. 明文数值转字符块

运行上述代码后,会得到每个密文块对应的6字符明文块,拼接起来就是完整的明文啦!

内容的提问来源于stack exchange,提问作者Julian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:39:42