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

Python解密后如何从utf-8解码字符串中提取ip、用户名及密码参数

提取方案

方案1:直接适配现有输出格式

你当前的输出字符串是固定的key = "value"格式用逗号分隔的结构,可以用正则表达式直接匹配提取:

import re

# 你的现有代码
decrypted_message = encryption_type.decrypt(original)
testing = decrypted_message.decode("utf-8")

# 提取逻辑
pattern = r'ip = "([^"]+)", username = "([^"]+)", password = "([^"]+)"'
match = re.match(pattern, testing)
if match:
    ip = match.group(1)
    username = match.group(2)
    password = match.group(3)
    # 后续直接使用三个变量即可

如果格式可能存在空格差异,可以调整正则适配,比如把固定空格换成\s*匹配任意数量空白字符。

方案2:修改输出格式(更推荐,稳定性更高)

建议你加密存储前直接把登录信息序列化为JSON字符串,解密后可以直接反序列化得到字典,不需要写复杂的匹配逻辑,容错性更强:

  1. 加密前的处理逻辑示例:
import json

# 原始信息
login_info = {
    "ip": "192.168.xxx.xxx",
    "username": "xxx",
    "password": "xxx"
}
# 转成JSON字符串再编码为bytes用于加密
info_bytes = json.dumps(login_info).encode("utf-8")
# 后续对info_bytes执行加密存储即可
  1. 解密后的提取逻辑:
import json

decrypted_message = encryption_type.decrypt(original)
# 直接反序列化得到字典
login_info = json.loads(decrypted_message)
ip = login_info["ip"]
username = login_info["username"]
password = login_info["password"]
bytes类型操作说明

你当前的decode("utf-8")操作是完全正确的常规处理逻辑:

  • decrypted_message是bytes类型,存储的是二进制编码的文本内容,输出带的b'前缀是Python的类型标识,不是内容本身的一部分
  • 如果你不想先解码也可以直接操作,比如正则匹配可以用rb'ip = "([^"]+)"'格式的bytes类型正则,但是先解码为字符串再处理可读性和可维护性更高,更推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:18:03