You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
959 B

7 months ago
import base64
import hashlib
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
from Crypto.Cipher import DES3
from Crypto.Util.Padding import pad, unpad
def md5(orig: bytes) -> bytes:
m = hashlib.md5()
m.update(orig)
return bytes.fromhex(m.hexdigest())
def base64_encode(orig: bytes) -> str:
return base64.b64encode(orig).decode()
def base64_decode(b64: str) -> bytes:
return base64.b64decode(b64)
def rsa_decrypt(cipher_text: bytes, private_key: str) -> str:
cipher = PKCS1_v1_5.new(RSA.importKey(private_key))
decrypt_text = cipher.decrypt(cipher_text, b"rsa")
return decrypt_text.decode("utf-8")
def des3_decrypt(cipher_text: bytes, key: bytes) -> bytes:
cipher = DES3.new(key, DES3.MODE_ECB)
return unpad(cipher.decrypt(cipher_text), 16)
def des3_encrypt(origin_text: bytes, key: bytes) -> bytes:
cipher = DES3.new(key, DES3.MODE_ECB)
return cipher.encrypt(pad(origin_text, 16))