Django 自编写哈希加密函数

哈希加密

  • 该加密算法对于相同的字符串将会是一致的,同时,这种加密是单向的,无法反向编译出来,也就是说,想要对 加密后的数据进行比较,你需要将要比较的数据先进行加密,然后才能进行比较,当两者内容一致时,才会通过验证

  • 当使用在登陆页面时,其流程时这样的:输入密码===>进行加密===>调用数据库===>进行比较===>验证通过===>返回session信息,进入登陆状态

  • ```python
    #导入哈希加密包
    #在py3之后,md5包被移除,其功能被整合到hashlib包中
    import hashlib
    #创建一个新的哈希加密对象
    h1 = hashlib.md5()
    #在对象中添加要加密的字符串,该字符串需要先转化成二进制格式,即utf8
    h1.update(str.encode(encoding=’utf8’))
    #查看转码后的数据,hexdigest为十六进制模式
    print(h1.hexdigest())
    #查看转码后的数据,digest为二进制模式
    print(h1.digest())

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    - 这里要注意的是,每次进行加密,都要重新创建一个哈希对象,也即是重新书写一遍==>h1 = hashlib.md5()

    - 如果不进行重新定义的话,当加密时遇到相同的字符串,如"hello world"这样的字符串,将会出现"hello worldhello world"这样的叠加形式,所以需要重新定义

    ```python
    # 哈希加密在view中的实现, 对创建时的密码以及登陆时的密码进行对应的加密
    def make_password(mypass):
    #生成md5对象
    md5 = hashlib.md5()
    # 定义加密对象
    sign_str = mypass
    # 转码
    sign_utf8 = str(sign_str).encode(encoding='utf-8')
    # 加密操作
    md5.update(sign_utf8)
    # 生成密文
    md5_server = md5.hexdigest()
    # 返回最终数据
    return md5_server
作者

Kawakami Ari

发布于

2022-11-30

更新于

2022-11-30

许可协议