mirror of
				https://github.com/nonebot/nonebot2.git
				synced 2025-10-30 22:46:40 +00:00 
			
		
		
		
	✨ add encryption support
This commit is contained in:
		| @@ -0,0 +1,33 @@ | ||||
| import base64 | ||||
| import hashlib | ||||
|  | ||||
| from Crypto.Cipher import AES | ||||
| from nonebot.utils import logger_wrapper | ||||
|  | ||||
| log = logger_wrapper("FEISHU") | ||||
|  | ||||
| class AESCipher(object): | ||||
|  | ||||
|     def __init__(self, key): | ||||
|         self.block_size = AES.block_size | ||||
|         self.key = hashlib.sha256(AESCipher.str_to_bytes(key)).digest() | ||||
|  | ||||
|     @staticmethod | ||||
|     def str_to_bytes(data): | ||||
|         u_type = type(b"".decode('utf8')) | ||||
|         if isinstance(data, u_type): | ||||
|             return data.encode('utf8') | ||||
|         return data | ||||
|  | ||||
|     @staticmethod | ||||
|     def _unpad(s): | ||||
|         return s[:-ord(s[len(s) - 1:])] | ||||
|  | ||||
|     def decrypt(self, enc): | ||||
|         iv = enc[:AES.block_size] | ||||
|         cipher = AES.new(self.key, AES.MODE_CBC, iv) | ||||
|         return self._unpad(cipher.decrypt(enc[AES.block_size:])) | ||||
|  | ||||
|     def decrypt_string(self, enc): | ||||
|         enc = base64.b64decode(enc) | ||||
|         return self.decrypt(enc).decode('utf8') | ||||
		Reference in New Issue
	
	Block a user