feat:项目完成

This commit is contained in:
2024-05-23 11:12:39 +08:00
commit aabf6fdda6
124 changed files with 76499 additions and 0 deletions

45
func/decryption.py Normal file
View File

@@ -0,0 +1,45 @@
import Crypto, base64
from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA
from Crypto.Cipher import DES
# rsa解密密文方法
def get_max_length(rsa_key, encrypt=True):
"""加密内容过长时 需要分段加密 换算每一段的长度.
:param rsa_key: 钥匙.
:param encrypt: 是否是加密.
"""
blocksize = Crypto.Util.number.size(rsa_key.n) / 8
reserve_size = 11 # 预留位为11
if not encrypt: # 解密时不需要考虑预留位
reserve_size = 0
maxlength = blocksize - reserve_size
return maxlength
# ------------------------解密密文------------------------
def decryption(text_encrypted_base64: str, private_key: bytes):
# 字符串指定编码转为bytes
text_encrypted_base64 = text_encrypted_base64.encode('utf-8')
# base64解码
text_encrypted = base64.b64decode(text_encrypted_base64)
# 构建私钥对象
private_key = RSA.importKey(private_key)
max_length = int(get_max_length(private_key, False))
cipher_private = PKCS1_v1_5.new(private_key)
length = len(text_encrypted)
if length < max_length:
return b''.join(cipher_private.decrypt(text_encrypted, b'xyz'))
# 需要分段
offset = 0
res = []
while length - offset > 0:
if length - offset > max_length:
res.append(cipher_private.decrypt(text_encrypted[offset:offset + max_length], b'xyz'))
else:
res.append(cipher_private.decrypt(text_encrypted[offset:], b'xyz'))
offset += max_length
text_decrypted = b''
for i in res:
text_decrypted += i
# print(text_decrypted.decode())
return text_decrypted.decode()