对字符串进行加密的函数
加密是一种信息安全技术,将明文通过一定的算法转换成密文,保证数据在传输或存储过程中不被非法访问。字符串加密就是将普通字符串转换成密文的过程,常见的加密算法有MD5、SHA、DES、AES,下面本文将详细介绍如何通过Python实现字符串的加密功能。
## 一、MD5加密
MD5(MD5 Message-Digest Algorithm)是一种常见的哈希算法,它能够将任意长度的消息压缩成一种固定长度的结果。在Python中,我们可以使用hashlib模块进行MD5加密,示例代码如下:
import hashlib
def md5_encrypt(str):
m = hashlib.md5()
m.update(str.encode())
return m.hexdigest()
## 二、SHA加密
SHA(Secure Hash Algorithm)是一种常见的哈希算法,它能够将任意长度的消息压缩成固定长度的字节串。在Python中,我们同样可以使用hashlib模块进行SHA加密,示例代码如下:
import hashlib
def sha_encrypt(str):
sha1 = hashlib.sha1()
sha1.update(str.encode())
return sha1.hexdigest()
def sha256_encrypt(str):
sha256 = hashlib.sha256()
sha256.update(str.encode())
return sha256.hexdigest()
def sha512_encrypt(str):
sha512 = hashlib.sha512()
sha512.update(str.encode())
return sha512.hexdigest()
## 三、DES加密
DES(Data Encryption Standard)是一种对称加密算法,它以64位为分组长度,以56位为密钥长度,它的加密过程中由最基本的加密、解密算法,密钥的管理和保护相配合协同完成加密解密过程。在Python中,我们可以使用pyDes模块进行DES加密,示例代码如下:
from pyDes import des, CBC, PAD_PKCS5
def des_encrypt(str, key):
iv = b"\x01\x02\x03\x04\x05\x06\x07\x08"
k = des(key, CBC, iv, pad=None, padmode=PAD_PKCS5)
return k.encrypt(str)
def des_decrypt(str, key):
iv = b"\x01\x02\x03\x04\x05\x06\x07\x08"
k = des(key, CBC, iv, pad=None, padmode=PAD_PKCS5)
return k.decrypt(str)
## 四、AES加密
AES(Advanced Encryption Standard)是一种对称密钥加密算法,它可以使用128位、192位或256位长度的密钥来加密128位的数据块。在Python中,我们可以使用pycryptodome模块进行AES加密,示例代码如下:
from Crypto.Cipher import AES
import base64
def aes_encrypt(str, key):
iv = b"1234567812345678"
BS = AES.block_size
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
cipher = AES.new(key.encode(), AES.MODE_CBC, iv)
encrypted = cipher.encrypt(pad(str).encode())
return base64.b64encode(encrypted)
def aes_decrypt(str, key):
iv = b"1234567812345678"
BS = AES.block_size
unpad = lambda s : s[0:-ord(s[-1])]
cipher = AES.new(key.encode(), AES.MODE_CBC, iv)
return unpad(cipher.decrypt(base64.b64decode(str))).decode('utf-8')
## 五、总结
本文主要介绍了Python中四种常见的加密算法:MD5、SHA、DES、AES,并且在示例代码中给出了各个算法的加密实现,供参考。需要注意的是,在实际使用中可能会遇到不同编码、加密模式等问题,需要根据具体情况进行修改调整。另外,加密仅是信息安全中的一小部分,对于整个信息安全体系的构建,还需要结合更多的技术、策略和管理手段。
