@@ -37,9 +37,8 @@ def encode(cls, string):
3737
3838 for sc in string_chunks :
3939 string_chunk = sc
40- if len (string_chunk ) < cls .MAC_LEN :
41- padding = cls .MAC_LEN - len (string_chunk )
42- # TODO (deoktr): choose this randomly (anything BUT the padding_byte)
40+ padding = cls .MAC_LEN - len (string_chunk )
41+ if padding > 0 :
4342 string_chunk += b"1"
4443 string_chunk += cls .padding_byte * (padding - 1 )
4544
@@ -52,6 +51,11 @@ def encode(cls, string):
5251
5352 mac_list .append (mac )
5453
54+ if len (hex_string ) % cls .MAC_LEN == 0 and len (hex_string ) > 0 :
55+ pad_chunk = (b"1" + cls .padding_byte * (cls .MAC_LEN - 1 )).decode ()
56+ mac_chunks = [pad_chunk [i : i + 2 ] for i in range (0 , len (pad_chunk ), 2 )]
57+ mac_list .append ("-" .join (mac_chunks ))
58+
5559 return mac_list
5660
5761 @classmethod
@@ -77,7 +81,7 @@ def decode_tokens(cls, encoded_tokens):
7781 """MAC encoding decode tokens.
7882
7983 ```
80- binascii.a2b_hex("".join(["...",]).replace("-", "").strip ("0")[:-1])
84+ binascii.a2b_hex("".join(["...",]).replace("-", "").rstrip ("0")[:-1])
8185 ```.
8286 """
8387 return [
@@ -99,7 +103,7 @@ def decode_tokens(cls, encoded_tokens):
99103 (STRING , repr ("" )),
100104 (OP , ")" ),
101105 (OP , "." ),
102- (NAME , "strip " ),
106+ (NAME , "rstrip " ),
103107 (OP , "(" ),
104108 (STRING , repr (cls .padding_byte .decode ())),
105109 (OP , ")" ),
0 commit comments