python中常用的加密算法

Python中加密与解密是一个广泛的话题,因为存在多种加密技术(如对称加密、非对称加密、哈希等)和库(如cryptographyPyCryptohashlib等)来实现这些技术。下面我将简要介绍一些基本的加密解密方法及其Python实现。

1. 哈希加密(单向加密)

哈希加密是一种单向加密技术,主要用于验证数据的完整性,而不是为了加密数据以供解密。常见的哈希算法包括MD5、SHA-1、SHA-256等。

使用hashlib库进行哈希加密:
import hashlib

def hash_password(password):
    # 使用sha256算法
    sha_signature = hashlib.sha256(password.encode()).hexdigest()
    return sha_signature

# 使用示例
password = "my_secret_password"
hashed_password = hash_password(password)
print(hashed_password)

2. 对称加密

对称加密使用相同的密钥进行加密和解密。常见的算法包括AES、DES等。

使用cryptography库进行AES加密解密:

首先,你需要安装cryptography库(如果你还没有安装的话):

pip install cryptography

然后,你可以使用以下代码进行AES加密和解密:

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
from base64 import b64encode, b64decode

def aes_encrypt(plaintext, key):
    iv = os.urandom(16)  # 随机生成初始化向量
    cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
    encryptor = cipher.encryptor()
    padder = padding.PKCS7(algorithms.AES.block_size).padder()
    padded_data = padder.update(plaintext) + padder.finalize()
    encrypted = encryptor.update(padded_data) + encryptor.finalize()
    return iv + encrypted

def aes_decrypt(ciphertext, key):
    iv = ciphertext[:16]  # 假设IV是16字节
    cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
    decryptor = cipher.decryptor()
    padded_plaintext = decryptor.update(ciphertext[16:]) + decryptor.finalize()
    unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder()
    return unpadder.update(padded_plaintext) + unpadder.finalize()

# 使用示例
key = os.urandom(16)  # 随机生成密钥
plaintext = b"Hello, world!"
encrypted = aes_encrypt(plaintext, key)
decrypted = aes_decrypt(encrypted, key)
print(decrypted)

注意:这里为了简单起见,密钥和IV是随机生成的,并在加密和解密过程中都使用了相同的值。在实际应用中,密钥和IV的管理要复杂得多,并且需要确保它们的安全性。

3. 非对称加密

非对称加密使用一对密钥(公钥和私钥)进行加密和解密。公钥用于加密数据,私钥用于解密数据。常见的算法包括RSA、ECC等。

由于非对称加密的复杂性和篇幅限制,这里不再详细展开。但你可以使用Python的cryptography库来实现非对称加密。

注意

  • 加密和解密是一个复杂的领域,涉及许多安全考虑因素。
  • 在选择加密算法和库时,请确保它们已经过充分测试,并且受到广泛认可。
  • 始终注意密钥管理,确保密钥的安全性和保密性。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值