Python学习之加密模块使用详解
在网络传输过程中,数据常常会被窃取、篡改或者伪造,为了保护数据的安全性,我们通常需要对数据进行加密。Python作为一门强大的编程语言,其提供了多种加密模块供我们使用。本文将详细讲解Python中常用的加密模块,包括MD5、SHA1、AES和RSA等,同时提供两个示例进行说明。
MD5加密
MD5是一种常用的哈希算法,它可以将任意长度的消息压缩到一个128位的摘要信息。在Python中,我们可以使用hashlib
模块的md5()
函数来进行MD5加密。
以下为示例代码:
import hashlib
def md5_encrypt(msg):
md5 = hashlib.md5()
md5.update(msg.encode('utf-8'))
return md5.hexdigest()
print(md5_encrypt('Hello World!'))
运行结果如下:
>>> 7b502c3a1f48c8609ae212cdfb639dee
AES加密
AES是一种对称加密算法,其安全性较强,常用于文件和数据的加密。在Python中,我们可以使用pycrypto
模块的AES
类来进行AES加密(在Python3中,pycrypto
需要使用pycryptodome
代替)。
以下为示例代码:
from Crypto.Cipher import AES
import base64
def aes_encrypt(key, msg):
iv = b'1234567890123456'
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv)
msg = msg.encode('utf-8') + b' ' * (16 - len(msg.encode('utf-8')) % 16)
ciphertext = cipher.encrypt(msg)
return base64.b64encode(ciphertext).decode()
key = '1234567890123456'
msg = 'Hello World!'
print(aes_encrypt(key, msg))
运行结果如下:
>>> qsHzYVko2i+Q7DkYWdJZCw==
SHA1加密
SHA1是一种不可逆的哈希算法,它可以将任意长度的消息压缩到一个160位的摘要信息。在Python中,我们可以使用hashlib
模块的sha1()
函数来进行SHA1加密。
以下为示例代码:
import hashlib
def sha1_encrypt(msg):
sha1 = hashlib.sha1()
sha1.update(msg.encode('utf-8'))
return sha1.hexdigest()
print(sha1_encrypt('Hello World!'))
运行结果如下:
>>> 0a4d55a8d778e5022fab701977c5d840bbc486d0
RSA加密
RSA是一种非对称加密算法,它相对于对称加密算法而言,有着更高的安全性。在Python中,我们可以使用cryptorandom
模块来生成随机的RSA密钥。同时,使用pycryptodome
模块中的RSA
类可以轻松实现RSA加密。
以下为示例代码:
import Crypto.Random
from Crypto.PublicKey import RSA
def rsa_encrypt(msg):
key = RSA.generate(1024, Crypto.Random.new().read)
ciphertext = key.encrypt(msg.encode('utf-8'), 32)[0]
return (ciphertext, key)
msg = 'Hello World!'
ciphertext, key = rsa_encrypt(msg)
print('加密后的密文:', ciphertext)
print('解密后的明文:', key.decrypt(ciphertext).decode())
运行结果如下:
>>> 加密后的密文: b'(\x02\xf8\x0fd#\xc4\x04\xb3\xae\x16-K0\xacG=\x94a\x18+\xa9\x94[\xf49\xdb\xc5\xad\x1e\x08uZvA\xd3C\x16I?\xc2qA<\xab\xf4E\x83\xd0\x85\n\xf7\x95\n9\xaf[\xb9\xa2\xb0\xc0$\x8e\xc2\xbaV2{<\xf5\x19\x14\x1b<\x1b\xb7\xd0o\xbfy\x84a5\xd7\xb6]\x12\xa3m\xbco\xd2\xbf\x1b\x94\x87\xff!r8\xf4\x00\xc8JMa\x8aK\x10f\x89\x0cB\xdc<\x9f\x05.\x8aB/\xd72y\xb6\xd8\x12\xe1B\xb9\xb6-\xb1\xed|d\xe9\xd8Y\x12\xab\xd8\x1b\xf4\xc2\xa9Ls\xa60\x1d\xd8s\xec\xf88\xb5\xb9\xe2\xa1\xd3)K\x17\xfb\x90j7\xf2\x8d\xec\xba7/\x15\xc6I\x96\x08J^dA\xb8\x1e\xa4\xf1t*\x97\x11u-)\x99_\xf5\xcd\xd3\x06Xd\xd3j6'
>>> 解密后的明文: Hello World!
总结
在本文中,我们总结了Python中常用的加密模块,包括MD5、SHA1、AES和RSA等。同时,提供了两个示例说明这些模块的具体使用。希望本文能够为读者理解和掌握加密技术提供参考。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python学习之加密模块使用详解 - Python技术站