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小技能。希望这些技巧能够对大家有所帮助。如果你有任何问题或其他的技巧分享,欢迎在评论区留言。谢谢大家的阅读!

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值