• Python之加密模块


    hashlib模块

    • 加密方式以md5方式加密举例
    • 是标准模块,直接导入即可
    • 还有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密后的字符串长度更长,安全性更高

    一、加密步骤

    1、字符串先转成二进制类型

    使用.encode()方法转成二进制类型

    import hashlib
    password='123456'
    print(password.encode())#字符串不能直接加密,要先转成二进制类型的才可以加密
    #结果为:b'123456'

    2、使用加密方法

    使用.hexdigest()方法输出加密后内容

    import hashlib
    password='123456'
    m=hashlib.md5(password.encode()) #先转成二进制,再加密
    #print(dir(m)) #由于这个加密模块pycharm提供不了提示方法,所以如果想知道都有什么方法,可以使用内置函数dir(),使用这条语句就能打印出所有方法了
    print(m.hexdigest())

    3、打印加密后的内容

    使用dir()内置函数显示该变量的所有方法

    由于该模块pycharm无法提供提示方法,即输入m“.”不出来方法,所以可以使用内置函数dir(),将所有方法打印出来。

    #print(dir(m)) #由于这个加密模块pycharm提供不了提示方法,所以如果想知道都有什么方法,可以使用内置函数dir(),使用这条语句就能打印出所有方法了
    print(m.hexdigest())

    二、加密相关

    1、检验加密结果

    • 由于md5方式加密完的字符串无论原字符串有多长都是32位,因此可以使用len()方法检验是否加密成功:
    print(len(m.hexdigest())

    2、md5加密之后是不可逆的

    • 网络上可以解密的原理是撞库,即:将常用的密码加密完存在数据库里,然后直接搜库。

    如果输入的加密后密码碰巧数据库里有,就能把对应的加密前密码返回给你,并不是真正的解密。

    3、其他的加密方式

    本文的加密方式以md5方式加密举例,还有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密后的字符串长度更长,安全性更高。

    m=hashlib.sha1(password.encode())#不同的加密方式
    m=hashlib.sha224(password.encode()) #不同的加密方式
    m=hashlib.sha256(password.encode()) #不同的加密方式

    三、加盐

     原理:

    如果要对password=123456加密,这个明文密码太简单,容易撞库解密,所以在123456之后随机加一个字符串,比如abc,这样实际是对123456abc进行加密,如果不知道abc这个字符串,反解的可能性降低,安全性更高。这样的一个字符串就叫做盐。

    四、实际应用

    #实现加密:传入一个值,如果有盐值,则加盐加密;否则直接加密
    def my_md5(s:str,salt=None):
        s=str(s)
        if salt:
            s=s+salt
        m=hashlib.md5(s.encode())
        return m.hexdigest()
        
    每天进步一点点,快乐生活多一点。
  • 相关阅读:
    Java知识系统回顾整理01基础05控制流程02 switch
    Java知识系统回顾整理01基础05控制流程01if
    Java知识系统回顾整理01基础04操作符07Scanner
    Java知识系统回顾整理01基础04操作符06三元运算符
    Java知识系统回顾整理01基础04操作符05赋值操作符
    Java知识系统回顾整理01基础04操作符04位操作符
    Java知识系统回顾整理01基础04操作符03逻辑运算符
    leetcode-----74. 搜索二维矩阵
    leetcode-----73. 矩阵置零
    leetcode-----72. 编辑距离
  • 原文地址:https://www.cnblogs.com/yiruliu/p/9724886.html
Copyright © 2020-2023  润新知