使用regEx分隔从\ x开始的Python字节数组

时间:2018-03-09 04:33:54

标签: python regex hex aes

尝试加密每个26个字符长度的块,首先将其转换为字节数组,然后使用正则表达式查找bytearray中的每个\ x,然后使用AES对其进行加密。

import re
import base64
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes


key=get_random_bytes(16)    
generator = AES.new(key, AES.MODE_CCM)
crypt=""

textHex="87315a69020000006400110400096d617274696e657433010882848b962430486c03010b0504000100002a01042f010432040c121860dd06001018010100dd160050f20101000050f20201000050f20201000050f202"
textBlocks=re.findall('.{1,26}',textHex)

for i in range(0,len(textBlocks)):

    textBlocks[i]=bytes.fromhex(textBlocks[i])

    textBlocks2=re.findall('.+?(?=\\\x)', textBlocks[i])

    for j in range(0,len(textBlocks2):
       crypt += generator.encrypt(textBlocks2[j])

问题是正则表达式不识别\ x00 enter image description here

当这个正则表达式在RegExr上运行时,python会显示以下错误

SyntaxError :( unicode error)'unicodeescape'编解码器无法解码位置8-9中的字节:截断\ xXX转义

1 个答案:

答案 0 :(得分:0)

如果问题只是到了最后\x00

您可以将以下正则表达式用于 javascript .+?(?=\\\x|$)

DEMO:https://regex101.com/r/4ieyDq/1

如果您想要的是 python 正则表达式,那么您可以使用:.+?(?=\\x|$)

DEMO:https://regex101.com/r/gvWxDI/1/