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

如何通过反向XOR将32位HEX字符串拆分为两个符合要求的组件?

How to Split a 32-Character HEX String into Two Strings Whose XOR Equals the Original

Great question! Let’s break this down using the core properties of XOR, which makes this task straightforward once you understand the math behind it.

Key XOR Property You Need to Know

XOR is a reversible operation. If we have three values A, B, and C where:

A XOR B = C

Then it follows that:

  • B = A XOR C
  • A = B XOR C

In your case, your original HEX string is C. You just need to pick any valid 32-character HEX string as A (string1), then compute B (string2) as the XOR of A and C. That’s it!

Step-by-Step Implementation

  1. Generate a random 32-character HEX string for string1: You can use the same method you already have for generating random HEX strings, or a secure built-in function to ensure proper randomness.
  2. Compute string2 via XOR: Convert both the original string and string1 from HEX to bytes, perform a byte-wise XOR, then convert the result back to a HEX string.
  3. Verify: Double-check that string1 XOR string2 equals your original string to confirm it works.

Example Code (Python)

Here’s a concrete implementation that follows these steps:

import binascii
import secrets

def hex_xor(hex_str1, hex_str2):
    # Convert HEX strings to byte arrays
    bytes1 = binascii.unhexlify(hex_str1)
    bytes2 = binascii.unhexlify(hex_str2)
    # Perform byte-wise XOR
    xor_result = bytes(a ^ b for a, b in zip(bytes1, bytes2))
    # Convert back to HEX string
    return binascii.hexlify(xor_result).decode("utf-8")

# Your original 32-character HEX string
original = "E272E28B8961FB155E3FC657831F0690"

# Generate a random 32-character HEX string (16 bytes = 32 chars)
string1 = secrets.token_hex(16)

# Calculate string2
string2 = hex_xor(original, string1)

# Output results
print(f"Original: {original}")
print(f"String 1: {string1}")
print(f"String 2: {string2}")

# Verify the result (should print True)
print(f"Verification: {hex_xor(string1, string2) == original}")

Notes to Keep in Mind

  • String Length: Ensure both string1 and string2 are exactly 32 characters (16 bytes) long—this matches the length of your original string, so the byte-wise XOR works correctly.
  • Randomness: Using a cryptographically secure random generator (like secrets in Python) ensures string1 is truly random, which is important if you need these strings for security purposes.
  • Flexibility: You don’t have to generate a random string1—you could even use a fixed string (like all zeros) if that fits your use case. For example, if string1 is 00000000000000000000000000000000, string2 will be identical to your original string (since 0 XOR C = C).

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:32:33