查看: 87|回复: 9

解密密钥

[复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式
最近看到这个帖子bbs.chinaflier.com/thread-273475-1-1.html,怕大家不会解密,给大家一个教程

原文:
  • U2FsdGVkX1/pttf10+/ioUFT18Sgxabzdhve9LL9TNeW3KXuN6NHzeAry+lThAkj
  • RpkbkxSYbA2aXOLL7zYmdnNH35wbMzG3FtyBYf9OUpY=

解密:使用Python或OpenSSL,用MD5格式,Python代码:
  1. import argparse
  2. import base64
  3. import hashlib
  4. import sys
  5. def evp_bytes_to_key(password: bytes, salt: bytes, key_len: int, iv_len: int):
  6.     """OpenSSL EVP_BytesToKey: MD5 迭代派生 key 和 iv。"""
  7.     d = b""
  8.     prev = b""
  9.     while len(d) < key_len + iv_len:
  10.         prev = hashlib.md5(prev + password + salt).digest()
  11.         d += prev
  12.     return d[:key_len], d[key_len:key_len + iv_len]
  13. def openssl_decrypt(cipher_b64: str, password: str) -> str:
  14.     """解密 OpenSSL salted 格式密文,返回明文文本。"""
  15.     try:
  16.         from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
  17.     except ImportError:
  18.         sys.exit("缺少依赖 cryptography,请先执行: pip install cryptography")
  19.     # 1. Base64 解码
  20.     data = base64.b64decode(cipher_b64.replace("\n", "").replace("\r", "").strip())
  21.     # 2. 校验 Salted__ 魔数
  22.     if data[:8] != b"Salted__":
  23.         raise ValueError("不是 OpenSSL salted 格式密文(应以 U2FsdGVkX1 开头)")
  24.     salt = data[8:16]
  25.     ct = data[16:]
  26.     # 3. 派生密钥与 IV
  27.     key, iv = evp_bytes_to_key(password.encode("utf-8"), salt, 32, 16)
  28.     # 4. AES-256-CBC 解密
  29.     dec = Cipher(algorithms.AES(key), modes.CBC(iv)).decryptor()
  30.     pt = dec.update(ct) + dec.finalize()
  31.     # 5. 去除 PKCS7 填充
  32.     pad = pt[-1]
  33.     if pad < 1 or pad > 16:
  34.         raise ValueError("填充校验失败:密码可能不正确")
  35.     pt = pt[:-pad]
  36.     try:
  37.         return pt.decode("utf-8")
  38.     except UnicodeDecodeError:
  39.         return pt.decode("utf-8", errors="replace")
  40. def main():
  41.     parser = argparse.ArgumentParser(description="OpenSSL 密文解密")
  42.     group = parser.add_mutually_exclusive_group(required=True)
  43.     group.add_argument("-c", "--cipher", help="Base64 密文字符串")
  44.     group.add_argument("-f", "--file", help="密文文件路径")
  45.     parser.add_argument("-p", "--password", required=True, help="解密密码")
  46.     args = parser.parse_args()
  47.     if args.cipher:
  48.         cipher = args.cipher
  49.     else:
  50.         with open(args.file, "r", encoding="utf-8") as f:
  51.             cipher = f.read()
  52.     try:
  53.         plain = openssl_decrypt(cipher, args.password)
  54.     except ValueError as e:
  55.         sys.exit(f"解密失败: {e}")
  56.     print("解密成功,明文如下:")
  57.     print("-" * 40)
  58.     print(plain)
  59. if __name__ == "__main__":
  60.     main()
复制代码
发表于 5 天前 来自手机来自手机 | 显示全部楼层
感谢大佬,感谢感谢

点评

没事,举手之劳而已  详情 回复 发表于 4 天前
回复 支持 反对

使用道具 举报

发表于 5 天前 来自手机来自手机 | 显示全部楼层
这个特别棒,特别好,我很喜欢

点评

还可以吧,很简单的,Python挺好的  详情 回复 发表于 4 天前
回复 支持 反对

使用道具 举报

发表于 5 天前 来自手机来自手机 | 显示全部楼层
特别好这个,帮助很大

点评

我已经忘了那个帖子是干啥的了  详情 回复 发表于 4 天前
回复 支持 反对

使用道具 举报

楼主 发表于 4 天前 | 显示全部楼层
yyy08086 发表于 2026-10-20 10:20
感谢大佬,感谢感谢

没事,举手之劳而已
回复 支持 反对

使用道具 举报

楼主 发表于 4 天前 | 显示全部楼层
yyy08086 发表于 2026-10-20 10:20
这个特别棒,特别好,我很喜欢

还可以吧,很简单的,Python挺好的
回复 支持 反对

使用道具 举报

楼主 发表于 4 天前 | 显示全部楼层
yyy08086 发表于 2026-10-20 13:09
特别好这个,帮助很大

我已经忘了那个帖子是干啥的了
回复 支持 反对

使用道具 举报

发表于 4 天前 来自手机来自手机 | 显示全部楼层
这是在干什么???

点评

解密OpenSSL密钥,(水一下)  详情 回复 发表于 8 小时前
回复 支持 反对

使用道具 举报

楼主 发表于 8 小时前 | 显示全部楼层
奇魔小小猪 发表于 2026-10-21 19:01
这是在干什么???

解密OpenSSL密钥,(水一下)
回复 支持 反对

使用道具 举报

发表于 7 小时前 | 显示全部楼层

感谢大佬,感谢感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

快速回复 返回顶部 返回列表