证书格式

RSA_PKCS#1私钥解密

题目:

#私钥
-----BEGIN RSA PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDLzJrQLXi4OjFl
Yr5EAfQHWnF0ZyZsHHGfNNRLlhL1haAbV2AzTQCCIfMKlXzzepr8AYo5yNoVq9gq
IuZ4dpBXr4Skf+rh9vCek+SGjxk1yKetrV5CMl+L8zBRkBEE5XKDmJUoDgABrcvo
f2TJDE4PrmjI1Mux+lr1rOnQi+nQbrfEubOGjpjN5hoHoaC7TnukR+lIQZKgiKkw
uQ+ee3926IZtVUVMQZttis0OhDr0aAcYh0F7uuThwseHA46O1M6G2+8uLr0lqM6s
cipNjEDvO4w0kfB6HJEydOp/lRKSSY9f08OnCmgTvZtTUnqXnF497XYzGCRcA3bn
I2oatSTxAgMBAAECggEAXhYnotRbVzIGe/gKPvtn3b0zg7nbUy4OhqGtIPg36IG4
WOcN0qFKCsoBmnFJLl78DjvnxKWliTu8oDdcj2CtYs31PryPg6Ktk4hTiIun59yr
DNNtIMKAueub8wu/z7LeG0LmGYfdGOlTqhKmROsZXsP2PEGBiLk8JQ+fIlh1qXOg
Tajjh2CJBkeHV2Hlf38QTkZ7aI+mdn3HER8c9xDOQriv/IUriEKPUl1hTs4S2sLI
ywY9hLvnAmQfWq2AiBvQ3W3ToJJE2oowM4qgeLL8/1lDekF9QqPFdfgW3OU5lQpj
1oRQQf2X05BcemW7thTupnpJA5ot1Vk1cRMtdbdlwQKBgQD5SstS/in+nUgAtgDL
1+7k32+mwPzT+sbyRgrMs+nQtnNnAgel5KAJxSngZzZSfln1LLOPH57hWDa6ToH3
1ar2yTwZm0SjSU/dSm15lm30DdGSieCJJXRQ2U/bYLQSD2+GSmmvIXGFHxIOD5GL
WhdkSW/TLQzEJ9t4/6pXxEL/GwKBgQDRSHC8c8f3aGOAFH6beeAQfxFOuHPdU4va
zR2xmnGwNgrT+DAtcC0UZC0LJVi5aQLNtYxqYZSJTihDYdK4hTWLcdLc5dnx84FU
f7W7HHy+/AfNXkw2bJxFAQjKtmZuFJ7M1S0aSi81ZCcEK8XkT2JHkMbhc2cmZrph
L0kpAYXQ4wKBgQDV5b8frsUJmpo1QfTc8qIf7zc1tVE58WrSZhbOHXD5jBLox20Y
glpvB6UuzmBl19QH8hr/KvqAD9ilcsdBhyvyJChVMExsbnMAROQ590DQryqquXLX
OjPbSxqh+Q+Ij4X5i8+yXNeyiT5Moj8Xem2ntvskDvttM2W1JGlcdSGnEQKBgDR1
4CydKUcPV8HHYWU/y7bW41PEUObuBmS2ffcDK/Rr15MC57C8KdCuu8vLdM4lUJqY
I7aW91Dj0pvxbYzrd1yZD65nv5Yy3/x6dueMYIjPTHViaeBKoXF6rOWDi3GUoane
1gt9BRBxJoaZImX0sEIYPIJPF1A8+ANcgw5QX2bZAoGAS8NvhRx9oqryBEXEE1yS
TJNlSg1CGuemsHLQoe6noWuTJjHFc8Nk0mw65MLat3a9tigAYoyD7ACCCVKvHiuq
JMBvGr7MFRiPH3aE0amzGggE7VdQyIYH6BRhpnYYq15ImecbW4ICL4qU4CWZEtpl
to3Rm79xTWCN7rRfIc3+rMw=
-----END RSA PRIVATE KEY-----

#密文
gLG3/nRB1QMH3MuAr3dZ7XdEqgRw0+6+08+rstONKwq/odw3DQOJ0d9vjmH23koyNob3OW5uPEx3l1h+B3y3RxZv7Uu/ZVfk8Xu3RJsFP1O2jGhH2U5WWlOI/dFg9GI1peV1IqZf5ijxG7rqgNym5tLtB/p7MUVuCHsBTcF757L9PTRwCUOfjGG9RP6qzL8mB8HlVHsJsM29S5l9qnnks1gEYQ+V7TMaEdCjFuzKqUBvnDR4dTiad1k/wWD6qHsk+L1cfCI82Ho/081TrVsFGXw7RusJTZN4W7cbVHcEUggQmJND5B8yGhIF/PG6UpMrErjGK3uLXTzyOFyjRj42oQ==

解答:

import base64
from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA

# 从文件加载私钥
def load_private_key(file_path: str) -> bytes:
    with open(file_path, "rb") as key_file:
        private_key = key_file.read()
    return private_key

# 从文件加载密文
def load_encrypted_data(file_path: str) -> str:
    with open(file_path, "r") as data_file:
        encrypted_data = data_file.read()
    return encrypted_data

# 解密函数
def decryption(text_encrypted_base64: str, private_key: bytes) -> str:
    text_encrypted_base64 = text_encrypted_base64.encode('utf-8')
    text_encrypted = base64.b64decode(text_encrypted_base64)
    private_key_obj = RSA.import_key(private_key)
    cipher = PKCS1_v1_5.new(private_key_obj)
    text_decrypted = cipher.decrypt(text_encrypted, None)  # 如果解密失败,返回 None
    if text_decrypted is None:
        raise ValueError("Decryption failed")
    return text_decrypted.decode('utf-8')

# 主程序
if __name__ == '__main__':
    # 指定私钥文件路径
    private_key_file_path = "D:\\key1.txt"  # 替换为你的私钥private文件路径
    # 指定密文文件路径
    encrypted_data_file_path = "D:\\一堆乱码.txt"  # 替换为你的密文文件路径

    # 加载私钥
    private_key = load_private_key(private_key_file_path)

    # 加载密文
    text_encrypted_base64 = load_encrypted_data(encrypted_data_file_path)

    # 解密
    try:
        text_decrypted = decryption(text_encrypted_base64, private_key)
        print('明文:', text_decrypted)
    except ValueError as e:
        print("Error:", e)
#明文: flag{the_new_misc_king_is_k2y!!!}
posted @ 2025-03-11 21:46  sevensnight  阅读(54)  评论(0)    收藏  举报