111 lines
2.3 KiB
Python
111 lines
2.3 KiB
Python
"""
|
|
封装字符串相关函数:UUID字符串,字符串加密解密
|
|
"""
|
|
import uuid as UUID
|
|
import base64
|
|
|
|
CHAR_SET = ("a", "b", "c", "d", "e", "f",
|
|
"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
|
|
"t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
|
|
"6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
|
|
"J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
|
|
"W", "X", "Y", "Z")
|
|
|
|
|
|
def uuid():
|
|
"""
|
|
返回一个UUID对象
|
|
:return:
|
|
"""
|
|
return UUID.uuid4()
|
|
|
|
|
|
def uuid_36():
|
|
"""
|
|
返回36字符的UUID字符串(十六进制,含有-) bc5debab-95c3-4430-933f-2e3b6407ac30
|
|
:return:
|
|
"""
|
|
return str(UUID.uuid4())
|
|
|
|
|
|
def uuid_32():
|
|
"""
|
|
返回32字符的UUID字符串(十六进制) bc5debab95c34430933f2e3b6407ac30
|
|
:return:
|
|
"""
|
|
return uuid_36().replace('-', '')
|
|
|
|
|
|
def uuid_8():
|
|
"""
|
|
返回8字符的UUID字符串(非进制) 3FNWjtlD
|
|
:return:
|
|
"""
|
|
s = uuid_32()
|
|
result = ''
|
|
for i in range(0, 8):
|
|
sub = s[i * 4: i * 4 + 4]
|
|
x = int(sub, 16)
|
|
result += CHAR_SET[x % 0x3E]
|
|
return result
|
|
|
|
|
|
def uuid_16():
|
|
"""
|
|
返回16字符的UUID字符串(非进制) 3FNWjtlD3FNWjtlD
|
|
:return:
|
|
"""
|
|
return uuid_8() + uuid_8()
|
|
|
|
|
|
def bas64_encode_text(text):
|
|
"""
|
|
base64加密字符串
|
|
:param text:
|
|
:return:
|
|
"""
|
|
if isinstance(text, str):
|
|
return str(base64.b64encode(text.encode('utf-8')), 'utf-8')
|
|
return text
|
|
|
|
|
|
def bas64_decode_text(text):
|
|
"""
|
|
base64解密字符串
|
|
:param text:
|
|
:return:
|
|
"""
|
|
if isinstance(text, str):
|
|
return str(base64.decodebytes(bytes(text, encoding="utf8")), 'utf-8')
|
|
return text
|
|
|
|
|
|
def decode_text(text, crypto=""):
|
|
"""
|
|
解密字符串
|
|
:param text: 字符串
|
|
:param crypto: 解密算法
|
|
:return:
|
|
"""
|
|
if crypto:
|
|
if crypto.lower() == 'base64':
|
|
text = bas64_decode_text(text)
|
|
else:
|
|
text = text
|
|
return text
|
|
|
|
|
|
def encode_text(text, crypto=""):
|
|
"""
|
|
加密字符串
|
|
:param text: 字符串
|
|
:param crypto: 加密算法
|
|
:return:
|
|
"""
|
|
if crypto:
|
|
if crypto.lower() == 'base64':
|
|
text = bas64_encode_text(text)
|
|
else:
|
|
text = text
|
|
return text
|