import os import re import base64 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher def encrypt_data(**kwargs): """ 用公钥加密 Parameters: msg str 待加密信息 Returns: 加密后结果 """ msg = kwargs['msg'] # 待加密信息 with open(os.path.abspath(os.path.dirname(__file__)+'/static/rsa_public_key.pem')) as f: data = f.read() public_key = RSA.importKey(data) cipher = PKCS1_cipher.new(public_key) encrypt_text = base64.b64encode(cipher.encrypt(bytes(msg.encode("utf8")))) return encrypt_text.decode('utf-8') def decrypt_data(**kwargs): """ 用私钥解密 Parameters: encrypt_msg str 加密信息 Returns: 执行正确 解密后结果 执行错误 False """ try: encrypt_msg = kwargs['encrypt_msg'] # 加密信息 with open(os.path.abspath(os.path.dirname(__file__)+'/static/rsa_private_key.pem')) as f: data = f.read() private_key = RSA.importKey(data) cipher = PKCS1_cipher.new(private_key) back_text = cipher.decrypt(base64.b64decode(encrypt_msg), 0) return back_text.decode('utf-8') except Exception: return False def check_mail_fmt(email): """ 邮箱地址格式校验,仅允许@fecr.com.cn Parameters: email: 邮箱 Returns: result: 邮箱校验结果,正确返回True,不正确返回False """ regex = "^.+\\@fecr.com.cn" case = (len(email) > 7) and (re.match(regex, email) is not None) result = True if case else False return result def check_pwd_fmt(pwd): """ 密码强度校验 Parameters: pwd: 密码(已加密) Returns: result: 密码强度校验结果,正确返回True,不正确返回False """ password = decrypt_data(encrypt_msg=pwd) if not password: return False regex = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$" case = (len(password) >= 8) and (re.match(regex, password) is not None) result = True if case else False return result if __name__ == '__main__': print(encrypt_data(msg="Fecr1988."))