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

如何通过位运算生成并遍历所有8字节的可能组合?

解决方案

原代码的问题

  1. range('\xff'*8) 写法错误:range的参数必须是整数,而'\xff'*8是字符串;8字节对应的数值范围是0 到 2^64 - 1(每个字节8位,8字节共64位无符号整数)。
  2. 整数无法直接和字节串b'challenge'拼接,必须先将整数转换为对应的8字节二进制字节串。

正确实现方式

生成所有8字节组合的核心是遍历0到2^64-1的所有整数,再将每个整数转换为8字节字节串,之后完成拼接与哈希计算。

方法一:使用int.to_bytes()(直观易读)

import hashlib

# 注意:2^64是1.8e19级别的数量,实际无法完整遍历,以下仅为技术演示
for num in range(2**64):
    # 将整数转为8字节大端字节串,需小端格式则指定byteorder='little'
    eight_bytes = num.to_bytes(8, byteorder='big')
    # 拼接目标字节串
    input_data = b'challenge' + eight_bytes
    # 计算SHA256二进制摘要
    hash_result = hashlib.sha256(input_data).digest()
    # 可添加哈希结果的处理逻辑(如打印十六进制格式)
    # print(hash_result.hex())

方法二:使用struct.pack()

import hashlib
import struct

for num in range(2**64):
    # '<Q'表示小端无符号长整型(对应8字节),'>Q'为大端格式
    eight_bytes = struct.pack('<Q', num)
    input_data = b'challenge' + eight_bytes
    hash_result = hashlib.sha256(input_data).digest()

重要提示

8字节共有**2^64(约1.8万亿亿)**种组合,遍历所有组合在现实中几乎不可能完成,除非你有特定过滤条件(比如已知哈希结果的部分特征)来缩小遍历范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:25:10