首页 > 编程语言 >Python数据加密方法详解|为你的隐私再上一把锁!

Python数据加密方法详解|为你的隐私再上一把锁!

时间:2023-05-21 17:32:43浏览次数:55  
标签:编码 加密 Python str1 encode 详解 estr print


前言

数字化时代下,数据安全是各大公司及个人最关心的一点,作为一个Python语言使用者我们该如何进行数据的加密呢?本文二哥领着大家来了解一下。

目录

前言

一、数据加密的概念

二、直接编码加密

三、Binascii编码加密

三、Base64编码加密

四、URL编码加密

五、Hashlib加密

1、MD5

2、SHA1加密

六、Hmac加密

七、PyCryptodome加密

一、数据加密的概念

数据加密的概念如下:

数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它的核心是密码学。

数据加密仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。

在计算机中,我们通常都是对二进制编码的格式进行加密,在用Python进行加密的时候我们通常使用的手段就是对原数据进行各种类型的编码。

二、直接编码加密

简介

在Python提供了encode和decode作为编码器和译码器,我们直接使用encode就可以起到加密的效果。

加密方式

\x :16进制。

代码示例

# 代码
str1 = '这是个秘密'
estr = str1.encode('utf8')
print(ustr)
dstr = estr.decode('utf8')
print(dstr)


# 输出

b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\xaa\xe7\xa7\x98\xe5\xaf\x86'

这是个秘密

三、Binascii编码加密

简介

在使用Python自带的encode方法进行数据加密的时候,很明显的可以看出加密后的内容是16进制的结果,此时使用Binascii模块我们可以将直接encode编码后的结果做进一步的优化。

加密方式

Binascii中提供了两个重要的函数:

  • b2a_hex :将encode后的编码进行优化。
  • a2b_hex :将优化后的编码回退成encode编码。

代码示例

# 代码
str1 = '这是个秘密'
estr = str1.encode('utf8')
print(ustr)
dstr = estr.decode('utf8')
print(dstr)

import binascii

b2a = binascii.b2a_hex(estr)
print(b2a)
a2b = binascii.a2b_hex(b2a)
print(a2b)

# 输出

b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\xaa\xe7\xa7\x98\xe5\xaf\x86'
这是个秘密
b'e8bf99e698afe4b8aae7a798e5af86'
b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\xaa\xe7\xa7\x98\xe5\xaf\x86'

三、Base64编码加密

简介

Base64模块会使用65个字符(计算机从0开始计数)来表示任意的二进制数据。

加密方式

65个字符 :(A~Z a~z 0~9 + / =)

代码示例

# 代码
import base64

str1 = b'It\'s a secret'
b64_estr = base64.b64encode(str1)
print(b64_str)
b64_dstr = base64.b64decode(b64_estr)
print(b64_dstr)

# 输出

b'aGVsbG8='
b"It's a secret"

四、URL编码加密

简介

通常我们看到的网页信息中是不会包含中文及特殊字符的,URL编码就是起到了此类的作用。

加密方式

将超出ASCII范围的字符转换成十六进制。

代码示例

# 代码
import urllib

str1 = '这是个秘密'
estr = urllib.parse.quote(str1)
print(estr)
dstr = urllib.parse.unquote(estr)
print(dstr)

# 输出
%E8%BF%99%E6%98%AF%E4%B8%AA%E7%A7%98%E5%AF%86
这是个秘密

五、Hashlib加密

1、MD5

简介

我们熟知的MD5加密(信息-摘要算法)在Python3中使用Hashlib模块进行操作,关于该算法的原理,我们可以简单的理解为:通过一个函数,把任意长度的数据转换为一个长度固定的数据串。

加密方式

通常用16进制的字符串表示。

性质

  • 不可逆性:MD5加密是一种散列函数(哈希函数),他是一个单向密码体制,即从明文到密文的不可逆映射,只有加密过程没有解密过程。
  • 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  • 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  • 抗碰撞性:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

代码示例

# 代码
import hashlib

str1 = '这是个秘密'

# encode加密方式
hl = hashlib.md5()
hl.update(str1.encode('utf8'))
hash1 = hl.hexdigest()
print(hash1)

# 双层加密
'''
如果没有参数,所以md5遵守一个规则,生成同一个对应关系,如果加了参数,
就是在原先加密的基础上再加密一层,这样的话参数只有自己知道,防止被撞库,
因为别人永远拿不到这个参数

'''
h2 = hashlib.md5(bytes(str1, encoding='utf8'))
hash2 = h2.hexdigest()
print(hash2)

h2.update(bytes(str1, encoding='utf8'))
print(h2.hexdigest())

# 输出
ccabfe6517601612d67090e0a5553298
ccabfe6517601612d67090e0a5553298
939fe93415c6a8d0a4f5b5b8bb9e1dcb

注:我们很多下载文件内容的命名就是md5加密后的结果。

2、SHA1加密

简介

sha1算法是基于MD5的一种加密算法,加密后的数据长度会比MD5更长,但是效率也会变的更慢。

代码示例

# 代码
import hashlib

str1 = "这是个秘密"
S1 = hashlib.sha1(str1.encode("utf-8")).hexdigest()
print(S1)

# 输出
23ef694ec95931e499bc98783bce30687304aa0c

六、Hmac加密

简介

和hashlib一样,Hmac也是基于哈希算法的一种加密方式,并且Hmac提供的API和hashlib基本一致。

代码示例

# 代码
import hmac

str1 = '这是个秘密'

# new中需要传入一个密钥
hl = hmac.new(b'key')
hl.update(str1.encode('utf8'))
hash1 = hl.hexdigest()
print(hash1)

# 输出
e5530035642465913334be1620943182

七、PyCryptodome加密

简介

最出名的Python密码学第三方软件包PyCrypto于2013年停止更新了,随之时间推移该项目的一个分支PyCryptodome已经将PyCrypto进行了替代。

PyCryptodome加密主页

关于PyCryptodome的安装和使用在不同的系统及版本上有不同的操作,想了解PyCryptodome的读者可以移步主页进行了解。

https://www.pycryptodome.org/en/latest/src/introduction.html

 

 

标签:编码,加密,Python,str1,encode,详解,estr,print
From: https://blog.51cto.com/u_15969421/6319881

相关文章

  • 左程云动态规划问题学习(python版本重写)
    哔哩哔哩:6.二次优化(3)_哔哩哔哩_bilibili第一个版本对动态规划的理解#问题有大量的重复问题,比如求feibolaqie(5)=feibolaqie(4)+feibolaqie(3),#所以有重复问题,通过缓存优化,把以前求过的问题做缓存#deffeibolaqie(n):#ifn==1:#return1#eli......
  • python爬取《肖申克的救赎》电影演员
    importrequestsfrombs4importBeautifulSoup#豆瓣电影页面链接url='https://movie.douban.com/subject/1292052/'#设置请求头信息,模拟浏览器请求headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,lik......
  • python-docx - 3
    1.样式1.1访问样式使用Document.styles属性访问样式。fromdocximportDocumentdocument=Document()#获取样式对象,这里面可以像字典一样访问,也可以迭代styles=document.stylesforstyleinstyles:print(style.name,"\t",style.type)#获取一个正文样式......
  • Python使用pip安装第三方包
    ​ 参考文章:如何安装第三方的Python包?-知乎​pipinstall-i网址包名称例如:pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple/numpy常用的网址有:清华:https://pypi.tuna.tsinghua.edu.cn/simple/阿里云:http://mirrors.aliyun.com/pypi/simple/......
  • Python安装教程
    Python安装教程https://zhuanlan.zhihu.com/p/569019068python下载https://www.python.org/downloads/windows/pycharm下载https://www.jetbrains.com/pycharm/download/#section=windows配置https://zhuanlan.zhihu.com/p/587849846?utm_id=0......
  • python 云服务器部署 flask 项目
    测试模式,非生产模式1.修改host和port 2.上传项目 3.下载python项目管理器  4.创建项目 5.开放端口,远程连接数据库......
  • 深入理解 python 虚拟机:魔术方法之数学计算
    深入理解python虚拟机:魔术方法之数学计算在本篇文章当中主要给大家介绍在python当中一些常见的魔术方法,本篇文章主要是关于与数学计算相关的一些魔术方法,在很多科学计算的包当中都使用到了这些魔术方法。大小比较当我们在Python中定义自己的类时,可以通过重写一些特殊方法来......
  • Python多进程编程-进程间共享数据(Value、Array、Manager)
    转载:(14条消息)Python多进程编程-进程间共享数据(Value、Array、Manager)_managervalue_Loadinggggg的博客-CSDN博客Value、Array是通过共享内存的方式共享数据Manager是通过共享进程的方式共享数据。Value\Array实例代码:importmultiprocessing#Value/Arraydeffunc1(a,arr......
  • Python并发编程:为什么传入进程池的目标函数不执行,也没有报错?
    转载:Python并发编程:为什么传入进程池的目标函数不执行,也没有报错?-知乎(zhihu.com)python初学者使用进程池时,很容易掉坑里! python并发编程中,这个问题是新手经常容易犯的错,十个人,大概有九个都会掉入其中。借此机会,对该问题的前因后果做个记录,分享于此!一、错误代码复现我......
  • python 进程池multiprocessing.Pool
    转载:python进程池multiprocessing.Pool(44)-知乎(zhihu.com)python进程池Pool和前面讲解的python线程池类似,虽然使用多进程能提高效率,但是进程的创建会消耗大量的计算机资源(进程Process的创建远远大于线程Thread创建占用的资源),线程是计算机最小的运行单位,连线程都需要使用线程......