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\[email protected]\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\[email protected]\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\[email protected]\xe7\x06\xa8\xac\x19-[W\xef\x0fR\xb7\\H\x0b\x15^\[email protected]\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加密

原文地址:https://www.cnblogs.com/kadycui/p/11027107.html

时间: 2024-11-05 21:46:57

python的加密方式的相关文章

python前后端加密方式

后端加密方法: python后端加密方式: # 双重工加密 #bytes((7788).encode('utf-8')):为后端加密二把手,多加的锁,该参数可为空,必须加bytes才能实现 md5password=hashlib.md5(bytes((7788).encode('utf-8'))) #data['user_password']).encode('utf-8'):才是真正要加密的密码 md5password.update(bytes(data['user_password']).e

最常见加密方式和Python实现

前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. 将字符串和Bytes互相转换可以使用encode()和decode()方法.如下所示: # 方法中不传参数则是以默认的utf-8编码进行转换 In [1]: '南北'.encode() Out[1]: b'\xe5\x8d\x97\xe5\x8c\x97' ? In [2]: b'\xe5\x8d\x

那些你还不知晓的Python加密方式,现在有机会接触了,种类繁多!

我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的 Bytes . 所以当我们在Python中进行加密操作的时候,要确保我们操作的是 Bytes ,否则就会报错. 两位十六进制常常用来显示一个二进制字节. 利用 binascii 模块可以将十六进制显示的字节转换成我们在加解密中更常用的显示方式: URL编码 简介 正常的URL中是只能包含ASCII字符的,也就是字符.数字和一些符号.而URL编码就是一种浏览器用来避免url中出现特殊字符(如汉字)的编码方式.

Python与常见加密方式

前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. 将字符串和Bytes互相转换可以使用encode()和decode()方法.如下所示: # 方法中不传参数则是以默认的utf-8编码进行转换 In [1]: '南北'.encode() Out[1]: b'\xe5\x8d\x97\xe5\x8c\x97' ? In [2]: b'\xe5\x8d\x

python常见的加密方式

1.前言 我们所说的加密方式都是对二进制编码的格式进行加密,对应到python中,则是我妈们的bytes. 所以当我们在Python中进行加密操作的时候,要确保我们的操作是bytes,否则就会报错. 将字符串和bytes互相转换可以用encode()和decode()方法,如下所示: 注:两位十六进制常常用来显示一个二进制字节. 利用binascii模块可以将十六进制显示的字节转换成我们在加密中更加常用的显示方式: In [1]: import binascii In [2]: "你好"

Python编程入门学习:最常见加密方式和Python实现

前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错. 将字符串和Bytes互相转换可以使用encode()和decode()方法.如下所示: # 方法中不传参数则是以默认的utf-8编码进行转换In [1]: '南北'.encode()Out[1]: b'\xe5\x8d\x97\xe5\x8c\x97'In [2]: b'\xe5\x8d\x97\xe

为你的Python程序加密

??在实际的工作中,有时候我们需要部署自己的Python应用,但这时候我们并不希望别人能够看到自己的Python源程序.因此,我们需要为自己的源代码进行加密,Python已经为我们提供了这样一套工作机制. ??第一种加密Python源代码的方式,是将.py文件转化为.pyc文件,但这种加密方式很容易被反编译,因此实用性并不高. ??第二种加密Python源代码的方式,是将.py文件转化为.so文件,这样加密的可靠性非常高,无法被被人破解,也就很好地保护了源代码. ??本文以Linux系统(Ubu

extmail 密码加密方式修改为plain-md5的方法

extmail默认密码加密方式是md5crypt,但是有些时候会遇到这样的问题--老的邮件系统中的用户密码是md5加密的. 此时需要将extmail的密码加密方式修改为md5,通过官方解释(md5和md5crypt没有区别),修改为plain-md5即可.但是,这只解决了web登陆的验证问题,没有解决smtp以及pop3的验证问题. 通过 http://www.extmail.org/forum/viewthread.php?tid=3175 帖子解决了验证问题,内容摘录如下: courier-

Python 的执行方式,字节码 bytecode

这里有个博客讲 Python 内部机制,已经有一些中文翻译. 可能因为我用的Python 3.5,例子跑起来有些不一样. 此外,我又查了其他一些参考资料,总结如下: Python 的执行方式 先看一个比较详细的步骤分解: >>> a = "hello" 输入这行代码之后,你一按回车,Python就会执行四步操作: 1  lexing: 词法分析,就是把一个句子分解成 token.大致来说,就是用str.split()可以实现的功能. 2  parsing:解析,就是把