zoukankan      html  css  js  c++  java
  • python约束 与MD5加密写法

    python 中约束写法有两种 1 常用的通过继承关系主动抛出异常  2 通过抽象类+抽象方法

    1 常用的通过继承关系主动抛出异常写法

    在本send方法中报错不会抛出异常,
    class BaseMessage(object):
        def send(self):
        """
        必须继承BaseMessage,然后其中必须编写send方法。用于完成具体业务逻辑。
        """
        raise NotImplementedError(".send() 必须被重写.")   # 主动抛异常NotImplementedError,用exception也行但显得不专业
        # raise Exception(".send() 必须被重写.")
    
    class Email(BaseMessage):               # 继承 BaseMessage  必须约束有send方法才行
        def send(self):
            pass                 # 发送邮件类
        def f1(self):
            pass
        def f2(self):
            pass
    
    class Wechat(BaseMessage):           # 继承 BaseMessage  必须约束有send方法才行
        def send(self):
            pass               # 发送微信类
        def f1(self):
            pass
    BaseMessage类用于约束,约束其派生类:保证派生类中必须编写send方法,不然执行可能就会报错。

    2 通过抽象类+抽象方法 (不常用因为编写麻烦)

    from abc import ABCMeta,abstractmethod
    
    class Base(metaclass=ABCMeta): # 抽象类
    
        def f1(self):
            print(123)
    
        @abstractmethod                  # 抽象方法装饰器
        def f2(self): # 抽象方法
            pass
    
    class Foo(Base):
        def f2(self):
            print(666)
    
    obj = Foo()
    obj.f1()

    加密

    加密是不可逆的,为了防止撞库 必须有加盐操作

    import hashlib         # 导入hashlib 模块
    
    SALT = b'2erer3asdfwerxdf34sdfsdfs90'               #  盐 盐必须是字节码
    
    def md5(pwd):                # 传入密码
        # 实例化对象      加盐
        obj = hashlib.md5(SALT)                                      
        # 写入要加密的字节
        obj.update(pwd.encode('utf-8'))
        # 获取密文
        return obj.hexdigest() # 21232f297a57a5a743894a0e4a801fc3 # 66fbdc0f98f68d69cd458b0cee975fe3 
    
    user = input("请输入用户名:")
    pwd = input("请输入密码:")
    if user == 'oldboy' and md5(pwd) == 'c5395258d82599e5f1bec3be1e4dea4a':
        print('登录成功')
    else:
        print('登录失败')
  • 相关阅读:
    Codeforces Beta Round #9 (Div. 2 Only) C. Hexadecimal's Numbers dfs
    Codeforces Beta Round #9 (Div. 2 Only) B. Running Student 水题
    Codeforces Beta Round #9 (Div. 2 Only) A. Die Roll 水题
    51nod 1035 最长的循环节 数学
    BSGS 模板
    51nod 1040 最大公约数之和 欧拉函数
    51NOD 1179 最大的最大公约数 筛法
    BZOJ 2818: Gcd 筛法
    川大校赛总结
    SCOJ 4484 The Graver Robbers' Chronicles 后缀自动机
  • 原文地址:https://www.cnblogs.com/Mr-wangxd/p/9575041.html
Copyright © 2011-2022 走看看