Xoring字符串并仅获取十六进制b

2024-09-29 21:38:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图走一条路

C:\windows\programs\test

然后对路径长度相同的随机键进行异或运算

4deebb6172406e69316df004e38334a5f6c1a80c8b865800

我使用

binascii.b2a_hex(os.urandom(24))

当它们彼此异或时,我得到一个字符串,如下所示:

b'\x02\x0cj@Y[\x05\x0cN@>GAYRBV\x0fD=GP\x16@'

我的问题是,是否有可能得到一个只有十六进制的输出?不是生成所有字符,而是保留它(a-f,a-f,0-9)


Tags: 字符串test路径oswindowsurandomhexx02
1条回答
网友
1楼 · 发布于 2024-09-29 21:38:30

字节字符串实际上只是一系列从0到255的数字。您可以通过以下方式查看:

list(b'\x02\x0cj@Y[\x05\x0cN@>GAYRBV\x0fD=GP\x16@')
# returns:
[2,
 12,
 106,
 64,
 89,
 91,
 5,
 12,
 78,
 64,
 62,
 71,
 65,
 89,
 82,
 66,
 86,
 15,
 68,
 61,
 71,
 80,
 22,
 64]

您可以通过以下方式将字节字符串转换为长度为2的十六进制数字序列:

''.join(f'{b:0>2x}' for b in b'\x02\x0cj@Y[\x05\x0cN@>GAYRBV\x0fD=GP\x16@')
# returns:
'020c6a40595b050c4e403e4741595242560f443d47501640'

这使用一个格式字符串(f-string)将每个字节b转换为十六进制值(f'{:x}'),但也使用前导0(f'{:0>2}')将字符串填充到长度2

相关问题 更多 >

    热门问题