Python中的常见加密算法实践

在信息安全领域,加密算法扮演着极其重要的角色。本文旨在介绍五种常见的加密算法(AES、DES、RSA、MD5、SHA-256),并通过Python实现它们的基本应用。

1. AES加密算法

高级加密标准(AES)是一种广泛使用的对称加密算法。AES的密钥长度可以是128位、192位或256位。以下是使用Python中的cryptography库进行AES加密和解密的示例。

安装必需库

pip install cryptography

示例代码

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import os

# AES加密函数
def aes_encrypt(key, data):
    cipher = Cipher(algorithms.AES(key), modes.CBC(os.urandom(16)), backend=default_backend())
    encryptor = cipher.encryptor()
    ct = encryptor.update(data) + encryptor.finalize()
    return ct

# AES解密函数
def aes_decrypt(key, ct):
    cipher = Cipher(algorithms.AES(key), modes.CBC(ct[:16]), backend=default_backend())
    decryptor = cipher.decryptor()
    return decryptor.update(ct[16:]) + decryptor.finalize()

# 使用示例
key = os.urandom(32)  # 生成密钥
data = b'Hello, AES!'  # 待加密数据
encrypted = aes_encrypt(key, data)
print("Encrypted:", encrypted)
decrypted = aes_decrypt(key, encrypted)
print("Decrypted:", decrypted)

2. DES加密算法

数据加密标准(DES)是一种较早的对称加密算法。尽管它已被视为不够安全,但在一些遗留系统中仍然在使用。以下是使用Python中的cryptography库进行DES加密和解密的示例。

示例代码

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import os

# DES加密函数
def des_encrypt(key, data):
    cipher = Cipher(algorithms.TripleDES(key), modes.CBC(os.urandom(8)), backend=default_backend())
    encryptor = cipher.encryptor()
    ct = encryptor.update(data) + encryptor.finalize()
    return ct

# DES解密函数
def des_decrypt(key, ct):
    cipher = Cipher(algorithms.TripleDES(key), modes.CBC(ct[:8]), backend=default_backend())
    decryptor = cipher.decryptor()
    return decryptor.update(ct[8:]) + decryptor.finalize()

# 使用示例
key = os.urandom(24)  # 生成密钥
data = b'Hello, DES!'  # 待加密数据
encrypted = des_encrypt(key, data)
print("Encrypted:", encrypted)
decrypted = des_decrypt(key, encrypted)
print("Decrypted:", decrypted)

3. RSA加密算法

RSA是一种广泛使用的非对称加密算法,广泛用于数据传输的加密。以下是使用Python中的cryptography库进行RSA加密和解密的示例。

示例代码

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes

# 生成RSA密钥对
def generate_rsa_keys():
    private_key = rsa.generate_private_key(
        public_exponent=65537,
        key_size=2048,
        backend=default_backend()
    )
    public_key = private_key.public_key()
    return private_key, public_key

# RSA加密函数
def rsa_encrypt(public_key, data):
    return public_key.encrypt(
        data,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA256()),
            algorithm=hashes.SHA256(),
            label=None
        )
    )

# RSA解密函数
def rsa_decrypt(private_key, encrypted_data):
    return private_key.decrypt(
        encrypted_data,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA256()),
            algorithm=hashes.SHA256(),
            label=None
        )
    )

# 使用示例
private_key, public_key = generate_rsa_keys()
data = b'Hello, RSA!'
encrypted = rsa_encrypt(public_key, data)
print("Encrypted:", encrypted)
decrypted = rsa_decrypt(private_key, encrypted)
print("Decrypted:", decrypted)

接下来,我们将探讨MD5和SHA-256这两种哈希算法的应用。由于这些算法生成的是不可逆的哈希值,它们通常用于验证数据的完整性,而非加密解密操作。

4. MD5哈希算法

MD5是一种广泛使用的哈希算法,用于生成数据(如文件、消息等)的哈希值。以下是使用Python标准库hashlib生成MD5哈希值的示例。

示例代码

import hashlib

def generate_md5(data):
    md5 = hashlib.md5()
    md5.update(data)
    return md5.hexdigest()

# 使用示例
data = b'Hello, MD5!'
md5_hash = generate_md5(data)
print("MD5 Hash:", md5_hash)

5. SHA-256哈希算法

SHA-256是SHA-2算法家族中的一员,它生成的哈希值长度为256位。它比MD5提供了更高的安全性。以下是使用Python标准库hashlib生成SHA-256哈希值的示例。

示例代码

import hashlib

def generate_sha256(data):
    sha256 = hashlib.sha256()
    sha256.update(data)
    return sha256.hexdigest()

# 使用示例
data = b'Hello, SHA-256!'
sha256_hash = generate_sha256(data)
print("SHA-256 Hash:", sha256_hash)

以上就是今天的每日更新的5个高级Python小技能。希望这些技巧能够对大家有所帮助。如果你有任何问题或其他的技巧分享,欢迎在评论区留言。谢谢大家的阅读!

相关推荐

  1. Python常见加密算法实践

    2024-04-08 08:52:03       13 阅读
  2. 局部加权学习算法Python实现

    2024-04-08 08:52:03       32 阅读
  3. 常见加密算法解密脚本

    2024-04-08 08:52:03       47 阅读
  4. 常见排序算法有哪些?用Python实现一个

    2024-04-08 08:52:03       17 阅读
  5. 前端常见加密方式

    2024-04-08 08:52:03       8 阅读
  6. c 语言常用加密算法——MD5

    2024-04-08 08:52:03       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 08:52:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 08:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 08:52:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 08:52:03       20 阅读

热门阅读

  1. 贪心算法思想

    2024-04-08 08:52:03       14 阅读
  2. Access数据库

    2024-04-08 08:52:03       11 阅读
  3. 2024.4.1力扣每日一题——故障键盘

    2024-04-08 08:52:03       17 阅读
  4. AI智能电销机器人获客的方法

    2024-04-08 08:52:03       11 阅读
  5. ssh -CNg -L

    2024-04-08 08:52:03       16 阅读
  6. linux CentOS7配置docker的yum源并安装

    2024-04-08 08:52:03       14 阅读