python的加密方式
MD5加密
这是一种使用非常广泛的加密方式,不可逆的,在日常字符串加密中经常会用到,下面我简单介绍一下这种方式,主要用到Python自带的模块hashlib,测试代码如下,先创建一个md5对象,然后直接加密就行:
import hashlib
def MD5(string):
'''md5加密'''
h1 = hashlib.md5() # 创建md5对象
# 声明encode
h1.update(string.encode(encoding = 'utf-8'))
return h1.hexdigest()
if __name__ == "__main__":
string = "MD5加密"
print('MD5加密前为:' + string)
print('MD5加密后为:' + MD5(string))
运行结果:
MD5加密前为:MD5加密
MD5加密后为:e5c7bda34849527574a025bc06867c11
哈希加密
这里以SHA1(安全哈希)为例,简单介绍一下Python是如何进行哈希加密的,也用到hashlib这个模块,测试代码如下,非常简单,先创建sha1对象,然后直接加密就行,这里也支持 SHA224,SHA256等加密方式:
import hashlib
def hash(string):
'''哈希加密'''
h1 = hashlib.sha1() # 创建hash对象
# 声明encode
h1.update(string.encode(encoding = 'utf-8'))
return h1.hexdigest()
if __name__ == "__main__":
string = "MD5加密"
print('MD5加密前为:' + string)
print('MD5加密后为:' + hash(string))
运行结果:
hash加密前为:MD5加密
hash加密后为:983bb73e82bd715e65584ea6580bad4ec321c0f4
DES加密
这是一个分组加密算法,解密和加密是同一个算法,下面我简单介绍一下这种方式,主要用到pycryptodome这个模块,输入安装命令pip install pycryptodomex,测试代码如下,需要单独定义一个密钥:
from Cryptodome.Cipher import DES
import binascii
# 设置一个密钥
key = b'abcdefgh'
# 需要去生成一个DES对象
des = DES.new(key,DES.MODE_ECB)
# 需要加密的数据
text = "This is a key!"
text = text + (8 - (len(text) % 8)) * '='
print("text:%s" % text)
# DES加密过程
encrypt_text = des.encrypt(text.encode())
encrypt_text = binascii.b2a_hex(encrypt_text)
print("DES加密后:" + encrypt_text.decode())
# DES解密过程
decrypt_text = binascii.a2b_hex(encrypt_text)
decrypt_text = des.decrypt(decrypt_text)
print("DES解密后:" + decrypt_text.decode())
运行结果:
text:This is a key!==
DES加密后:a5ee554e36736a5d9b6db2cd9442ff38
DES解密后:This is a key!==
AES加密
这也是一种广泛使用的加密方法,是对DES的改进和替代,下面我简单介绍一下这种方式,也用到pycryptodome这个模块,测试代码如下,稍微有些复杂
from Cryptodome.Cipher import AES
from Cryptodome import Random
from binascii import b2a_hex
# 密钥
key = b'This is a 16 key'
# 要加密的明文
data = "AES加密"
# 生成长度等于AES块大小的不可重复的密钥向量
iv = Random.new().read(AES.block_size)
# 使用key和iv初始化AES对象,使用MODE_CFB模式
mycipher = AES.new(key,AES.MODE_CFB,iv)
# 加密的明文长度必须为16的倍数
# 将iv(密钥向量)加到加密的密文开头,一起传输
ciphertext = iv + mycipher.encrypt(data.encode())
# 解密的话要使用key和iv生成新的AES对象
mydecrypt = AES.new(key,AES.MODE_CFB,ciphertext[:16])
# 使用新生成的AES对象,将加密的密文解密
decrypttext = mydecrypt.decrypt(ciphertext[16:])
print("ASD加密后:",b2a_hex(ciphertext)[16:])
print("ASD解密后:",decrypttext.decode())
运行结果:
ASD加密后: b'18541e53ebfe5eef40d3d4631dc3c313d4'
ASD解密后: AES加密
RAS加密
这是一种非对称加密算法,在公开密钥加密和电子商业中经常会用到,下面我简单介绍一下这种方式,主要用到rsa这个模块,安装命令pip install rsa,测试代码如下,需要单独定义一个公钥和私钥
import rsa
key = rsa.newkeys(3000) # 生成随机密钥
privateKey = key[1] # 私钥
publicKey = key[0] # 公钥
message = "RSA加密" # 要加密的明文
message = message.encode()
# RSA加密过程
cryptedMessage = rsa.encrypt(message,publicKey)
print("RSA加密后:",cryptedMessage)
# RSA解密过程
message = rsa.decrypt(cryptedMessage,privateKey)
message = message.decode()
print("RSA解密后:",message)
运行结果:
RSA加密后: b"\x04\xf2\xaf\xbb\xe1\xffW\xd5\xabT`.\xd8\x02\xa7\x85\xdawF\x15Q\x88\xd9\xaf\x9b\xb7@gb\x8a\x81\xce\x8c2GCV;\r\x8a\x91NF\xd8\xb5\x99\x0b\xc5\xf9\xba\x94\xd4l\x8b\xa9a\xd5\x80\x98\xdeb\xcb\xf9N\x8c'Y\x9cX\xca\xf5$\x07A\x1a@\xb6-\xc7\xb22iNu0\xf6\x800\x9d\tB\x93\xe2\xa5P\xe7'+1*\x8aLV\xcac\xd6\x81\xfb\x0b\xee\xe9\x8b\xc4K\\\x0c/\x80\x184T\x80x\x87\xdc\xb3=\x12\x97\x8c\xa6\xecXF\x92\x87m$\x8e\x1c\xe7\x93;1\x9a;n`\xd8\xdb|\xbfW\x04\xfc\xbb\xec&\x8b\x91%\xd6\x12Qe\xa9\x84\xd1\x0c\xac\xd7\xabG\x945W7\x12\xae\xf3#\xd4\xf9\xaed^C\xae'w\x8aM\x01\r\xf9\x80\x1e\tl4\x1c)\\\x98\x01]e+[c\xf34\x99{7\xa5.\xefS\xd6\x99\xfa\x9f\x7f\xe0\x9b\xa2\xf9<p0%\xa1iG\x02\xf9\x0co\xde\xda\xab\x96`y\xb8\xb0\xe8\xd0 \xa9\xa1\x97@\xe7\x06\xa8\xac\x19-[W\xef\x0fR\xb7\\H\x0b\x15^\x0e@\x86g\xb8\xc8U=\xe7\xff\x06\n\x93<P\xc3\xa4\xa5\r\x8e5\xef+D\x9cM?\x1b\x11T\x8f\xa2\xb9\xa4,\x03n\x1e\xd0\xbc\x1ft\xab\x879\x11\xe9\x01\xffJ\xf9\x87\xb4/j\xf1O\x14\x19\xac\x8a\xb8C\xe5~o\xa9]\xca,\xe4\xe6\x18r\xd9\x8f]\xa1\xf8G\xed\x8c\xb6F\x9f\xabu\x12\xc3\x93\xf2] XO\xb0*\xadH0g\x88\x0c\xb9"
RSA解密后: RSA加密
python的加密方式的更多相关文章
- python前后端加密方式
后端加密方法: python后端加密方式: # 双重工加密 #bytes((7788).encode('utf-8')):为后端加密二把手,多加的锁,该参数可为空,必须加bytes才能实现 md5pa ...
- python爬虫之常见的加密方式
前言 数据加密与解密通常是为了保证数据在传输过程中的安全性,自古以来就一直存在,古代主要应用在战争领域,战争中会有很多情报信息要传递,这些重要的信息都会经过加密,在发送到对应的人手上. 现代 ,在网络 ...
- 潭州课堂25班:Ph201805201 爬虫基础 第七课 Python与常见加密方式 (课堂笔记)
打开图形界面 18版 Python与常见加密方式 前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时 ...
- python常见的加密方式
1.前言 我们所说的加密方式都是对二进制编码的格式进行加密,对应到python中,则是我妈们的bytes. 所以当我们在Python中进行加密操作的时候,要确保我们的操作是bytes,否则就会报错. ...
- Python与常见加密方式
前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. 将 ...
- python实现加密的方式总结
python实现加密的方式总结 原文地址 目录 基础知识扫盲 Base64 MD5 DES 3DES AES RSA 基础知识扫盲 对称加密 对称密钥加密 , 又叫私钥加密.即信息发送的方和接受方用一 ...
- 在python实现加密的方式总结
基础知识扫盲 对称加密 对称密钥加密 , 又叫私钥加密.即信息发送的方和接受方用一个密钥去加密和揭秘数据. 最大的优势是 加解密速度快,适合对大量数据进行加密, 对称加密的缺点是密钥的管理和分配, 换 ...
- 大华摄像头报警接口中图片加密,python调用c++方式实现解密
项目中,大华摄像头的报警信息,里面有图片地址,需要1天内取下来,保持留痕 可惜,图片下载后,加密了,大华提供了android,ios,c++例子,没有提供java解密例子 没办法,只好先用c++例子简 ...
- Dr.com──加密方式(网页端)
Dr.com是城市热点公司开发的宽带计费系统,可以控制网络进行管理,认证,计费,限速……许多的高校与企业都有使用. 从接触到drcom就很感兴趣(原因想必大家都懂...) drcom登陆(认证)方式又 ...
随机推荐
- Android RecyclerView与ListView比较
RecyclerView 概述 RecyclerView 集成自 ViewGroup .RecyclerView是Android-support-V7版本中新增的一个Widgets,官方对于它的介绍是 ...
- ECMAScript 6 异步编程
http://www.ruanyifeng.com/blog/2015/04/generator.html
- TcpSendRcv方法笔记1
if (ns.DataAvailable) return ns.ReadByte(); ns.DataAvailable:获取一个值,该值指示在要读取的 NetworkStream 上是否有可用的数据 ...
- JAVA VUser
JAVA VUser 一.java虚拟用户协议 java虚拟用户脚本主要有Java Vuser.Corba-Java.RMI-Java.EJB等类型.这些类型的虚拟用户脚本均可以用java语言来手工编 ...
- git介绍以及常用命令操作
一.git与SVN的对比[面试] ①git是分布式的,SVN是集中式的(最核心) ②git是每个历史版本都存储完整的文件,便于恢复,SVN是存储差异文件,历史版本不可恢复(核心) ③git可离线完成大 ...
- Spring学习之==>AOP
一.概述 AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等等,Struts2的拦截器设计就是基于A ...
- Linux0.11之进程0创建进程1(1)
进程0是由linus写在操作系统文件中的,是预先写死了的.那么进程0以后的进程是如何创建的呢?本篇文章主要讲述进程0创建进程1的过程. 在创建之前,操作系统先是进行了一系列的初始化,分别为设备号.块号 ...
- golang 数据类型之间的转换
一.基本数据类型之间的转换 1.string到int int,err:=strconv.Atoi(string) 2.string到int64 int64, err := strconv.ParseI ...
- 前端vscode常用插件
Auto Rename Tag 这是一个html标签的插件,可以让你修改一边标签,另外一边自动改变. Beautify 格式化代码插件 Braket Pair Colorizer 给js文件中的每一个 ...
- Django的下载与使用基础
下载安装 命令行 pip3 install django==1.11.23 -i https://pypi.tuna.tsinghua.edu.cn/simple pycharm file -- &g ...