Python中如何进行密码学和加密解密操作?

 2024-01-04  阅读 366  评论 5  点赞 420

摘要:介绍 密码学是信息安全领域中的一个重要分支,它主要研究如何保护信息的安全性和机密性。在现代社会,数据安全问题越来越受到重视。因此,密码学的应用越来越广泛。 Python是一种通用的编程语言,它非常适合进行密码学和加密解密操作。Python的强大之处在于它提供了很多现成的

介绍

密码学是信息安全领域中的一个重要分支,它主要研究如何保护信息的安全性和机密性。在现代社会,数据安全问题越来越受到重视。因此,密码学的应用越来越广泛。

Python是一种通用的编程语言,它非常适合进行密码学和加密解密操作。Python的强大之处在于它提供了很多现成的库和工具,可以帮助我们轻松地实现各种加密、解密和签名算法。

常见的加密算法

在密码学中,常见的加密算法有对称加密算法和非对称加密算法。下面分别介绍这两种加密算法。

对称加密算法

对称加密算法是指加密和解密使用相同的密钥。常见的对称加密算法有:

  • DES(Data Encryption Standard)
  • AES(Advanced Encryption Standard)
  • RC4(Rivest Cipher 4)
  • Blowfish

下面展示如何使用Python的cryptography库实现对称加密:


from cryptography.fernet import Fernet

# 生成密钥
key = Fernet.generate_key()

# 创建加密器和解密器
cipher = Fernet(key)
decryptor = Fernet(key)

# 加密
message = b"Hello World!"
encrypted_message = cipher.encrypt(message)

# 解密
decrypted_message = decryptor.decrypt(encrypted_message)

print(message)
print(encrypted_message)
print(decrypted_message)

非对称加密算法

非对称加密算法是指加密和解密使用不同的密钥。常见的非对称加密算法有:

Python中如何进行密码学和加密解密操作?

  • RSA(Rivest-Shamir-Adleman)
  • DSA(Digital Signature Algorithm)
  • ECDSA(Elliptic Curve Digital Signature Algorithm)

下面展示如何使用Python的cryptography库实现非对称加密:


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

# 生成密钥对
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048
)
public_key = private_key.public_key()

# 保存密钥
private_pem = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.PKCS8,
    encryption_algorithm=serialization.NoEncryption()
)
public_pem = public_key.public_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PublicFormat.SubjectPublicKeyInfo
)

# 加密
message = b"Hello World!"
encrypted_message = public_key.encrypt(
    message,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

# 解密
decrypted_message = private_key.decrypt(
    encrypted_message,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print(message)
print(encrypted_message)
print(decrypted_message)

常见的哈希算法

哈希算法是一种将任意长度的消息压缩到某一固定长度的算法。常见的哈希算法有:

  • MD5(Message-Digest Algorithm 5)
  • SHA-1(Secure Hash Algorithm 1)
  • SHA-2(Secure Hash Algorithm 2)
  • SHA-3(Secure Hash Algorithm 3)

下面展示如何使用Python的hashlib库实现哈希算法:


import hashlib

# 计算MD5
message = b"Hello World!"
md5_hash = hashlib.md5(message).hexdigest()

# 计算SHA-256
sha256_hash = hashlib.sha256(message).hexdigest()

print(message)
print(md5_hash)
print(sha256_hash)

常见的数字签名算法

数字签名算法是一种保证信息完整性和真实性的机制。常见的数字签名算法有:

  • RSA(Rivest-Shamir-Adleman)
  • DSA(Digital Signature Algorithm)
  • ECDSA(Elliptic Curve Digital Signature Algorithm)

下面展示如何使用Python的cryptography库实现数字签名算法:


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

# 生成密钥对
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048
)
public_key = private_key.public_key()

# 保存密钥
private_pem = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.PKCS8,
    encryption_algorithm=serialization.NoEncryption()
)
public_pem = public_key.public_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PublicFormat.SubjectPublicKeyInfo
)

# 签名
message = b"Hello World!"
signature = private_key.sign(
    message,
    padding.PSS(
        mgf=padding.MGF1(hashes.SHA256()),
        salt_length=padding.PSS.MAX_LENGTH
    ),
    hashes.SHA256()
)

# 验证签名
try:
    public_key.verify(
        signature,
        message,
        padding.PSS(
            mgf=padding.MGF1(hashes.SHA256()),
            salt_length=padding.PSS.MAX_LENGTH
        ),
        hashes.SHA256()
    )
    print("Signature is valid")
except:
    print("Signature is invalid")

print(message)
print(signature)

总结

密码学是信息安全领域中的一个重要分支,Python是一种非常适合进行密码学和加密解密操作的编程语言。Python提供了很多现成的库和工具,可以帮助我们轻松地实现各种加密、解密和签名算法。

无论是对称加密算法、非对称加密算法、哈希算法还是数字签名算法,Python都提供了相应的库和工具,让我们能够快速地实现各种加密、解密和签名操作。

评论列表:

显示更多评论

发表评论:

管理员

承接各种程序开发,外贸网站代运营,外贸网站建设等项目
  • 内容2460
  • 积分67666
  • 金币86666

Copyright © 2024 LS'Blog-保定PHP程序员老宋个人博客 Inc. 保留所有权利。 Powered by LS'blog 3.0.3

页面耗时0.0280秒, 内存占用1.92 MB, 访问数据库26次

冀ICP备19034377号