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登陆(认证)方式又 ...
随机推荐
- 手把手教你 iOS通过自己的服务器实现应用分发
第一步:打包ipa 1:可以是development.ad-hoc.enterprise任何一种打包方式,导出的ipa, 稍后会将安装包上传到服务器上. 2:如下图,箭头指的要打勾 3.点击下一步后出 ...
- LC 727. Minimum Window Subsequence 【lock,hard】
Given strings S and T, find the minimum (contiguous) substring W of S, so that T is a subsequenceof ...
- 使用gimp画线、矩形、圆等
使用gimp画线.矩形.圆等 https://blog.csdn.net/tody_guo/article/details/7628508 2012年06月03日 19:08:47 Tody Guo ...
- IDEA2019.2个人使用方案
参考文档 https://segmentfault.com/a/1190000019813993?utm_source=tag-newest
- 网络分析:WireShark
安装 WireShark 官网 过滤器 类别 显示过滤器模式 捕获过滤器模式 逻辑表达式 and:&& or:|| 成组:() 过滤实例 仅监听某域名 http.host == &qu ...
- JavaScript DOM 编程艺术(第二版) 有待解决的问题
原书 P181,var repeat = "moveElement('"+elementID+"', "+final_x+", "+fina ...
- 【Linux】【三】linux 复制文件到指定目录
将 application/file/test/logs/ 下的文件 logs.log , logs.tar 复制到 application/file/test/tools/ 下,并新建文件夹[l ...
- Golang- import 导入包的几种方式:点,别名与下划线
包的导入语法 在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用 fmt.Pr ...
- SpringCloud(一):SpringCould 框架预览
前言 SpringCloud是基于SpringBoot的一整套实现微服务的框架.他提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管 ...
- IDEA 控制台中文乱码的问题
-Dfile.encoding=UTF-8