AutoFramework/Base/Class/Encrypt.py

99 lines
2.4 KiB
Python
Raw Normal View History

2022-08-31 03:12:45 +08:00
import base64
import hashlib
import io
2022-07-01 22:48:22 +08:00
from urllib import parse
2022-08-31 03:12:45 +08:00
def base64_encode(i, output=None):
if isinstance(i, bytes):
return base64.b64encode(i)
if isinstance(i, str):
return base64.b64encode(bytes(i, encoding='utf-8')).decode()
2022-07-01 22:48:22 +08:00
else:
2022-08-31 03:12:45 +08:00
return base64.encode(i, output)
def base64_decode(i, output=None):
if isinstance(i, bytes):
return base64.b64decode(i)
if isinstance(i, str):
return base64.b64decode(bytes(i, encoding='utf-8')).decode()
2022-07-01 22:48:22 +08:00
else:
2022-08-31 03:12:45 +08:00
return base64.decode(i, output)
def hash_sum(method, i):
hashChoose = getattr(hashlib, method)
if isinstance(i, bytes):
return hashChoose(i).hexdigest()
if isinstance(i, str):
return hashChoose(bytes(i, encoding='utf-8')).hexdigest()
2022-07-01 22:48:22 +08:00
else:
hashObject = hashChoose()
bufferSize = io.DEFAULT_BUFFER_SIZE
2022-08-31 03:12:45 +08:00
while 1:
data = i.read(bufferSize)
2022-07-01 22:48:22 +08:00
if data:
hashObject.update(data)
else:
break
return hashObject.hexdigest()
2022-08-31 03:12:45 +08:00
def md5(i):
import inspect
return hash_sum(inspect.stack()[0][3], i)
2022-07-01 22:48:22 +08:00
2022-08-31 03:12:45 +08:00
def sha1(i):
import inspect
return hash_sum(inspect.stack()[0][3], i)
2022-07-01 22:48:22 +08:00
2022-08-31 03:12:45 +08:00
def sha224(i):
import inspect
return hash_sum(inspect.stack()[0][3], i)
2022-07-01 22:48:22 +08:00
2022-08-31 03:12:45 +08:00
def sha256(i):
import inspect
return hash_sum(inspect.stack()[0][3], i)
2022-07-01 22:48:22 +08:00
2022-08-31 03:12:45 +08:00
def sha384(i):
import inspect
return hash_sum(inspect.stack()[0][3], i)
2022-07-01 22:48:22 +08:00
2022-08-31 03:12:45 +08:00
def sha512(i):
import inspect
return hash_sum(inspect.stack()[0][3], i)
2022-07-01 22:48:22 +08:00
def urlencode(string):
return parse.quote(str(string))
def urldecode(string):
return parse.unquote(string)
if __name__ == '__main__':
# Example.
# print(base64_encode(open('./example', 'rb'), open('./example.base64', 'wb')))
# print(base64_decode(open('./example.base64', 'rb'), open('./example.base64.decode', 'wb')))
print(base64_encode('root'))
print(base64_encode(bytes('root', encoding='utf-8')))
print(base64_decode('cm9vdA=='))
print(base64_decode(bytes('cm9vdA==', encoding='utf-8')))
print(sha1('root'))
print(sha224('root'))
print(sha256('root'))
print(sha384('root'))
print(sha512('root'))
# print(md5('root'))
# print(md5(bytes('root', encoding='utf-8')))
# print(md5(open('./example', 'rb')))
print(urlencode('百度一下'))
print(urldecode('%E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B'))