python 中常见的加密

1:加密算法的分类

  • 对称加密:
    • 加密和解密使用了相同的密钥,
    • 特点:速度快,安全性不高
  • 非对称加密:
    • 使用公钥和私钥。大概流程是,接受方发送消息前先生成公钥和私钥,

      然后将公钥发送给发送方,发送将要发送的数据利用公钥进行加密后发送给接受方,接受方再用私钥进行解密

    • 特点:速度慢,安全性高(在这个过程中,公钥负责加密,私钥负责解密,数据在传输过程中即使被截获,攻击者由于没有私钥,因此也无法破解)

2:python中常见的加密算法库

1: base64加密

base64 是一种用64个字符来表示任意二进制数据的方法,Base64编码可以称为密码学的基石。可以将任意的二进制数据进行Base64编码。所有的数据都能被编码为并只用65个字符就能表示的文本文件。
base64编码方法简单,但是却并不保险,别人很容易就能获取原始数据,通常是用来对文件进行一种格式化的操作。它是一种双向加密

 注意:用于base64编码的,要么是ASCII包含的字符,要么是二进制数据

  

>>> import base64
>>> s = "hello world"
>>> bs = base64.b64encode(s.encode('utf-8'))
>>> bs
b'aGVsbG8gd29ybGQ='
>>> base64.b64decode(bs)
b'hello world'

2:MD5加密

  MD5 加密也成为信息摘要算法。可以将一个字符串,或文件,或压缩包,执行md5后,就可以生成一个固定长度为128bit的串。

这个串,基本上是唯一的。因此称之为指纹。MD5 是一种单向加密技术(不可解密)。简单高效且。

具有强抗碰撞,对原文件哪怕只修改一个字符,所计算出的MD5值也会发生很大变化。
基于这些特性,MD5在数据校验上发挥有很大作用。

由于MD5模块在python3中被移除,在python3中使用hashlib模块进行md5操作

>>> import hashlib
>>> s = "hello world"     #待加密的信息
>>> m=hashlib.md5()     #创建MD5 对象
>>> m.update(s.encode())   #将二进制数据进行加密
>>> s  #加密前的数据
'hello world'
>>> m.hexdigest()  #加密后的数据
'5eb63bbbe01eeed093cb22bb8f5acdc3'
>>>

md5的长度,默认为128bit,也就是128个0和1的二进制串。这样表达是很不友好的。所以将二进制转成了16进制,每4个bit表示一个16进制,所以128/4 = 32 换成16进制表示后,为32位了

3:SHA-1加密

与MD5类似,都属于hash算法,sha1加密相对于MD5加密要更安全些,但是效率相对于MD5会低一些。

>>> import hashlib
>>> text = "hello world !"
>>> sha = hashlib.sha1(text)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Unicode-objects must be encoded before hashing
#报错,再次提醒加密数据要encode()
>>> sha = hashlib.sha1(text.encode())
>>> sha.hexdigest()
'b1fda0e52e8099d2aeb80f57bb91548cace3093f'
>>>

 




 

 

 

 

 

 

 

 

 

 

 

 

     

posted on 2021-05-27 18:02  paike123  阅读(292)  评论(0编辑  收藏  举报

导航