当前位置:   article > 正文

Python实战:加密解密技术_python加解密

python加解密

一、引言

在当今数字化时代,数据安全变得日益重要。为了保护数据不被未授权访问和泄露,加密技术成为了一种重要的手段。Python作为一种广泛使用的编程语言,提供了多种加密解密库,使得在Python程序中实现加密解密功能变得相对简单。本文将详细介绍Python中的加密解密技术,并通过具体代码示例展示如何实现数据的安全保护。

二、加密的基本概念

加密是一种将数据转换为只有特定接收者才能解读的形式的技术。以下是几种常见的加密方法:

  1. 对称加密:对称加密是一种加密方式,其中加密和解密使用相同的密钥。常见的对称加密算法有AES、DES、3DES等。
  2. 非对称加密:非对称加密是一种加密方式,其中加密和解密使用不同的密钥。常见的非对称加密算法有RSA、ECC等。
  3. 哈希算法:哈希算法是一种将数据转换为固定长度字符串的技术,通常用于数据完整性验证。常见的哈希算法有MD5、SHA-256等。

三、Python加密库介绍

Python中有多个加密库,其中常用的有cryptographyPyCrypto

  1. cryptographycryptography是一个现代的加密库,提供了广泛的加密算法和功能。它支持对称加密、非对称加密、哈希算法等多种加密方法。
  2. PyCryptoPyCrypto是一个较老的加密库,但仍然广泛使用。它提供了多种加密算法,包括对称加密、非对称加密和哈希算法等。

四、对称加密示例

以下是一个使用cryptography库进行对称加密和解密的示例:

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import os
# 生成一个密钥
key = os.urandom(16)
# 创建一个加密器
cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=default_backend())
# 加密数据
encryptor = cipher.encryptor()
encrypted_data = encryptor.update(b'Hello, World!') + encryptor.finalize()
# 解密数据
decryptor = cipher.decryptor()
decrypted_data = decryptor.update(encrypted_data) + decryptor.finalize()
print('Original:', repr(b'Hello, World!'))
print('Encrypted:', repr(encrypted_data))
print('Decrypted:', repr(decrypted_data))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这个示例中,我们使用AES算法和ECB模式创建了一个加密器。然后,我们使用加密器对’Hello, World!'进行加密,并使用解密器对加密数据进行解密。

五、非对称加密示例

以下是一个使用cryptography库进行非对称加密和解密的示例:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding
import os
# 生成一对密钥
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
)
public_key = private_key.public_key()
# 加密数据
message = b'Hello, World!'
ciphertext = public_key.encrypt(
    message,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)
# 解密数据
private_key = private_key
plaintext = private_key.decrypt(
    ciphertext,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)
print('Original:', repr(message))
print('Encrypted:', repr(ciphertext))
print('Decrypted:', repr(plaintext))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
'
运行

在这个示例中,我们使用RSA算法生成了一对密钥。然后,我们使用公钥对’Hello, World!'进行加密,并使用私钥对加密数据进行解密。

六、哈希算法示例

以下是一个使用cryptography库进行哈希计算的示例:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding
# 生成一个哈希对象
hash_object = hashes.Hash(hashes.SHA256())
# 更新哈希对象
hash_object.update(b'Hello, World!')
# 获取哈希值
hex_dig = hash_object.hexdigest()
print('Hashed:', hex_dig)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这个示例中,我们使用SHA-256算法创建了一个哈希对象,并使用’Hello, World!'对其进行哈希计算。

七、总结

本文详细介绍了Python中的加密解密技术。我们从加密的基本概念讲起,了解了对称加密、非对称加密和哈希算法等常见加密方法。然后,我们介绍了Python中常用的加密库,如cryptographyPyCrypto,并通过代码示例,展示了如何使用这些库进行加密和解密操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/950729
推荐阅读
相关标签
  

闽ICP备14008679号