尝试加密每个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])
当这个正则表达式在RegExr上运行时,python会显示以下错误
SyntaxError :( unicode error)'unicodeescape'编解码器无法解码位置8-9中的字节:截断\ xXX转义
答案 0 :(得分:0)
如果问题只是到了最后\x00
您可以将以下正则表达式用于 javascript :.+?(?=\\\x|$)
DEMO:https://regex101.com/r/4ieyDq/1
如果您想要的是 python 正则表达式,那么您可以使用:.+?(?=\\x|$)