欢迎访问宙启技术站
智能推送

对字符串进行加密的函数

发布时间:2023-06-08 03:19:41

加密是一种信息安全技术,将明文通过一定的算法转换成密文,保证数据在传输或存储过程中不被非法访问。字符串加密就是将普通字符串转换成密文的过程,常见的加密算法有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,并且在示例代码中给出了各个算法的加密实现,供参考。需要注意的是,在实际使用中可能会遇到不同编码、加密模式等问题,需要根据具体情况进行修改调整。另外,加密仅是信息安全中的一小部分,对于整个信息安全体系的构建,还需要结合更多的技术、策略和管理手段。