126 lines
4.0 KiB
Python
126 lines
4.0 KiB
Python
import re
|
||
|
||
|
||
class CaesarCypherClass:
|
||
"""
|
||
恺撒密码,提供以恺撒密码方法进行加密及解密的方法,加密方法使用CaesarEncode()函数,解密方法使用CaesarDecode()函数
|
||
"""
|
||
|
||
def __init__(self, *args, **kwargs):
|
||
pass
|
||
|
||
@staticmethod
|
||
def caesar_encode(s):
|
||
"""
|
||
恺撒密码加密方法,需要提供需要加密的明文。
|
||
"""
|
||
s_encode = ''
|
||
for c in s:
|
||
if 'a' <= c <= 'z':
|
||
s_encode += chr(ord('a') + (ord(c) - ord('a') + 3) % 26)
|
||
elif 'A' <= c <= 'Z':
|
||
s_encode += chr(ord('A') + (ord(c) - ord('A') + 3) % 26)
|
||
elif 0x4E00 <= ord(c) <= 0x9FA5:
|
||
s_encode += chr(ord(c) + 3)
|
||
elif '0' <= c <= '9':
|
||
s_encode += chr(ord('0') + (ord(c) - ord('0') + 3) % 10)
|
||
else:
|
||
s_encode += c
|
||
return s_encode
|
||
|
||
@staticmethod
|
||
def caesar_decode(s):
|
||
"""
|
||
恺撒密码解密方法,需要提供需要解密的密文。
|
||
"""
|
||
s_decode = ''
|
||
for c in s:
|
||
if 'a' <= c <= 'z':
|
||
s_decode += chr(ord('a') + (ord(c) - ord('a') - 3) % 26)
|
||
elif 'A' <= c <= 'Z':
|
||
s_decode += chr(ord('A') + (ord(c) - ord('A') - 3) % 26)
|
||
elif 0x4E00 <= ord(c) <= 0x9FA5:
|
||
s_decode += chr(ord(c) - 3)
|
||
elif '0' <= c <= '9':
|
||
s_decode += chr(ord('0') + (ord(c) - ord('0') - 3) % 10)
|
||
else:
|
||
s_decode += c
|
||
return s_decode
|
||
|
||
|
||
class Base64CypherClass:
|
||
"""
|
||
Base64的加解密算法,最简单的加密方式,可加密短的文字、小图片、小文件,图片文件大小不宜超过10M
|
||
"""
|
||
def __init__(self, *args, **kwargs):
|
||
"""
|
||
Base64类初始化函数
|
||
:param args:
|
||
:param kwargs:
|
||
"""
|
||
import importlib
|
||
self.base64 = importlib.import_module('base64')
|
||
self.os = importlib.import_module('os')
|
||
self.time = importlib.import_module('time')
|
||
self.re = importlib.import_module('re')
|
||
|
||
@staticmethod
|
||
def base64_encode_str(self, s):
|
||
"""
|
||
Base64字符串加密
|
||
:param self:
|
||
:param s: 要加密的字符串
|
||
:return: 加密后的字符串
|
||
"""
|
||
return self.base64.b64encode(s.encode('utf-8'))
|
||
|
||
@staticmethod
|
||
def base64_decode_str(self, s):
|
||
"""
|
||
Base64字符串解密,解密前先判断是否为Base64加密方式
|
||
:param self:
|
||
:param s: 要解密的字符串
|
||
:return: 解密后的字符串
|
||
"""
|
||
try:
|
||
self.base64.b64decode(s)
|
||
return self.base64.b64decode(s).decode('utf-8')
|
||
except Exception as e:
|
||
return f"base64解密失败,请确定加密方式是否正确。错误信息:{e}"
|
||
|
||
@staticmethod
|
||
def base64_encode_pic(self, pic):
|
||
"""
|
||
Base64加密图片,路径不存在则返回"图片路径不存在"
|
||
:param self:
|
||
:param pic: 要加密的图片路径
|
||
:return: 返回加密的base64字符
|
||
"""
|
||
if self.os.path.exists(pic):
|
||
with open(pic, 'rb') as f:
|
||
read_pic = open(pic, 'rb')
|
||
read_data = read_pic.read()
|
||
read_pic.close()
|
||
return self.base64.b64encode(read_data)
|
||
else:
|
||
return "图片路径不存在"
|
||
|
||
@staticmethod
|
||
def base64_decode_pic(self, pic_bs64):
|
||
"""
|
||
Base64解密图片
|
||
:param self:
|
||
:param pic_bs64:
|
||
:return: 返回图片路径
|
||
"""
|
||
pic_path = f"upload/temp/pic{int(self.time.time())}"
|
||
if self.os.path.exists(f"{pic_path}.jpg"):
|
||
self.os.remove(f"{pic_path}.jpg")
|
||
elif not self.os.path.exists("upload/temp/pic"):
|
||
self.os.path.mkdir("upload/temp/pic")
|
||
|
||
with open(f"{pic_path}.jpg", 'wb') as f:
|
||
f.write(self.base64.b64decode(pic_bs64))
|
||
|
||
return f"{pic_path}.jpg"
|