Initial YakPanel commit
This commit is contained in:
148
class/panelAes.py
Normal file
148
class/panelAes.py
Normal file
@@ -0,0 +1,148 @@
|
||||
# coding: utf-8
|
||||
# | Python AES
|
||||
# +--------------------------------------------------------------------
|
||||
|
||||
from Crypto.Cipher import AES
|
||||
from Crypto.Util.Padding import pad, unpad
|
||||
import base64, sys
|
||||
import public
|
||||
|
||||
|
||||
class aescrypt_py3():
|
||||
def __init__(self,key,model = 'ECB',iv = None,encode_='utf-8'):
|
||||
self.encode_ = encode_
|
||||
self.model = {'ECB':AES.MODE_ECB,'CBC':AES.MODE_CBC}[model]
|
||||
self.key = self.add_16(key)
|
||||
if model == 'ECB':
|
||||
self.aes = AES.new(self.key,self.model)
|
||||
elif model == 'CBC':
|
||||
self.aes = AES.new(self.key, self.model, iv)
|
||||
|
||||
def add_16(self,par):
|
||||
par = par.encode(self.encode_)
|
||||
while len(par) % 16 != 0:
|
||||
par += b'\x00'
|
||||
return par
|
||||
|
||||
def aesencrypt(self,text):
|
||||
text = self.add_16(text)
|
||||
self.encrypt_text = self.aes.encrypt(text)
|
||||
return base64.encodebytes(self.encrypt_text).decode().strip().replace("\n","")
|
||||
|
||||
def aesdecrypt(self,text):
|
||||
text = base64.decodebytes(text.encode(self.encode_))
|
||||
self.decrypt_text = self.aes.decrypt(text)
|
||||
return self.decrypt_text.decode(self.encode_).strip('\0')
|
||||
|
||||
# base64 编码
|
||||
def encode_base64(self, data):
|
||||
str2 = (data).strip()
|
||||
if sys.version_info[0] == 2:
|
||||
return base64.b64encode(str2)
|
||||
else:
|
||||
return str(base64.b64encode(str2.encode('utf-8')))
|
||||
|
||||
# base64 解码
|
||||
def decode_base64(self, data):
|
||||
import base64
|
||||
str2 = (data).strip()
|
||||
if sys.version_info[0] == 2:
|
||||
return base64.b64decode(str2)
|
||||
else:
|
||||
return str(base64.b64decode(str2))
|
||||
|
||||
class aescrypt_py2():
|
||||
def __init__(self,key,model = 'ECB',iv = None,encode_='utf-8'):
|
||||
self.encode_ = encode_
|
||||
self.model = {'ECB':AES.MODE_ECB,'CBC':AES.MODE_CBC}[model]
|
||||
self.key = self.add_16(key)
|
||||
if model == 'ECB':
|
||||
self.aes = AES.new(self.key,self.model)
|
||||
elif model == 'CBC':
|
||||
self.aes = AES.new(self.key,self.model,iv)
|
||||
|
||||
def add_16(self,par):
|
||||
par = par.encode(self.encode_)
|
||||
while len(par) % 16 != 0:
|
||||
par += b'\x00'
|
||||
return par
|
||||
def aesencrypt(self,text):
|
||||
text = self.add_16(text)
|
||||
self.encrypt_text = self.aes.encrypt(text)
|
||||
return base64.b64encode(self.encrypt_text).decode().strip().replace("\n","")
|
||||
|
||||
def aesdecrypt(self,text):
|
||||
text = base64.b64decode(text.encode(self.encode_))
|
||||
self.decrypt_text = self.aes.decrypt(text)
|
||||
return self.decrypt_text.decode(self.encode_).strip('\0')
|
||||
|
||||
############## base64 #############
|
||||
# base64 编码
|
||||
def encode_base64(self, data):
|
||||
str2 = (data).strip()
|
||||
if sys.version_info[0] == 2:
|
||||
return base64.b64encode(str2)
|
||||
else:
|
||||
return str(base64.b64encode(str2.encode('utf-8')))
|
||||
|
||||
# base64 解码
|
||||
def decode_base64(self, data):
|
||||
import base64
|
||||
str2 = (data).strip()
|
||||
if sys.version_info[0] == 2:
|
||||
return base64.b64decode(str2)
|
||||
else:
|
||||
return str(base64.b64decode(str2))
|
||||
|
||||
|
||||
class AesCryptPy3(object):
|
||||
def __init__(self, key, model='ECB', iv=None, char_set='utf8'):
|
||||
self.char_set = char_set
|
||||
self.model = model
|
||||
self.key = self.add_16(key)
|
||||
self.iv = None if iv is None else self.add_16(iv)
|
||||
|
||||
def add_16(self, par):
|
||||
if not isinstance(par, bytes):
|
||||
par = par.encode(self.char_set)
|
||||
while len(par) % 16 != 0:
|
||||
par += b'\0'
|
||||
return par
|
||||
|
||||
@property
|
||||
def aes(self):
|
||||
if self.model == 'ECB':
|
||||
return AES.new(self.key, AES.MODE_ECB)
|
||||
elif self.model == 'CBC':
|
||||
return AES.new(self.key, AES.MODE_CBC, self.iv)
|
||||
raise ValueError("不支持的加密方式")
|
||||
|
||||
def aes_encrypt(self, text: str):
|
||||
text = pad(text.encode(self.char_set), 16)
|
||||
encrypt_text = self.aes.encrypt(text)
|
||||
return base64.b64encode(encrypt_text).decode()
|
||||
|
||||
def aes_decrypt(self, text: str):
|
||||
text = base64.decodebytes(text.encode(self.char_set))
|
||||
decrypt_text = self.aes.decrypt(text)
|
||||
decrypt_text = unpad(decrypt_text, 16)
|
||||
return decrypt_text.decode(self.char_set).strip('\0')
|
||||
|
||||
# base64 编码
|
||||
@staticmethod
|
||||
def encode_base64(data: str):
|
||||
str2 = data.strip()
|
||||
if sys.version_info[0] == 2:
|
||||
return base64.b64encode(str2)
|
||||
else:
|
||||
return str(base64.b64encode(str2.encode('utf-8')))
|
||||
|
||||
# base64 解码
|
||||
@staticmethod
|
||||
def decode_base64(data: str):
|
||||
import base64
|
||||
str2 = data.strip()
|
||||
if sys.version_info[0] == 2:
|
||||
return base64.b64decode(str2)
|
||||
else:
|
||||
return str(base64.b64decode(str2).decode('utf-8'))
|
||||
Reference in New Issue
Block a user