import
base64
key
=
b
"my-xxtea-secret"
def
fK(key):
bArr
=
bytearray(
16
)
for
i
in
range
(
min
(
len
(key),
16
)):
bArr[i]
=
key[i]
return
bArr
def
toIntArray(data, include_length):
length
=
(
len
(data)
+
3
)
/
/
4
iArr
=
[
0
]
*
(length
+
(
1
if
include_length
else
0
))
for
i
in
range
(
len
(data)):
iArr[i
/
/
4
] |
=
(data[i] &
0xFF
) << ((i
%
4
)
*
8
)
if
include_length:
iArr[length]
=
len
(data)
return
iArr
def
toByteArray(data, include_length):
if
include_length
and
len
(data) >
0
:
length
=
data[
-
1
]
else
:
length
=
len
(data)
*
4
bArr
=
bytearray(length)
for
i
in
range
(length):
bArr[i]
=
(data[i
/
/
4
] >> ((i
%
4
)
*
8
)) &
0xFF
return
bArr
def
delta():
return
0x9E3779B9
def
mx(
sum
, y, z, p, e, k):
return
(((z >>
5
) ^ (y <<
2
))
+
((y >>
3
) ^ (z <<
4
))) ^ ((
sum
^ y)
+
(k[(p &
3
) ^ (e &
3
)] ^ z))
def
de(v, k):
n
=
len
(v)
if
n <
2
:
return
v
rounds
=
6
+
52
/
/
n
sum
=
rounds
*
delta()
y
=
v[
0
]
while
sum
!
=
0
:
e
=
(
sum
>>
2
) &
3
for
p
in
range
(n
-
1
,
0
,
-
1
):
z
=
v[p
-
1
]
y
=
(v[p]
-
mx(
sum
, y, z, p, e, k)) &
0xFFFFFFFF
v[p]
=
y
z
=
v[n
-
1
]
y
=
(v[
0
]
-
mx(
sum
, y, z,
0
, e, k)) &
0xFFFFFFFF
v[
0
]
=
y
sum
-
=
delta()
return
v
def
db(encoded_string):
decoded_bytes
=
base64.b64decode(encoded_string)
int_array
=
toIntArray(decoded_bytes,
False
)
key_array
=
toIntArray(fK(key),
False
)
decrypted_int_array
=
de(int_array, key_array)
decrypted_bytes
=
toByteArray(decrypted_int_array,
True
)
result
=
decrypted_bytes.decode(
'utf-8'
).rstrip(
'\x00'
)
return
result
result1
=
db(
"2hyWtSLN69+QWLHQ"
)
result2
=
db(
"hjyaQ8jNSdp+mZic7Kdtyw=="
)
result3
=
db(
"cYoiUd2BfEDc/V9e4LdciBz9Mzwzs3yr0kgrLA=="
)
print
(f
"Result 1: {result1}"
)
print
(f
"Result 2: {result2}"
)
print
(f
"Result 3: {result3}"
)