求助一个 RSA 解密的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mathzhaoliang
V2EX    问与答

求助一个 RSA 解密的问题

  •  
  •   mathzhaoliang 2019 年 1 月 15 日 1977 次点击
    这是一个创建于 2576 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在有这样一段 RSA 公钥加密后的信息(用十六进制字符串表示)

    char * data = "8c4c05b86de3740abff4e6dc498afe1a7fe348cb80f5d7d029f098d315dcc6cf1496f11114ce4a6489b03f322297b71e272e55b9b9e2f0fddf4f0258539018056dbddb5f0e0909013c7ff4988d28b47aaa5896a75997e74af6a25dd02c259f06d0689ba48f42a6093bd6b4b8810cb7458350c6bdcc86c0f2a5f7c4defffba599f5f106054a393ed70c24b7fdc0b2aadb5a8b740dd94b0e3c4520521af873ac110141f978d2fc548e6bc98f03bb59c67415f08bdf52a8135949c0c1e844f5c42c52339b1e6ee93d504d4748fb5ef10ce34fd32cbda578e705e8340a73fd26c263c15d37a8f1d1c57fecb4164bfae460d5f3e61b6d48e37639d351c0ca4df5bd07"; 

    已知私钥的 .pem 文件是

    -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAms015yxDAwiqm3fcg5stTt3P1LDT3daK50rvumLPM32N1eXX 4IhU65K6ZgZVCHcGmWyUHo4UhXzvt5ozHzNanJCHx1ZPgi/SzaQUJ2jN2g5UuuRz PVCJNcTx+l1HCdcTLysULQ+aBvSfWbgXq5Z254ZMvqn22N7ItmpN5OW10R/hQGt3 kQAi+z672kSWBn5vcBK7rEp0PfDj0pYL1i5x56jwqW/OPaEcr5qHGQWjxcnqEoVn pRkFuj6Wx222+jnfgw0UsCFGkaYYUmROWpokE38QzvEUcQELi+s6GPqFRDbRcGtV Jb2/aX/tr4QYwE85wXrMi6e9ZTVhqvXqwsdllQIDAQABAoIBAAeFUMkabWcIVMGY 4S3DrD/YpvA+ZwywD6+NBHiZtFdcEjgCIqrV9Mo9JrEuPZNbtQZfMBML9BNILp1M 8I7jf9N7ch1NJC+/Aw7ameAQR3AAoj0yPCcOcpwaJWd0gK8Js/TmsuQ9jc4otFU3 jG7ZsI0vCSt6NnPy3u193KryPhMa1gu+x8gzh47oDjzIlQcxHyUfe6C1oebQrmJX p/ih7F1OwmccM5SwYVdWB9mgwqvw+cLZuTKrsw1K0yxrcrivncDeGWPqrhBVEWPU jwQG5STPpciW1Ar22u1r2ZjjquEDyvrcFWIbUBJhvXFfGlB7G3Z8N2l3rJywJv5y JHOxSUECgYEAwCcLwOl16NECF0/D62h9ppkTJ3E4wvuRcQvDif36QIs8dF3vyj/B ZJErbTLYwAwHLu3em64cn3QEbxm6Xh90F8WHtlsUHvJKKWi7RNaUqfhLFF9FF9IE xDuPPDBnWBAWacBk1hRq7mggnOUOFdsQtQU6fP7OhXy52N8uQFwHdDcCgYEAzj0B hTVsqJowAg++RQHZrpvuy4gnWhFH3+FaCi7ivu4uwpOnCRDaFrHH7jAYmqoHvWiN YsRr2+czr3U1WIWuG1HLTCj8RZyI0eVSng0xw8czIl3vJu3eN4hq3V3cM0JiVckv pIUL4zNlwwh8ylNxA/bPRhaR+c8DmaHhKUn8ppMCgYABMLy75zZZyOGwb0gRb0ZH /+7EcckePBy8jIwbkL06JSKsveA8aoSyMMwKEySQnAJ3YfXdFQkMW9WjMo+bAarg ctLSaGIJhwq6kvGGDaZCH02nxKdS7HQnGw9aGhqpyv+4i/6T7PB0paR+FFUwAXlr BatFFvcEkK8+DrPkpi1NpQKBgAD9xBMa1aHd09s+riBwyNYRA83QorfJG3pU//TK kuZuCKWAxi3B+fpf8mEPtB6SMKVValCONyKAcvwl6RK62cJh20NLcyL2hKXVn1cJ IzMYswM4Rlz+ibHkovbba6KHcCePZv44cX0vEw8j7E2gpwto1Ug19Y+o0hCb+ZQU OfWnAoGANmcWVE7QNcvshIHR0GrlXWmjK/l/TZTh1DVRkfri6eltAFaTbSs03fdL AEGcbKVurGbdbXgGzpdVmL2+vqe54B07RLTsPvGvkak6E8s4/c5U6x5RLLA0ZZMn +cyn6yxAcAemW0dc90YqVkGYjCefPw5CDbcgRK8DIPyInIVWYYY= -----END RSA PRIVATE KEY----- 

    请问这个用 C 语言怎么解密呢?注意这里的密文是以字符数组的形式出现的,我是不是要先把它转换为二进制的 char 类型呢?

    6 条回复    2019-01-16 10:28:48 +08:00
    aheadlead
        1
    aheadlead  
       2019 年 1 月 15 日
    解密后:
    00000000 7f a7 93 21 e4 69 c6 7d e2 6e c1 ed b7 50 b9 6b |...!.i.}.n...P.k|
    00000010 32 94 e2 c2 91 68 9e 85 07 5e 61 3b cd 09 d5 d9 |2....h...^a;....|
    00000020

    C 的话,可以调用 openssl 的 lib。

    人工操作: https://stackoverflow.com/questions/42300795/openssl-decrypting-with-a-private-key
    mathzhaoliang
        2
    mathzhaoliang  
    OP
       2019 年 1 月 15 日
    @aheadlead 原始信息作为十六进制字符串是

    ```
    7fa79321e469c67de26ec1edb750b96b3294e2c291689e85075e613bcd09d5d9
    ```

    你的答案好像是对的,但多了一些莫名的符号。

    请问您是怎么解密的呢?
    hx1997
        3
    hx1997  
       2019 年 1 月 15 日 via Android
    装 OpenSSL 后用这个解密
    rsautl -decrypt -inkey 私钥.pem -in 密文文件 -out 明文文件

    编程的话先十六进制串转二进制,再用 .pem 提取的私钥按公式解密,当然用库也行。
    yuikns
        4
    yuikns  
       2019 年 1 月 16 日 via iPhone
    @mathzhaoliang 一楼是 hexdump 的输出…
    分别是一地址,内容,尝试转义为 ascii 码后结果

    哪里有“奇怪的字符”
    mathzhaoliang
        5
    mathzhaoliang  
    OP
       2019 年 1 月 16 日
    @yuikns 不太懂,开头的 000000x0 和后面的 |...!.i.}.n...P.k| 分别是什么意思,可否解释下?
    Yanni0507
        6
    Yanni0507  
       2019 年 1 月 16 日   1
    @mathzhaoliang
    开头的 000000x0 是该行第一个字节的十六进制序号,一行 16 个字节,所以第二行第一字节序号是 00000010
    两个|中间的内容是把解密的各个字节内容尝试转成可以打印显示的字符结果,真正的解密结果只有中间的十六进制字符部分
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4482 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 07:02 PVG 15:02 LAX 23:02 JFK 02:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86