Python之 加密模块

hashlib模块

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

1、加密步骤

一、字符串先转成二进制类型数据库

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

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

 

二、使用加密方法网络

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

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

#结果:e10adc3949ba59abbe56e057f20f883e

 

三、打印加密后的内容加密

使用dir()内置函数显示该变量的全部方法spa

因为该模块pycharm没法提供提示方法,即输入m“.”不出来方法,因此可使用内置函数dir(),将全部方法打印出来。code

#print(dir(m)) #因为这个加密模块pycharm提供不了提示方法,因此若是想知道都有什么方法,可使用内置函数dir(),使用这条语句就能打印出全部方法了
print(m.hexdigest())

 

2、加密相关

一、检验加密结果blog

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

二、md5加密以后是不可逆的md5

  • 网络上能够解密的原理是撞库,即:将经常使用的密码加密完存在数据库里,而后直接搜库。

若是输入的加密后密码碰巧数据库里有,就能把对应的加密前密码返回给你,并非真正的解密。字符串

三、其余的加密方式

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

 

3、加盐

 原理:

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

salt = '545chjdsafl@*&'
password = input('password:')
password += salt  #加盐,把salt和password组合到一块儿

m = hashlib.md5(password.encode())
result = m.hexdigest()
print(result)

 

4、实际应用

#实现加密:传入一个值,若是有盐值,则加盐加密;不然直接加密
def my_md5(s:str,salt=None):
    s=str(s)
    if salt:
        s=s+salt
    m=hashlib.md5(s.encode())
    return m.hexdigest()

 

 


任何付出都是值得的,会愈来愈好 

相关文章
相关标签/搜索