Python密码学:网络安全防护实战指南

 

Python密码学:网络安全防护实战指南

大家好呀,我是小新!今天要和小伙伴们聊一个特别酷的话题 —— 用Python进行密码学编程。在这个数据安全日益重要的时代,掌握基本的加密解密技术可是非常重要的呢!让我们一起学习如何保护数据的安全吧!

1. 简单的凯撒密码

首先从最基础的凯撒密码开始。这种加密方法是将字母表向后移动固定位数,虽然简单,但是很好理解加密的基本原理哦!

def caesar_encrypt(text, shift):
    result = ""
    for char in text:
        if char.isalpha():
            # 判断是否为大写字母
            is_upper = char.isupper()
            # 将字母转换为数字(0-25)
            char_code = ord(char.lower()) - ord('a')
            # 移位并确保在0-25之间
            new_code = (char_code + shift) % 26
            # 转换回字母
            new_char = chr(new_code + ord('a'))
            result += new_char.upper() if is_upper else new_char
        else:
            result += char
    return result

message = "Hello World!"
encrypted = caesar_encrypt(message, 3)
print(f"原文: {message}")
print(f"密文: {encrypted}")

小贴士:凯撒密码虽然简单,但在实际应用中安全性较低,很容易被破解哦!

2. 使用标准库实现对称加密

接下来我们来看看Python标准库中的加密模块,用AES算法来实现更安全的加密!

from cryptography.fernet import Fernet

def generate_key():
    return Fernet.generate_key()

def encrypt_message(message, key):
    f = Fernet(key)
    return f.encrypt(message.encode())

def decrypt_message(encrypted_message, key):
    f = Fernet(key)
    return f.decrypt(encrypted_message).decode()

# 生成密钥
key = generate_key()
message = "这是一条机密信息!"

# 加密
encrypted = encrypt_message(message, key)
print(f"加密后: {encrypted}")

# 解密
decrypted = decrypt_message(encrypted, key)
print(f"解密后: {decrypted}")

注意事项:在实际应用中,密钥的安全存储非常重要,千万不要将密钥直接写在代码里或者提交到版本控制系统中!

3. 哈希函数与密码存储

在网站开发中,我们通常不会直接存储用户的密码,而是存储密码的哈希值。来看看如何使用哈希函数:

import hashlib
import os

def hash_password(password):
    # 生成随机盐值
    salt = os.urandom(16)
    # 将密码和盐值组合并计算哈希
    pw_hash = hashlib.pbkdf2_hmac(
        'sha256',
        password.encode(),
        salt,
        100000
    )
    return salt + pw_hash

def verify_password(password, stored_password_hash):
    salt = stored_password_hash[:16]
    stored_pw_hash = stored_password_hash[16:]
    pw_hash = hashlib.pbkdf2_hmac(
        'sha256',
        password.encode(),
        salt,
        100000
    )
    return pw_hash == stored_pw_hash

# 示例使用
password = "mySecretPassword123"
stored_hash = hash_password(password)
print(f"密码验证结果: {verify_password(password, stored_hash)}")

小贴士:永远不要使用MD5或SHA1进行密码哈希,它们已经不再安全啦!要使用专门的密码哈希函数,比如pbkdf2bcryptargon2

练习题

  1. 1. 尝试修改凯撒密码程序,添加解密功能。
  2. 2. 使用AES加密实现一个简单的文件加密程序。
  3. 3. 思考:为什么我们需要在密码哈希中加入"盐值"?

小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问小新哦。我们学习了三种不同的加密方式,从简单的凯撒密码到复杂的现代加密算法。安全意识很重要,希望大家在实际项目中都能正确使用这些加密技术!祝大家学习愉快,Python学习节节高!

 


免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐