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

使用Python实现常用的加密和解密函数

发布时间:2023-06-30 07:56:01

Python提供了许多加密和解密函数的库,可以实现各种常见的加密和解密方法。下面是一些常用的加密和解密函数的示例。

1. MD5加密

MD5是一种常见的消息摘要算法,可以将输入的字符串转换成固定长度的哈希值。Python的hashlib库提供了MD5的实现。

import hashlib

def md5_encrypt(text):
    encrypter = hashlib.md5()
    encrypter.update(text.encode('utf-8'))
    return encrypter.hexdigest()

2. SHA加密

SHA是一种更安全的哈希算法,用于生成摘要的长度可以是160位、224位或256位。Python的hashlib库提供了SHA1、SHA224、SHA256等算法的实现。

import hashlib

def sha_encrypt(text):
    encrypter = hashlib.sha256()  # 也可以使用sha1()或sha224()
    encrypter.update(text.encode('utf-8'))
    return encrypter.hexdigest()

3. BASE64编码和解码

BASE64是一种常见的用于编码二进制数据的方法,常用于在网络或邮件中传输数据。Python的base64库提供了BASE64编码和解码的功能。

import base64

def base64_encode(text):
    encoded_text = base64.b64encode(text.encode('utf-8'))
    return encoded_text.decode('utf-8')  # 返回字符串类型的编码结果

def base64_decode(encoded_text):
    decoded_text = base64.b64decode(encoded_text.encode('utf-8'))
    return decoded_text.decode('utf-8')  # 返回字符串类型的解码结果

4. ROT13加密和解密

ROT13是一种简单的字母替换加密方法,将字母表的前13个字母与后13个字母对应起来。Python的codecs库提供了ROT13的实现。

import codecs

def rot13_encrypt(text):
    encrypted_text = codecs.encode(text, 'rot_13')
    return encrypted_text

def rot13_decrypt(encrypted_text):
    decrypted_text = codecs.decode(encrypted_text, 'rot_13')
    return decrypted_text

5. AES对称加密和解密

AES是一种对称加密算法,可以使用相同的密钥进行加密和解密。Python的Cryptodome库提供了AES的实现。

from Cryptodome.Cipher import AES
from Cryptodome.Random import get_random_bytes

def aes_encrypt(text, key):
    cipher = AES.new(key.encode(), AES.MODE_EAX)
    nonce = cipher.nonce
    ciphertext, tag = cipher.encrypt_and_digest(text.encode())
    return nonce + ciphertext + tag

def aes_decrypt(ciphertext, key):
    nonce = ciphertext[:16]
    ciphertext = ciphertext[16:-16]
    tag = ciphertext[-16:]
    cipher = AES.new(key.encode(), AES.MODE_EAX, nonce=nonce)
    decrypted_text = cipher.decrypt_and_verify(ciphertext, tag)
    return decrypted_text.decode()

这些只是一些常见的加密和解密函数的示例,Python还提供了许多其他的加密和解密方法的库,如RSA非对称加密、DES对称加密等,可以根据具体需求选择相应的库和方法进行加密和解密。